@jant/core 0.3.40 → 0.3.43

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 (1191) hide show
  1. package/README.md +21 -34
  2. package/bin/commands/assets/upload.js +247 -0
  3. package/bin/commands/collections.js +268 -0
  4. package/bin/commands/import-site.js +1169 -343
  5. package/bin/commands/media.js +302 -0
  6. package/bin/commands/migrate-text-attachments.js +183 -0
  7. package/bin/commands/migrate.js +263 -2
  8. package/bin/commands/posts.js +262 -0
  9. package/bin/commands/search-reindex.js +175 -0
  10. package/bin/commands/search.js +53 -0
  11. package/bin/commands/settings.js +93 -0
  12. package/bin/commands/site/export.js +34 -33
  13. package/bin/commands/site/{localize-media.js → pull-media.js} +17 -17
  14. package/bin/lib/d1-query.js +15 -3
  15. package/bin/lib/http-api.js +223 -0
  16. package/bin/lib/hugo-markdown.js +102 -0
  17. package/bin/lib/media-upload.js +206 -0
  18. package/bin/lib/migration-runner.js +64 -0
  19. package/bin/lib/runtime-target.js +7 -2
  20. package/bin/lib/site-media-parser.js +71 -16
  21. package/bin/lib/site-pull-media.js +695 -0
  22. package/bin/lib/site-snapshot.js +0 -1
  23. package/dist/app-Ctl0T0zO.js +5 -0
  24. package/dist/{app-CAtsuLLh.js → app-GbfwoeDJ.js} +24357 -23139
  25. package/dist/client/.vite/manifest.json +3485 -0
  26. package/dist/client/_assets/chunks/02611a045a7fe83a12014e3debc9f731-BqEDtwXC.woff2 +0 -0
  27. package/dist/client/_assets/chunks/033466ef683afe931f7f520cfb42d928-BluLHEh9.woff2 +0 -0
  28. package/dist/client/_assets/chunks/04b8bde59cff68eeee74fb1914eb09c7-D5j2CLTt.woff2 +0 -0
  29. package/dist/client/_assets/chunks/057a6a98bda7fe57105ddaa99ec82015-DY_AoijT.woff2 +0 -0
  30. package/dist/client/_assets/chunks/05ac821472e235943ed1435e4bb8ecad-CUm8GiH6.woff2 +0 -0
  31. package/dist/client/_assets/chunks/05da12edb9d52210581dc6ec4541031f-BXAOx2XP.woff2 +0 -0
  32. package/dist/client/_assets/chunks/074c1f8483d5a4d8c45c8c5f3e4cbb32-CDqdMQm8.woff2 +0 -0
  33. package/dist/client/_assets/chunks/0968e4861204b51f62a2f8e9f15dd5e0-D5tLgF_8.woff2 +0 -0
  34. package/dist/client/_assets/chunks/0acd1fe2b2ea1ad1bfee7ae1fa139d27-BKK1m412.woff2 +0 -0
  35. package/dist/client/_assets/chunks/0c2ab6b295e55f356f8020d4e7747522-CkCQjQw3.woff2 +0 -0
  36. package/dist/client/_assets/chunks/0c5f9492af03a4fa42c784de94649de1-CQlJqksa.woff2 +0 -0
  37. package/dist/client/_assets/chunks/0d5dec931dc885f07fe5cd5af8bed675-C74x-U_U.woff2 +0 -0
  38. package/dist/client/_assets/chunks/0d9a936885a4c39077438effd3779cbd-Bw0fYF4S.woff2 +0 -0
  39. package/dist/client/_assets/chunks/0e645da524f7cfc0e8c3c03fb2b08428-BVeI_5Th.woff2 +0 -0
  40. package/dist/client/_assets/chunks/0f5e1a18987dbc84ca05188c129e1936-B6_lZ6fE.woff2 +0 -0
  41. package/dist/client/_assets/chunks/1076f0f6f66d28d7a2f16427faad4413-ubiXnD1P.woff2 +0 -0
  42. package/dist/client/_assets/chunks/112743a4ab5fdd1498dfdf2b11336380-B5FzQxTK.woff2 +0 -0
  43. package/dist/client/_assets/chunks/1211f03d3ff5759a702631445793f60e-DDcSiyCt.woff2 +0 -0
  44. package/dist/client/_assets/chunks/12ef1ba76bd20b004b865266a1aa70b3-BwmaD87S.woff2 +0 -0
  45. package/dist/client/_assets/chunks/135e83b403475c5dc9e49b43501a5b84-C5mE_KZS.woff2 +0 -0
  46. package/dist/client/_assets/chunks/1380210a722ac9aeef54005ad7b015c9-CjA-MP82.woff2 +0 -0
  47. package/dist/client/_assets/chunks/13b2c53b30e6a3e4de7132dbc18dbdfc-B9WOB7kv.woff2 +0 -0
  48. package/dist/client/_assets/chunks/147b24c2f08d03bbed30887d4cb3311c-IeeFCJ13.woff2 +0 -0
  49. package/dist/client/_assets/chunks/152395634a207579552f8cb54db88599-C2y2JyNZ.woff2 +0 -0
  50. package/dist/client/_assets/chunks/15d95680dc31cc6ce20e0a5464106dc4-CpD8dqRm.woff2 +0 -0
  51. package/dist/client/_assets/chunks/16663e567f81f4725a1522f37e18f71f-BNoxS9pQ.woff2 +0 -0
  52. package/dist/client/_assets/chunks/1733f27476507ca68b68a803bc533cc2-DXL-14Ug.woff2 +0 -0
  53. package/dist/client/_assets/chunks/17c7f5d0a45e92ede0e5dec3a2c77efa-CNj3jQMl.woff2 +0 -0
  54. package/dist/client/_assets/chunks/1824321da801e6257b902f3d1d09054c-D4dgdyWB.woff2 +0 -0
  55. package/dist/client/_assets/chunks/188c2db794f3dd7a45889ddbc81da9bb-C9NbUBBO.woff2 +0 -0
  56. package/dist/client/_assets/chunks/1a08931435f885e707edb85978ea3bb6-BOiP2u7G.woff2 +0 -0
  57. package/dist/client/_assets/chunks/1a3a92c7c060a71a6c35819b9ebcdbb9-DFfonQfz.woff2 +0 -0
  58. package/dist/client/_assets/chunks/1be602ad456b0d75902d352116cb35fd-Bc-XQtQh.woff2 +0 -0
  59. package/dist/client/_assets/chunks/1cf737900dd49c2e88f1b3221a82a602-CfTmnns3.woff2 +0 -0
  60. package/dist/client/_assets/chunks/1fba7ec0e412e911bf31841de5a8a4e4-18ELMbFF.woff2 +0 -0
  61. package/dist/client/_assets/chunks/233d3a685ee18276b319363474599d47-BaFdJ0-G.woff2 +0 -0
  62. package/dist/client/_assets/chunks/2612c60f9dc5459ac42763591240a1d6-CTD69cq1.woff2 +0 -0
  63. package/dist/client/_assets/chunks/284b53bbefb06924cf236d24c8ed5641-CPDiuOv6.woff2 +0 -0
  64. package/dist/client/_assets/chunks/28a97af9ab9d38983d20f39ff09840e1-mFqcT3Jw.woff2 +0 -0
  65. package/dist/client/_assets/chunks/2a56eaf19d1d38a6b57e2a388f733676-CU52qBlE.woff2 +0 -0
  66. package/dist/client/_assets/chunks/2ab8cf1f23a5ac7939a7876054e711a7-B4T3dK7A.woff2 +0 -0
  67. package/dist/client/_assets/chunks/2abfbab82b6a7c04426afc054d2464da-D5PIIHde.woff2 +0 -0
  68. package/dist/client/_assets/chunks/2bfaadaf3479c72286248e6de0be0ec9-DEpU6O74.woff2 +0 -0
  69. package/dist/client/_assets/chunks/2c8c55e4cec85ce77e95cac9d330f5cf-BCTA96EZ.woff2 +0 -0
  70. package/dist/client/_assets/chunks/2e6f4bb71ef6b38765d51acc5a79f638-Mbs6PECD.woff2 +0 -0
  71. package/dist/client/_assets/chunks/2ed9981d2e8983365bd051159b976b6d-D8gg6NWM.woff2 +0 -0
  72. package/dist/client/_assets/chunks/2f4c633e923ba30c6ba376367379fc91-CIJCFztv.woff2 +0 -0
  73. package/dist/client/_assets/chunks/31194d303a67561926a544ed0e072aee-w3-eGYAi.woff2 +0 -0
  74. package/dist/client/_assets/chunks/31a197213ae61d7043c81013f52d10d6-DXZrrkJP.woff2 +0 -0
  75. package/dist/client/_assets/chunks/349965eee0a9b6c984a319ab96a4ece9-DByAVmXw.woff2 +0 -0
  76. package/dist/client/_assets/chunks/34e6750e00c3a911ef87dc66b336594d-DNbWesOu.woff2 +0 -0
  77. package/dist/client/_assets/chunks/3623d96698132c61e861f984ce11cc23-jqV9ErzX.woff2 +0 -0
  78. package/dist/client/_assets/chunks/36cda3eae13370b934bba4429fab9078-BPDcUlw9.woff2 +0 -0
  79. package/dist/client/_assets/chunks/36f3df4730cfca4fc77fe52b52e6a126-BwK10NC0.woff2 +0 -0
  80. package/dist/client/_assets/chunks/37887deb7a9c466cf2af6ee7ff372ea6-BrAerJB1.woff2 +0 -0
  81. package/dist/client/_assets/chunks/37dbd564820cce2f7b3331e442da0df3-Cql2kzIi.woff2 +0 -0
  82. package/dist/client/_assets/chunks/37dc8505b20b37a2477a9121b16d44a7-CoXw6XWV.woff2 +0 -0
  83. package/dist/client/_assets/chunks/39211b02f24c69cbd1b54f6d41b01933-4Xu7vvnq.woff2 +0 -0
  84. package/dist/client/_assets/chunks/3aa13f1843d7c8fa16109b6395a9a29d-BQFZUc3B.woff2 +0 -0
  85. package/dist/client/_assets/chunks/3aba89c4d4281553078de4622b498cbb-8QS1zDYk.woff2 +0 -0
  86. package/dist/client/_assets/chunks/3ac0a07878cacdc98bb889f40f5970d3-C-BaM6-y.woff2 +0 -0
  87. package/dist/client/_assets/chunks/3d88558097559d775231194d43745ba7-CR2aqGC7.woff2 +0 -0
  88. package/dist/client/_assets/chunks/3dc3e8c35524cad2d1236f3393104ccf-9sqBsF7B.woff2 +0 -0
  89. package/dist/client/_assets/chunks/3e24063b19abd2b051af986a6870046d-TlweM3SW.woff2 +0 -0
  90. package/dist/client/_assets/chunks/3e2c06bdd9dcab29aeaeb0cfb7fa608a-BaqU-dIt.woff2 +0 -0
  91. package/dist/client/_assets/chunks/424123f9371ba357087363263eeafcda-C8SVfEJi.woff2 +0 -0
  92. package/dist/client/_assets/chunks/43b3bbf43055c3e65db9cdf2c5b18c1c-CbHx6-Ki.woff2 +0 -0
  93. package/dist/client/_assets/chunks/4410f876d27c9821839474b6b1059fd7-ClYz91aY.woff2 +0 -0
  94. package/dist/client/_assets/chunks/44704471b60c18b3ecec5300a88f1102-DDmmy6-m.woff2 +0 -0
  95. package/dist/client/_assets/chunks/45140742dfa8686b58db2899ce89f89a-D5IMMzDM.woff2 +0 -0
  96. package/dist/client/_assets/chunks/46604090efbb99c2db1800928af0a239-JX2fpYX_.woff2 +0 -0
  97. package/dist/client/_assets/chunks/46998df85d31e629c0142f0556f5e7c5-BIkNG9Wh.woff2 +0 -0
  98. package/dist/client/_assets/chunks/469d2754e315e77270c12fa0ab28026c-D-y-vsfA.woff2 +0 -0
  99. package/dist/client/_assets/chunks/479329a39a3eb6c0047e6b0981919855-vZKCRx42.woff2 +0 -0
  100. package/dist/client/_assets/chunks/491bbba374093fff045f55803a22bfef-DSQXiDCd.woff2 +0 -0
  101. package/dist/client/_assets/chunks/49902f1c41b281f8eb3771abdd4dccb8-DxVxNg2W.woff2 +0 -0
  102. package/dist/client/_assets/chunks/4c0760284569b87d8f2290c324953973-Bqd-TKHH.woff2 +0 -0
  103. package/dist/client/_assets/chunks/4cba92c942694bdc479bc54101bb1aa4-BrfsrgrC.woff2 +0 -0
  104. package/dist/client/_assets/chunks/4d38e56738156625329d93bd5c8cc74a-DONkMP0y.woff2 +0 -0
  105. package/dist/client/_assets/chunks/4db4f31a16965baa42cb7dad667a8f04-Dt1Cy4gr.woff2 +0 -0
  106. package/dist/client/_assets/chunks/4e7d263c30bb48604069a3b4404d4eeb-DNPCkvKD.woff2 +0 -0
  107. package/dist/client/_assets/chunks/5279c7e465d9871edf51fd02e691eee7-CKhyhvVf.woff2 +0 -0
  108. package/dist/client/_assets/chunks/527ff336279465617aafbafe1a830632-CC3lv4pm.woff2 +0 -0
  109. package/dist/client/_assets/chunks/54bfdb6f21f9d6191e5100580239e14f-PGlqYvgl.woff2 +0 -0
  110. package/dist/client/_assets/chunks/56b40518ea0608e62826bd44ee27f5f9-BD9F9Oss.woff2 +0 -0
  111. package/dist/client/_assets/chunks/56be5e32fd01668fe5ba814d94905839-CSyFA-9l.woff2 +0 -0
  112. package/dist/client/_assets/chunks/572b9e28f1e6d89b765a16d809db84a1-BIYMjzEa.woff2 +0 -0
  113. package/dist/client/_assets/chunks/57e9a86651366c1ba299e47aa7e358c2-BHuZXB4W.woff2 +0 -0
  114. package/dist/client/_assets/chunks/57f89adeae55aa7fe2add3fc1801ce03-Cy3PNrfx.woff2 +0 -0
  115. package/dist/client/_assets/chunks/5921cef36750ff6092d94b83a802823b-hF-uymTh.woff2 +0 -0
  116. package/dist/client/_assets/chunks/59e95d8b5332dcdae894a19946ab767d-ClRfsjWZ.woff2 +0 -0
  117. package/dist/client/_assets/chunks/5acc7f736217259db79a42bf44241c48-FYQUuFOM.woff2 +0 -0
  118. package/dist/client/_assets/chunks/5c05f8b75c9d7f25b3c04ca711cf43b3-D-YWPkSq.woff2 +0 -0
  119. package/dist/client/_assets/chunks/5df9ce98c75f8c50fb4fff7f01a23925-DgoCENyW.woff2 +0 -0
  120. package/dist/client/_assets/chunks/5e0124c7265f1b4cf0fc797b94efbebc-BTBNHsSB.woff2 +0 -0
  121. package/dist/client/_assets/chunks/5ec349ff62b9ee5fe0c6dae867704dc4-B4dezhrz.woff2 +0 -0
  122. package/dist/client/_assets/chunks/60020a830d809c26970cf8e48ba1eeda-B6FDTSik.woff2 +0 -0
  123. package/dist/client/_assets/chunks/601f812e8b1eafecd5ba585a6a6d7962-gIVBlUU9.woff2 +0 -0
  124. package/dist/client/_assets/chunks/6025ddaf99d86cc8bfd781006b19fbd6-CS-ze337.woff2 +0 -0
  125. package/dist/client/_assets/chunks/60bcfa3ea7446eb42394aab02d28be40-C-PQfCu3.woff2 +0 -0
  126. package/dist/client/_assets/chunks/60f6e28b3f0400b0e8fe32c3c7116102-Dag9L2qU.woff2 +0 -0
  127. package/dist/client/_assets/chunks/615a7e0d63f257109d599b2a1977de68-D6Y93yoG.woff2 +0 -0
  128. package/dist/client/_assets/chunks/615b38e0b5bb3ea68426f44f47706e6f-B5yzIIer.woff2 +0 -0
  129. package/dist/client/_assets/chunks/61a2c80d0c924d5a6187c02e8d1d1642-BY3MmHbZ.woff2 +0 -0
  130. package/dist/client/_assets/chunks/62fc94f8d4c5a750b7f25e7387539910-3ql2_WDK.woff2 +0 -0
  131. package/dist/client/_assets/chunks/639c7c6b0b0c27c738702741cfa4b8c0-BCD3OGri.woff2 +0 -0
  132. package/dist/client/_assets/chunks/63fafcb069520613d0ea35ad3e6b1e42-DP0Rrj4o.woff2 +0 -0
  133. package/dist/client/_assets/chunks/64a404d675f1d726f0891b7a80794595-DU3L0I9s.woff2 +0 -0
  134. package/dist/client/_assets/chunks/65a60d87c64228d258a123cbe85f5f31-B4kbf-79.woff2 +0 -0
  135. package/dist/client/_assets/chunks/65e9c4585d71bf48a5c62f367010da16-CvzgzReN.woff2 +0 -0
  136. package/dist/client/_assets/chunks/68a3a4bf337f8a0722be76676e20b850-Dnaw8EPD.woff2 +0 -0
  137. package/dist/client/_assets/chunks/6968e889e18891d912809fe484c2e745-Bj1m5e0s.woff2 +0 -0
  138. package/dist/client/_assets/chunks/6abdd163d2c4b85698db8aa1ce149361-B5FVGJuo.woff2 +0 -0
  139. package/dist/client/_assets/chunks/6b75213eb0be40ce84241eb2bb438a2e-CqHmF-NR.woff2 +0 -0
  140. package/dist/client/_assets/chunks/70714891ad3fbfc3d5f10a8669dacc5a-BWk5nLFN.woff2 +0 -0
  141. package/dist/client/_assets/chunks/7158022889c6c177062ac85036e7af10-B3D4K22n.woff2 +0 -0
  142. package/dist/client/_assets/chunks/73b794d885b88f7befb7ea8ab1780a15-D0ZehnEI.woff2 +0 -0
  143. package/dist/client/_assets/chunks/743f290baf027d4626a86e22f3d44600-DDTDQdRC.woff2 +0 -0
  144. package/dist/client/_assets/chunks/7520ca6ca8c60eb1e62d50e71c8d30f1-CVRaGu2G.woff2 +0 -0
  145. package/dist/client/_assets/chunks/757019c01c5e2c2b0f54293cea3b5636-BTovUnoH.woff2 +0 -0
  146. package/dist/client/_assets/chunks/759a647b77791b1e98f99bc0ab5317a7-CrK6FIFz.woff2 +0 -0
  147. package/dist/client/_assets/chunks/761d84afca8d7f34eebefe538adba827-DRbiVuwX.woff2 +0 -0
  148. package/dist/client/_assets/chunks/76e07530323418ec723c5d7634c9bcca-DGtVJTTH.woff2 +0 -0
  149. package/dist/client/_assets/chunks/76e51630143b95b6322ef93ad330da7a-D-kV82C_.woff2 +0 -0
  150. package/dist/client/_assets/chunks/76f117a3baacda304a71965a17266a13-DFfvsFUm.woff2 +0 -0
  151. package/dist/client/_assets/chunks/773819b7b9b8fd404a929867c0fd677e-Bu1xCMZb.woff2 +0 -0
  152. package/dist/client/_assets/chunks/77747f17625a259fb405b7bbdd84ac4b-o_vNfh-6.woff2 +0 -0
  153. package/dist/client/_assets/chunks/7817dd16805145d8538ad57590f69f5a-DguSUP3O.woff2 +0 -0
  154. package/dist/client/_assets/chunks/788498548ddfb710d6ef3c7bff79fa97-3ffoQfRd.woff2 +0 -0
  155. package/dist/client/_assets/chunks/78ea6c40923ce95367e3517dd1e5a849-DvLDRhX9.woff2 +0 -0
  156. package/dist/client/_assets/chunks/79aa7c8c842c4a27cf57c0a3a1ffca5a-sDoCeoKI.woff2 +0 -0
  157. package/dist/client/_assets/chunks/7b59f0ec7792b18458dc5a361e37884c-DWvxkKmT.woff2 +0 -0
  158. package/dist/client/_assets/chunks/7c3945788a689a69356c1a622d69d48b-1JjIpss2.woff2 +0 -0
  159. package/dist/client/_assets/chunks/7cc72fd2c9105560422b6a67c6162945-Co3AF5_G.woff2 +0 -0
  160. package/dist/client/_assets/chunks/7d0ea0690e432462f4d05a23d720ec19-Dx7DK4C3.woff2 +0 -0
  161. package/dist/client/_assets/chunks/7dffa5c1bec57e0903fd62357401ff1a-DuQHmiiN.woff2 +0 -0
  162. package/dist/client/_assets/chunks/7e38ca789a9e76ac91d9256374e154f0-BtETgGRe.woff2 +0 -0
  163. package/dist/client/_assets/chunks/7f9a6c9286b68de9c72b0024f7beeb40-JpXdo4FC.woff2 +0 -0
  164. package/dist/client/_assets/chunks/815a0b797465190f60d8b1a04656c42e-Spzo94nU.woff2 +0 -0
  165. package/dist/client/_assets/chunks/823d1bb11097331238d103c7f72138dc-CGN6m2VF.woff2 +0 -0
  166. package/dist/client/_assets/chunks/82f6ccc063960eed1cdfd1d61ada8862-CsmAqx2a.woff2 +0 -0
  167. package/dist/client/_assets/chunks/835b6505bb9eea9678925a1fa885353d-C6mSBwUc.woff2 +0 -0
  168. package/dist/client/_assets/chunks/845b4b67564d62cf5cad242f7ac08ea5-DnvzrloJ.woff2 +0 -0
  169. package/dist/client/_assets/chunks/84c8e7bc0931008ed91f44ed12dfea94-C2Hvhh-b.woff2 +0 -0
  170. package/dist/client/_assets/chunks/8726558cf297cbda831cc19514897205-gSFV1vW0.woff2 +0 -0
  171. package/dist/client/_assets/chunks/8855472f3c02f6c7ebb3216617ebe4af-C1JsWVqq.woff2 +0 -0
  172. package/dist/client/_assets/chunks/887a11290ba78b1e66c6d2f67043005e-L_A1f5Fz.woff2 +0 -0
  173. package/dist/client/_assets/chunks/888ba53510213d5d1f6a7deb60e569b6-OP8E-ELN.woff2 +0 -0
  174. package/dist/client/_assets/chunks/88db1d042074fb6e66821ffc10941930-kZ6K3e62.woff2 +0 -0
  175. package/dist/client/_assets/chunks/892aa49b2529c89bb4076d4aa51fe30f-Bw0_Km2A.woff2 +0 -0
  176. package/dist/client/_assets/chunks/8b5c9ef81159f31d2ab35f45ca4373e0-Djw95sKC.woff2 +0 -0
  177. package/dist/client/_assets/chunks/8b91c7c2ed390f1278b9befa3aa87233-B2C3iFbQ.woff2 +0 -0
  178. package/dist/client/_assets/chunks/8dc18c0cebe6aa4bf4c45dbb831048ab-bUlANLit.woff2 +0 -0
  179. package/dist/client/_assets/chunks/8e231d707f0c4f8e3cde90a6b52a79aa-CvwbWlul.woff2 +0 -0
  180. package/dist/client/_assets/chunks/8fb45117a62d92dce44a80f0b729ead5-Djr4-o5-.woff2 +0 -0
  181. package/dist/client/_assets/chunks/9064c12fd72c7aba235d8c3881755b91-BnguxT-p.woff2 +0 -0
  182. package/dist/client/_assets/chunks/90b7848e9b1623b77bdcf155e90b839c-CFvPRnoM.woff2 +0 -0
  183. package/dist/client/_assets/chunks/911b9e53e9814de2998c60bf3115f560-DmPmj635.woff2 +0 -0
  184. package/dist/client/_assets/chunks/919a879bd2d580d8491a31a449390689-BY2w-8_Y.woff2 +0 -0
  185. package/dist/client/_assets/chunks/91da6cb174bebfb96976e2f1316be2fe-DztAJb6W.woff2 +0 -0
  186. package/dist/client/_assets/chunks/92fdc376bce277874e75db666f175b44-DJUnHEIN.woff2 +0 -0
  187. package/dist/client/_assets/chunks/930a23430f0eb64480d7fe5f82834e21-2VrDPT7E.woff2 +0 -0
  188. package/dist/client/_assets/chunks/934dfdbed2bb2c4b6129199d699a34fa-CtpHsjRD.woff2 +0 -0
  189. package/dist/client/_assets/chunks/93bed0e5f2dd5a21cf73304fcfbc149d-DJiaETX7.woff2 +0 -0
  190. package/dist/client/_assets/chunks/93f3ea6918533d96d9c252378b9a4af0-D-FJaGi-.woff2 +0 -0
  191. package/dist/client/_assets/chunks/95a0951d2a2722ff773a1a45e8c474d6-DuZg-BpP.woff2 +0 -0
  192. package/dist/client/_assets/chunks/95ff41191c76ef893ac70a1043e95e44-C08QDbJO.woff2 +0 -0
  193. package/dist/client/_assets/chunks/96c75862c8cec51a7c05ff025fea86cd-DBnRwCuW.woff2 +0 -0
  194. package/dist/client/_assets/chunks/97d7a17234f2b5030ae9697ae00aded2-CkUSaB-p.woff2 +0 -0
  195. package/dist/client/_assets/chunks/982cd1765ca6bbb3e6547e47834d5148-DkIybx1r.woff2 +0 -0
  196. package/dist/client/_assets/chunks/985d4d41afa0934a4eb2de35473fb9a2-CF7rgJMw.woff2 +0 -0
  197. package/dist/client/_assets/chunks/995c4fda62d25c3b79dd5987737df6ae-CY5ri8HW.woff2 +0 -0
  198. package/dist/client/_assets/chunks/9b0c3caac458c7bc9c9133e40405ddea-DhPrYOcz.woff2 +0 -0
  199. package/dist/client/_assets/chunks/9b21e8244f5930c48ad5073f83777b6c-CuE9-r-r.woff2 +0 -0
  200. package/dist/client/_assets/chunks/9bb38fd05201de666b88b82d56a386f7-nMl6lB8X.woff2 +0 -0
  201. package/dist/client/_assets/chunks/9d0afa53dc2f92ba42024f55f11f6779-Bozpx8bL.woff2 +0 -0
  202. package/dist/client/_assets/chunks/9e13a47242926f1cd7d68c08d9ef8889-DwKQjc8M.woff2 +0 -0
  203. package/dist/client/_assets/chunks/9eff2ab2a9d2ced47ab761bf6fdb11ec-D86-Zm1H.woff2 +0 -0
  204. package/dist/client/_assets/chunks/9f1963fe8d4d6878d717d872a8f3fdb5-DxjITUFq.woff2 +0 -0
  205. package/dist/client/_assets/chunks/9f3bdab4025dc7c5ba1a5871e62e8918-BqxDEFLJ.woff2 +0 -0
  206. package/dist/client/_assets/chunks/9fce02d1a09f464c36c9fcfb14a354c5-F2tMAB_j.woff2 +0 -0
  207. package/dist/client/_assets/chunks/a00e94d4f04df6aa659db9c4954c7efe-CRBKCj_3.woff2 +0 -0
  208. package/dist/client/_assets/chunks/a0a6755c7e3f9e4cf03387027dd9f16c-BAyRqF2w.woff2 +0 -0
  209. package/dist/client/_assets/chunks/a0d00fe4816c95a8c7dffd445ef00b03-CxcTiRLJ.woff2 +0 -0
  210. package/dist/client/_assets/chunks/a0f199077fa1a33bc2a1e01c64de7fe6-IdgVJmZD.woff2 +0 -0
  211. package/dist/client/_assets/chunks/a2b0597837e382aca19919c4b74e58c8-7iVOBjzI.woff2 +0 -0
  212. package/dist/client/_assets/chunks/a373e85c96aa0dc303092429fb837e51-Dvmw8mbX.woff2 +0 -0
  213. package/dist/client/_assets/chunks/a379ada89abd750c587ded29f77e731c-CgPBsEsv.woff2 +0 -0
  214. package/dist/client/_assets/chunks/a4475c442c6b259354c9eda62e64e7df-TZ0c8vK-.woff2 +0 -0
  215. package/dist/client/_assets/chunks/a48be56ce5d3a99dc8f8331398004412-BR_ixH1W.woff2 +0 -0
  216. package/dist/client/_assets/chunks/a4a39b5f048671aa37c2b2a9581ab08a-EDfDYsUd.woff2 +0 -0
  217. package/dist/client/_assets/chunks/a534449d67561ac9b06489f64e57ad98-C355TCrD.woff2 +0 -0
  218. package/dist/client/_assets/chunks/a6e044424780a57610833cc856c15bf5-x1b8FE4H.woff2 +0 -0
  219. package/dist/client/_assets/chunks/a7c35e42a659347e490c3cb7983b2e7f-BWpA0-oz.woff2 +0 -0
  220. package/dist/client/_assets/chunks/a7c58070d68dc1724e9d4e781afb78db-ql27pT-6.woff2 +0 -0
  221. package/dist/client/_assets/chunks/a806759e72987951d6d08b7cbdf36a1b-TvLDwB_u.woff2 +0 -0
  222. package/dist/client/_assets/chunks/a88481ec8bc7be11cb66e46781a79bb9-Ck-r_sGx.woff2 +0 -0
  223. package/dist/client/_assets/chunks/a919a8c6fec6d7e8bb21177965f2e9d7-CC5uWzwd.woff2 +0 -0
  224. package/dist/client/_assets/chunks/a9a016d4a93409f65278327e8a8bb38d-dylrNwF8.woff2 +0 -0
  225. package/dist/client/_assets/chunks/aa662092cf249707123ca4d575e2764b-CSxNsTUL.woff2 +0 -0
  226. package/dist/client/_assets/chunks/aae1eda193285ab817a2d1b408440326-CjyjBoRm.woff2 +0 -0
  227. package/dist/client/_assets/chunks/ab92d41062a7644faa45f50bf384454a-Cq0X8a9H.woff2 +0 -0
  228. package/dist/client/_assets/chunks/accc43762ad05edfbff66ba1380d192a-B5jIykaZ.woff2 +0 -0
  229. package/dist/client/_assets/chunks/ad47bcd6d4663026d648c132d969318d-BYdIbDge.woff2 +0 -0
  230. package/dist/client/_assets/chunks/ad67113f88b59582991cb0c5d33ea19f-DOH1vcIZ.woff2 +0 -0
  231. package/dist/client/_assets/chunks/adb6e613fb99c6dd660b727101f554a8-DJDw_ZZK.woff2 +0 -0
  232. package/dist/client/_assets/chunks/adc4a98a89870ef984ee8f4b57c8a3a5-D30vw26R.woff2 +0 -0
  233. package/dist/client/_assets/chunks/af57a2e8c72f9ba0efb1af771d32c124-D5Zwq9pS.woff2 +0 -0
  234. package/dist/client/_assets/chunks/b0ae5f374e43dac992a4a5d334cebc0b-Ccoi4dPt.woff2 +0 -0
  235. package/dist/client/_assets/chunks/b0cb664cb2e1371efda8943c0b7dcd1c-YzGFnelF.woff2 +0 -0
  236. package/dist/client/_assets/chunks/b0d1cdced482352cf0d3ae58638aacb9-IunWfc6R.woff2 +0 -0
  237. package/dist/client/_assets/chunks/b12379ab782468d725519cd07a7d15bc-IjbydKs2.woff2 +0 -0
  238. package/dist/client/_assets/chunks/b320f5d185b2cff933ac549c184031c5-IYnPrIz4.woff2 +0 -0
  239. package/dist/client/_assets/chunks/b326a8a9c33b554db570da94f60bc380-B6dzaCQg.woff2 +0 -0
  240. package/dist/client/_assets/chunks/b55486f8a459c838fe329d4e79a8c211-DW8q7oGV.woff2 +0 -0
  241. package/dist/client/_assets/chunks/b6117ff2993b11bb1fdc7ea3588a010c-JoMYL5W_.woff2 +0 -0
  242. package/dist/client/_assets/chunks/b61982951bd51b724143c30dfaaa9fe9-D3KhBKl6.woff2 +0 -0
  243. package/dist/client/_assets/chunks/b91234c10fd8b8c8abc88e03afe66a1f-BABNh2la.woff2 +0 -0
  244. package/dist/client/_assets/chunks/b9317198f118a1dfd8ddf2b82ec028f3-CiMecxeH.woff2 +0 -0
  245. package/dist/client/_assets/chunks/ba825ae79b1a6f7e0cce5215fcb5c96f-B6EWU_D5.woff2 +0 -0
  246. package/dist/client/_assets/chunks/ba9c59d7dfa4494db1bb764ada81467d-D0yPcC1m.woff2 +0 -0
  247. package/dist/client/_assets/chunks/bab547459d514f46206e340c4bb2dc88-YnBqlGhw.woff2 +0 -0
  248. package/dist/client/_assets/chunks/bb0b15492b8cdbbec57c0bcfa0aa9241-BjIFbEsN.woff2 +0 -0
  249. package/dist/client/_assets/chunks/bc6183ac08f0fac78c46f80c10cf7c92-B81nbRb3.woff2 +0 -0
  250. package/dist/client/_assets/chunks/bc8ccea5abf6598cf3cfa97eb59804bb-B_7IbluG.woff2 +0 -0
  251. package/dist/client/_assets/chunks/bc95a792cbca6639214c9b0da13392ff-CHQe0E-D.woff2 +0 -0
  252. package/dist/client/_assets/chunks/bcc39eda837bb7a7a3d37c8c60fffb81-CGd1Zk6S.woff2 +0 -0
  253. package/dist/client/_assets/chunks/bcfa62f35731856246c146d3a6932bf3-DMDq6w4v.woff2 +0 -0
  254. package/dist/client/_assets/chunks/bd73264d7f98776708d5d6f3c9b78fcc-d9QWWMym.woff2 +0 -0
  255. package/dist/client/_assets/chunks/bed610b217d500f5975cfc9fe6157570-B5t7s1bw.woff2 +0 -0
  256. package/dist/client/_assets/chunks/bedc74b423b7293b6ad0bdecc61c42cc-4Nnh7peP.woff2 +0 -0
  257. package/dist/client/_assets/chunks/bf8901f8f11d4f433ea17dabc9370ea6-B8dkfvGn.woff2 +0 -0
  258. package/dist/client/_assets/chunks/bfb00d4a4c48661bd0be99f300a0faae-OxsWZ7l-.woff2 +0 -0
  259. package/dist/client/_assets/chunks/c0098958e20db68cab90097b5e62516f-VpjQo3vV.woff2 +0 -0
  260. package/dist/client/_assets/chunks/c063897793f593eb26d6ff7b7baaba18-BWeJJ1sH.woff2 +0 -0
  261. package/dist/client/_assets/chunks/c1b0df29ae41d764904df84e9ac83d1e-D1N934vs.woff2 +0 -0
  262. package/dist/client/_assets/chunks/c4143bb9f2fe77b6ccf20088a8904650-nHfYM24e.woff2 +0 -0
  263. package/dist/client/_assets/chunks/c42c67070cfe99cf823df92d81c7fa6e-B_a405Ez.woff2 +0 -0
  264. package/dist/client/_assets/chunks/c4bfaa5e50798246e3770718b7a7c84a-B-r6Y_o0.woff2 +0 -0
  265. package/dist/client/_assets/chunks/c4d749e45ecd5a5aed5a0bb3ebfd355d-CkqE1fRi.woff2 +0 -0
  266. package/dist/client/_assets/chunks/c6c2971ad1f3221f6cf84028aa0f477e-D7BZGIcY.woff2 +0 -0
  267. package/dist/client/_assets/chunks/c7ff3f6bbdcd5f604b7343602ab904df-Bq7UjVrZ.woff2 +0 -0
  268. package/dist/client/_assets/chunks/c84598999133455503042e06f4ab79cb-DIXndJX3.woff2 +0 -0
  269. package/dist/client/_assets/chunks/c945c62368357d05a53206620460fb30-82gFEf6n.woff2 +0 -0
  270. package/dist/client/_assets/chunks/c96d83978add28b356c22c4c84916733-BL4VaPIE.woff2 +0 -0
  271. package/dist/client/_assets/chunks/c97f41eef722121d86f55d553c056a39-CjejgQO2.woff2 +0 -0
  272. package/dist/client/_assets/chunks/ca62704509932d3232d62918de97af3f-CKWF-3mX.woff2 +0 -0
  273. package/dist/client/_assets/chunks/ca9a533988d7019597a60d4e17127e0c-ClZ6ygZM.woff2 +0 -0
  274. package/dist/client/_assets/chunks/cb7ccd6494256f7a2977b7c2b0225592-Cxp8XObm.woff2 +0 -0
  275. package/dist/client/_assets/chunks/ce022e18a1377ac509443c3c3790b431-DpH0t6Tn.woff2 +0 -0
  276. package/dist/client/_assets/chunks/ce41d70ce6a069a498525c9e15c45cf2-DGtgv-_b.woff2 +0 -0
  277. package/dist/client/_assets/chunks/cf2b28f90f47276f7e2688a65e88a101-LVbNkXHj.woff2 +0 -0
  278. package/dist/client/_assets/chunks/cf9cffe56636322f62b40d61130fbc5e-DNCBMqAo.woff2 +0 -0
  279. package/dist/client/_assets/chunks/d1f064825fa5784b5c930652bd831cce-BU6qwjp8.woff2 +0 -0
  280. package/dist/client/_assets/chunks/d20d8944bc0b85f5b2aae4b24f343516-oY9l-NmC.woff2 +0 -0
  281. package/dist/client/_assets/chunks/d2faabcedd19f016e7b21bce073c0ec8-Dv6eFCf5.woff2 +0 -0
  282. package/dist/client/_assets/chunks/d320171e57480510f87dbbc7d5264b0a-CcCfjaFX.woff2 +0 -0
  283. package/dist/client/_assets/chunks/d36644d6502527e1fff205d0c7eca434-kVBj8zy_.woff2 +0 -0
  284. package/dist/client/_assets/chunks/d3a72a99d365dddfbca8d017a8011368-Bgdmhl3M.woff2 +0 -0
  285. package/dist/client/_assets/chunks/d40ab99c7a38026f411c8f112f742b48-D7Nm7fg6.woff2 +0 -0
  286. package/dist/client/_assets/chunks/d42aafa0f246ad3b4c16fe96d3a3a432-CRxTqZXU.woff2 +0 -0
  287. package/dist/client/_assets/chunks/d4aaf23c13ae808a4bed617afd13aa07-d_T1SKe9.woff2 +0 -0
  288. package/dist/client/_assets/chunks/d509ee5c8241bc7c3de2039d75564fa5-BpNFD9JE.woff2 +0 -0
  289. package/dist/client/_assets/chunks/d675d717cd329bfd4c0524f76ae1579c-Bd5_ctoQ.woff2 +0 -0
  290. package/dist/client/_assets/chunks/d689b1861d7e4377dd72ad3013482612-jPsVOU3F.woff2 +0 -0
  291. package/dist/client/_assets/chunks/d6bb686bddfbe8f38a36a68e609a8667-C_QduS-X.woff2 +0 -0
  292. package/dist/client/_assets/chunks/d9020ff69a83b2a6ee1f42ae480f7db0-DLBUPMCe.woff2 +0 -0
  293. package/dist/client/_assets/chunks/d9047070d72a816b3dba9d40c2d85e69-LTQ42vEp.woff2 +0 -0
  294. package/dist/client/_assets/chunks/da04549f3f4ed28076b01b8cd710d313-CDXOeduw.woff2 +0 -0
  295. package/dist/client/_assets/chunks/da7af303f8c645f9a9dbae0e6e32dd35-DCkS2jqi.woff2 +0 -0
  296. package/dist/client/_assets/chunks/da90a9012ab2d98f759e3fa0820ef502-D0D9d1zg.woff2 +0 -0
  297. package/dist/client/_assets/chunks/dc6e234ded795e91f76d6647f628fbf0-IkooXcRh.woff2 +0 -0
  298. package/dist/client/_assets/chunks/dc8f6256445e68199540be9ade33529f-umb5tWbZ.woff2 +0 -0
  299. package/dist/client/_assets/chunks/dd0cfdfdac0866e66d587e2b5a9e9961-bl4ozE0c.woff2 +0 -0
  300. package/dist/client/_assets/chunks/de304c8a02e45ded4f8dcc479d167198-ClRu89-4.woff2 +0 -0
  301. package/dist/client/_assets/chunks/df10d94bea357a43313e20da5d84bd30-CmAgh2oA.woff2 +0 -0
  302. package/dist/client/_assets/chunks/df9568257eb29b156449fdd4bec5ec76-BMz6aLRr.woff2 +0 -0
  303. package/dist/client/_assets/chunks/e067cd0ed76c90cd0a93c9339253f20b-6RxCQ4jy.woff2 +0 -0
  304. package/dist/client/_assets/chunks/e08b07772e7bed3cec2832d43f7fd339-CQCkeKsr.woff2 +0 -0
  305. package/dist/client/_assets/chunks/e12150d5a39b30be8f567968c7a527b0-DjdoWzeQ.woff2 +0 -0
  306. package/dist/client/_assets/chunks/e34b2b141e472dc776c86fdf8eea23b0-Cjk7H-Ev.woff2 +0 -0
  307. package/dist/client/_assets/chunks/e444fd88f1390636e603d0d681538ac8-Bx7CPOZh.woff2 +0 -0
  308. package/dist/client/_assets/chunks/e53fcb2381eee345db4f6f973dd95a3e-DmkkCUWz.woff2 +0 -0
  309. package/dist/client/_assets/chunks/e5bd313ef81f687d398aacb11cec3069-CwBEbcji.woff2 +0 -0
  310. package/dist/client/_assets/chunks/e79898628283edc27180fc39d0d769c1-By2pplQz.woff2 +0 -0
  311. package/dist/client/_assets/chunks/e8c15be62faf978d208925e79ea6a10d-Ct5M9lTP.woff2 +0 -0
  312. package/dist/client/_assets/chunks/e8c364c16daa04835bf32d293d2598db-3v4Tut_d.woff2 +0 -0
  313. package/dist/client/_assets/chunks/e91c4d941ed9f5c2f3e27f205a3a225e-BwOJ2Lst.woff2 +0 -0
  314. package/dist/client/_assets/chunks/e9c566be7a5d38a9085225f7372bc82b-BCtnCVML.woff2 +0 -0
  315. package/dist/client/_assets/chunks/e9ebc567a711eeb29019ddae3e0ce7fe-CnNhV49O.woff2 +0 -0
  316. package/dist/client/_assets/chunks/eaf332445a40942928e5f5750c1c3116-qZ5LSRrj.woff2 +0 -0
  317. package/dist/client/_assets/chunks/eb5afb3d952b8593782caec6026514b6-BXugZF2T.woff2 +0 -0
  318. package/dist/client/_assets/chunks/ec86e23683052da5cfdc3b77641bd15a-BeLcbcRc.woff2 +0 -0
  319. package/dist/client/_assets/chunks/ecb8875a56c7b038b35432fda41ae128-BVqgNf1o.woff2 +0 -0
  320. package/dist/client/_assets/chunks/eda1b0cb6d1719dd9bedcf3216a9e8de-BJTfLL5z.woff2 +0 -0
  321. package/dist/client/_assets/chunks/edd6a4f608d04fc0351d7688cfc321e4-d3V4U40c.woff2 +0 -0
  322. package/dist/client/_assets/chunks/ee6fce20b420a480714607c66d7f97e5-DEtC-G5G.woff2 +0 -0
  323. package/dist/client/_assets/chunks/eee3836d6ac17ebb2c450bbcbc9db121-C5a2TZjQ.woff2 +0 -0
  324. package/dist/client/_assets/chunks/et-book-bold-line-figures-BFJr2_zv.woff +0 -0
  325. package/dist/client/_assets/chunks/et-book-display-italic-old-style-figures-CoeRJAe8.woff +0 -0
  326. package/dist/client/_assets/chunks/et-book-roman-line-figures-CaA40oOf.woff +0 -0
  327. package/dist/client/_assets/chunks/f1661731474b78bdf81114daf10b254f-KnMKX_U3.woff2 +0 -0
  328. package/dist/client/_assets/chunks/f2c58dee206ba9355046fc23d05491f7-Cm4tCWav.woff2 +0 -0
  329. package/dist/client/_assets/chunks/f50ac27ea4358d67fdda403c2bb52467-WCfYHde1.woff2 +0 -0
  330. package/dist/client/_assets/chunks/f55334112f8e8be82d65db29887a663f-vDq1zH8k.woff2 +0 -0
  331. package/dist/client/_assets/chunks/f5738255e92d8dd34a46d1bcdf4c4074-tpghTzL1.woff2 +0 -0
  332. package/dist/client/_assets/chunks/f740e93f3c0277ecc616594103bca683-C4BgW_ko.woff2 +0 -0
  333. package/dist/client/_assets/chunks/f7633b5af033d76ff2fb3c3c266d77c5-BCkrZxwO.woff2 +0 -0
  334. package/dist/client/_assets/chunks/f7d8468cba2335a83ee414ea68291bab-CVnotkZU.woff2 +0 -0
  335. package/dist/client/_assets/chunks/f91cd722855f4269256eae1187df64ec-DJlAx1A_.woff2 +0 -0
  336. package/dist/client/_assets/chunks/f9695c6c4df2bf6bc03045ff79d4f01f-DDaYGYHT.woff2 +0 -0
  337. package/dist/client/_assets/chunks/fa6e58ce4b52695e7ae19bbea6336ec8-B30jEpze.woff2 +0 -0
  338. package/dist/client/_assets/chunks/fada6eaa68ff8816afe43d2a36c5423e-DlGAWNPb.woff2 +0 -0
  339. package/dist/client/_assets/chunks/fbcc4bf5367218951172bdee6f77d7a6-Dax2VSCd.woff2 +0 -0
  340. package/dist/client/_assets/chunks/fc895f5ce66b656f4a933097bf2a8775-DjjysNdf.woff2 +0 -0
  341. package/dist/client/_assets/chunks/fc9ae5b600fb711f2d67e93ce768cba4-D1lx7LBz.woff2 +0 -0
  342. package/dist/client/_assets/chunks/fca6720fd14c467d29a90f18ef3859b9-B3btrwq3.woff2 +0 -0
  343. package/dist/client/_assets/chunks/fd1bb507bcbf04856eeb7f7fd47ea579-NR1nGJTt.woff2 +0 -0
  344. package/dist/client/_assets/chunks/fd1bceb55d3e0183ac2454b8532fec7d-D3t-v6nn.woff2 +0 -0
  345. package/dist/client/_assets/chunks/fd2069e6e8588c70b4f11364093b81f2-BoXhYVgw.woff2 +0 -0
  346. package/dist/client/_assets/chunks/{url-CG0eolsk.js → url-pLre2DM_.js} +1 -1
  347. package/dist/client/_assets/client-C_kImWZj.css +2 -0
  348. package/dist/client/_assets/client-D95FNDg5.js +272 -0
  349. package/dist/client/_assets/client-auth-CXILhW1b.js +4547 -0
  350. package/dist/client/_assets/client-cjk-jp-DZwrTzQC.css +1 -0
  351. package/dist/client/_assets/client-cjk-kr-_3ZNI2ZP.css +1 -0
  352. package/dist/env-CgaH9Mut.js +252 -0
  353. package/dist/github-api-BkRWnqMx.js +176 -0
  354. package/dist/github-app-WeadXMb8.js +275 -0
  355. package/dist/github-sync-7y_nTXx1.js +4723 -0
  356. package/dist/index.js +88 -2
  357. package/dist/node.js +71 -30
  358. package/dist/url-umUptr5z.js +334 -0
  359. package/package.json +16 -12
  360. package/src/__tests__/bin/content-cli.test.ts +179 -0
  361. package/src/__tests__/bin/media-cli.test.ts +192 -0
  362. package/src/__tests__/export-hugo-build.test.ts +178 -0
  363. package/src/__tests__/export-import-roundtrip.test.ts +265 -0
  364. package/src/__tests__/export-service.test.ts +763 -510
  365. package/src/__tests__/helpers/app.ts +15 -4
  366. package/src/__tests__/helpers/export-fixtures.ts +108 -0
  367. package/src/__tests__/import-site-command.test.ts +358 -350
  368. package/src/__tests__/site-pull-media.test.ts +256 -0
  369. package/src/app.tsx +68 -13
  370. package/src/client/__tests__/collection-form-bridge.test.ts +87 -7
  371. package/src/client/__tests__/collection-page-actions.test.ts +4 -4
  372. package/src/client/__tests__/collection-picker-order.test.ts +53 -0
  373. package/src/client/__tests__/collection-sort-menu.test.ts +2 -2
  374. package/src/client/__tests__/compose-bridge.test.ts +305 -13
  375. package/src/client/__tests__/compose-launch.test.ts +120 -0
  376. package/src/client/__tests__/compose-shortcuts.test.ts +141 -0
  377. package/src/client/__tests__/feed-video-player.test.ts +44 -0
  378. package/src/client/__tests__/site-header-nav.test.ts +250 -0
  379. package/src/client/__tests__/sortable-list.test.ts +6 -2
  380. package/src/client/__tests__/thread-context.test.ts +117 -0
  381. package/src/client/collection-form-bridge.ts +109 -4
  382. package/src/client/collection-page-actions.ts +3 -1
  383. package/src/client/collection-picker-order.ts +104 -0
  384. package/src/client/components/__tests__/{jant-collection-sidebar.test.ts → jant-collection-directory.test.ts} +91 -10
  385. package/src/client/components/__tests__/jant-collection-form.test.ts +40 -18
  386. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1285 -66
  387. package/src/client/components/__tests__/jant-compose-editor.test.ts +254 -19
  388. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +127 -1
  389. package/src/client/components/__tests__/jant-media-lightbox.test.ts +237 -0
  390. package/src/client/components/__tests__/jant-nav-manager.test.ts +326 -0
  391. package/src/client/components/__tests__/jant-post-menu.test.ts +372 -2
  392. package/src/client/components/__tests__/jant-settings-avatar.test.ts +61 -5
  393. package/src/client/components/__tests__/jant-settings-general.test.ts +29 -28
  394. package/src/client/components/__tests__/jant-text-preview.test.ts +206 -0
  395. package/src/client/components/collection-manager-types.ts +18 -1
  396. package/src/client/components/compose-types.ts +48 -0
  397. package/src/client/components/jant-collection-directory.ts +1448 -0
  398. package/src/client/components/jant-collection-form.ts +65 -17
  399. package/src/client/components/jant-command-palette.ts +544 -0
  400. package/src/client/components/jant-compose-dialog.ts +2490 -375
  401. package/src/client/components/jant-compose-editor.ts +420 -75
  402. package/src/client/components/jant-compose-fullscreen.ts +59 -8
  403. package/src/client/components/jant-media-lightbox.ts +373 -18
  404. package/src/client/components/jant-nav-manager.ts +624 -286
  405. package/src/client/components/jant-post-menu.ts +451 -126
  406. package/src/client/components/jant-repo-picker-types.ts +39 -0
  407. package/src/client/components/jant-repo-picker.ts +799 -0
  408. package/src/client/components/jant-settings-avatar.ts +16 -2
  409. package/src/client/components/jant-settings-general.ts +137 -35
  410. package/src/client/components/jant-text-preview.ts +239 -55
  411. package/src/client/components/nav-manager-types.ts +25 -9
  412. package/src/client/components/settings-types.ts +13 -2
  413. package/src/client/compose-bridge.ts +428 -68
  414. package/src/client/compose-launch.ts +41 -4
  415. package/src/client/compose-shortcuts.ts +77 -5
  416. package/src/client/feed-video-player.ts +374 -0
  417. package/src/client/image-processor.ts +53 -127
  418. package/src/client/media-lightbox-events.ts +1 -0
  419. package/src/client/media-scroll-hint.ts +66 -0
  420. package/src/client/multipart-upload.ts +4 -1
  421. package/src/client/palette-shortcuts.ts +35 -0
  422. package/src/client/search-rank.ts +74 -0
  423. package/src/client/settings-bridge.ts +7 -0
  424. package/src/client/site-header-nav.d.ts +1 -0
  425. package/src/client/site-header-nav.js +139 -51
  426. package/src/client/sortable-list.ts +2 -0
  427. package/src/client/thread-context.ts +54 -11
  428. package/src/client/tiptap/__tests__/block-insertion.test.ts +65 -0
  429. package/src/client/tiptap/__tests__/footnotes.test.ts +692 -0
  430. package/src/client/tiptap/__tests__/insert-paragraph-around.test.ts +228 -0
  431. package/src/client/tiptap/__tests__/link-toolbar.test.ts +120 -4
  432. package/src/client/tiptap/__tests__/markdown-clipboard.test.ts +48 -0
  433. package/src/client/tiptap/block-insertion.ts +36 -0
  434. package/src/client/tiptap/bubble-menu.ts +34 -4
  435. package/src/client/tiptap/create-editor.ts +49 -30
  436. package/src/client/tiptap/embed-dialog.ts +301 -0
  437. package/src/client/tiptap/embed-node.ts +373 -0
  438. package/src/client/tiptap/embed-paste.ts +91 -0
  439. package/src/client/tiptap/extensions.ts +80 -28
  440. package/src/client/tiptap/footnotes.ts +718 -0
  441. package/src/client/tiptap/html-block-node.ts +222 -0
  442. package/src/client/tiptap/image-node.ts +49 -6
  443. package/src/client/tiptap/inline-image-upload.ts +200 -40
  444. package/src/client/tiptap/insert-paragraph-around.ts +79 -0
  445. package/src/client/tiptap/link-input-rules.ts +50 -16
  446. package/src/client/tiptap/link-toolbar.ts +156 -133
  447. package/src/client/tiptap/markdown-clipboard.ts +120 -0
  448. package/src/client/tiptap/more-break.ts +36 -3
  449. package/src/client/tiptap/paste-media.ts +6 -0
  450. package/src/client/tiptap/slash-commands.ts +167 -14
  451. package/src/client/tiptap/tab-indent.ts +184 -0
  452. package/src/client/tiptap/toolbar-mode.ts +15 -2
  453. package/src/client/tiptap/wrapping-input-rules.ts +102 -0
  454. package/src/client/types/sortablejs.d.ts +9 -1
  455. package/src/client/upload-session.ts +2 -1
  456. package/src/client/video-processor.ts +177 -20
  457. package/src/client-auth.ts +9 -1
  458. package/src/client-site.ts +15 -0
  459. package/src/client.ts +2 -0
  460. package/src/db/__tests__/demo-canonical-snapshot.test.ts +1 -1
  461. package/src/db/__tests__/migration-rehearsal.test.ts +5 -1
  462. package/src/db/__tests__/migrations.test.ts +25 -2
  463. package/src/db/backfills/0001_strip_collection_path_c_prefix.sql +11 -0
  464. package/src/db/backfills/0002_strip_collection_path_c_prefix_fix.sql +12 -0
  465. package/src/db/backfills/0003_clear_system_nav_default_labels.sql +15 -0
  466. package/src/db/dialect.ts +40 -0
  467. package/src/db/migrations/0005_busy_the_phantom.sql +39 -0
  468. package/src/db/migrations/0006_adorable_magdalene.sql +3 -0
  469. package/src/db/migrations/0007_unusual_warstar.sql +1 -0
  470. package/src/db/migrations/0008_nasty_lockheed.sql +1 -0
  471. package/src/db/migrations/0009_clear_fixer.sql +31 -0
  472. package/src/db/migrations/0010_futuristic_preak.sql +31 -0
  473. package/src/db/migrations/0011_bizarre_smasher.sql +30 -0
  474. package/src/db/migrations/0012_furry_thena.sql +52 -0
  475. package/src/db/migrations/0013_mixed_lightspeed.sql +39 -0
  476. package/src/db/migrations/0014_high_the_santerians.sql +41 -0
  477. package/src/db/migrations/0015_skinny_shinobi_shaw.sql +1 -0
  478. package/src/db/migrations/0016_remarkable_nicolaos.sql +17 -0
  479. package/src/db/migrations/0017_powerful_moonstone.sql +14 -0
  480. package/src/db/migrations/0018_yummy_franklin_richards.sql +6 -0
  481. package/src/db/migrations/meta/0005_snapshot.json +1904 -0
  482. package/src/db/migrations/meta/0006_snapshot.json +1925 -0
  483. package/src/db/migrations/meta/0007_snapshot.json +1933 -0
  484. package/src/db/migrations/meta/0008_snapshot.json +1940 -0
  485. package/src/db/migrations/meta/0009_snapshot.json +1952 -0
  486. package/src/db/migrations/meta/0010_snapshot.json +1952 -0
  487. package/src/db/migrations/meta/0011_snapshot.json +1948 -0
  488. package/src/db/migrations/meta/0012_snapshot.json +1955 -0
  489. package/src/db/migrations/meta/0013_snapshot.json +1977 -0
  490. package/src/db/migrations/meta/0014_snapshot.json +1988 -0
  491. package/src/db/migrations/meta/0015_snapshot.json +1995 -0
  492. package/src/db/migrations/meta/0016_snapshot.json +2104 -0
  493. package/src/db/migrations/meta/0017_snapshot.json +2188 -0
  494. package/src/db/migrations/meta/0018_snapshot.json +2225 -0
  495. package/src/db/migrations/meta/_journal.json +98 -0
  496. package/src/db/migrations/pg/0003_motionless_norrin_radd.sql +21 -0
  497. package/src/db/migrations/pg/0004_nervous_captain_midlands.sql +3 -0
  498. package/src/db/migrations/pg/0005_romantic_mesmero.sql +1 -0
  499. package/src/db/migrations/pg/0006_perpetual_bruce_banner.sql +1 -0
  500. package/src/db/migrations/pg/0007_nav_item_placement.sql +1 -0
  501. package/src/db/migrations/pg/0008_yielding_frightful_four.sql +3 -0
  502. package/src/db/migrations/pg/0009_outstanding_ogun.sql +1 -0
  503. package/src/db/migrations/pg/0010_overjoyed_gertrude_yorkes.sql +28 -0
  504. package/src/db/migrations/pg/0011_fixed_hulk.sql +19 -0
  505. package/src/db/migrations/pg/0012_cute_shockwave.sql +2 -0
  506. package/src/db/migrations/pg/0013_bizarre_obadiah_stane.sql +1 -0
  507. package/src/db/migrations/pg/0014_tearful_grim_reaper.sql +16 -0
  508. package/src/db/migrations/pg/0015_daffy_mikhail_rasputin.sql +14 -0
  509. package/src/db/migrations/pg/0016_familiar_lionheart.sql +6 -0
  510. package/src/db/migrations/pg/meta/0003_snapshot.json +2482 -0
  511. package/src/db/migrations/pg/meta/0004_snapshot.json +2500 -0
  512. package/src/db/migrations/pg/meta/0005_snapshot.json +2507 -0
  513. package/src/db/migrations/pg/meta/0006_snapshot.json +2513 -0
  514. package/src/db/migrations/pg/meta/0008_snapshot.json +2524 -0
  515. package/src/db/migrations/pg/meta/0009_snapshot.json +2520 -0
  516. package/src/db/migrations/pg/meta/0010_snapshot.json +2526 -0
  517. package/src/db/migrations/pg/meta/0011_snapshot.json +2563 -0
  518. package/src/db/migrations/pg/meta/0012_snapshot.json +2573 -0
  519. package/src/db/migrations/pg/meta/0013_snapshot.json +2579 -0
  520. package/src/db/migrations/pg/meta/0014_snapshot.json +2702 -0
  521. package/src/db/migrations/pg/meta/0015_snapshot.json +2803 -0
  522. package/src/db/migrations/pg/meta/0016_snapshot.json +2840 -0
  523. package/src/db/migrations/pg/meta/_journal.json +98 -0
  524. package/src/db/pg/__tests__/node.test.ts +38 -0
  525. package/src/db/pg/node.ts +149 -0
  526. package/src/db/pg/schema.ts +148 -12
  527. package/src/db/rehearsal-fixtures/demo-current.sql +47 -3
  528. package/src/db/schema.ts +162 -12
  529. package/src/i18n/Trans.tsx +3 -3
  530. package/src/i18n/__tests__/context.test.tsx +9 -6
  531. package/src/i18n/__tests__/detect.test.ts +65 -48
  532. package/src/i18n/__tests__/fallback.test.ts +40 -0
  533. package/src/i18n/__tests__/message-placeholders.test.ts +43 -0
  534. package/src/i18n/__tests__/middleware.test.ts +83 -0
  535. package/src/i18n/context.tsx +9 -44
  536. package/src/i18n/detect.ts +95 -28
  537. package/src/i18n/i18n.ts +41 -17
  538. package/src/i18n/index.ts +7 -5
  539. package/src/i18n/locales/{en.po → public/en.po} +284 -1151
  540. package/src/i18n/locales/public/en.ts +1 -0
  541. package/src/i18n/locales/public/zh-Hans.po +2327 -0
  542. package/src/i18n/locales/public/zh-Hans.ts +1 -0
  543. package/src/i18n/locales/public/zh-Hant.po +2327 -0
  544. package/src/i18n/locales/public/zh-Hant.ts +1 -0
  545. package/src/i18n/locales/settings/en.po +1622 -0
  546. package/src/i18n/locales/settings/en.ts +1 -0
  547. package/src/i18n/locales/settings/zh-Hans.po +1622 -0
  548. package/src/i18n/locales/settings/zh-Hans.ts +1 -0
  549. package/src/i18n/locales/settings/zh-Hant.po +1622 -0
  550. package/src/i18n/locales/settings/zh-Hant.ts +1 -0
  551. package/src/i18n/middleware.ts +37 -24
  552. package/src/index.ts +4 -6
  553. package/src/lib/__tests__/collection-groups.test.ts +17 -0
  554. package/src/lib/__tests__/constants.test.ts +2 -24
  555. package/src/lib/__tests__/csp-builder.test.ts +68 -0
  556. package/src/lib/__tests__/display-text.test.ts +27 -0
  557. package/src/lib/__tests__/embed-providers.test.ts +104 -0
  558. package/src/lib/__tests__/embed-render.test.ts +60 -0
  559. package/src/lib/__tests__/feed.test.ts +125 -63
  560. package/src/lib/__tests__/hosted-signin.test.ts +41 -2
  561. package/src/lib/__tests__/markdown-roundtrip-embed.test.ts +88 -0
  562. package/src/lib/__tests__/markdown-to-tiptap.test.ts +59 -0
  563. package/src/lib/__tests__/markdown.test.ts +47 -5
  564. package/src/lib/__tests__/navigation.test.ts +132 -0
  565. package/src/lib/__tests__/post-display.test.ts +3 -2
  566. package/src/lib/__tests__/post-meta.test.ts +3 -0
  567. package/src/lib/__tests__/rate-limit-d1.test.ts +82 -0
  568. package/src/lib/__tests__/rate-limit-memory.test.ts +69 -0
  569. package/src/lib/__tests__/resolve-config.test.ts +30 -25
  570. package/src/lib/__tests__/schemas.test.ts +20 -3
  571. package/src/lib/__tests__/summary.test.ts +540 -1
  572. package/src/lib/__tests__/theme.test.ts +41 -2
  573. package/src/lib/__tests__/timeline.test.ts +33 -27
  574. package/src/lib/__tests__/tiptap-render.test.ts +224 -0
  575. package/src/lib/__tests__/tiptap-to-markdown.test.ts +51 -0
  576. package/src/lib/__tests__/video-playback.test.ts +48 -0
  577. package/src/lib/__tests__/view.test.ts +181 -8
  578. package/src/lib/__tests__/worker-response-cache.test.ts +311 -0
  579. package/src/lib/__tests__/youtube.test.ts +99 -0
  580. package/src/lib/api-media.ts +55 -0
  581. package/src/lib/api-posts.ts +99 -0
  582. package/src/lib/api-search.ts +47 -0
  583. package/src/lib/api-settings.ts +122 -0
  584. package/src/lib/asset-path.ts +20 -2
  585. package/src/lib/collection-groups.ts +2 -1
  586. package/src/lib/collection-paths.ts +40 -0
  587. package/src/lib/constants.ts +3 -24
  588. package/src/lib/csp-builder.ts +99 -0
  589. package/src/lib/decorative-quote-mark.ts +11 -0
  590. package/src/lib/display-text.ts +56 -0
  591. package/src/lib/embed-providers.ts +289 -0
  592. package/src/lib/embed-render.ts +151 -0
  593. package/src/lib/env.ts +70 -1
  594. package/src/lib/excerpt.ts +11 -2
  595. package/src/lib/feed.ts +154 -95
  596. package/src/lib/footnotes.ts +146 -0
  597. package/src/lib/github-api.ts +423 -0
  598. package/src/lib/github-app-state.ts +135 -0
  599. package/src/lib/github-app.ts +487 -0
  600. package/src/lib/github-sync-queue-handler.ts +69 -0
  601. package/src/lib/github-sync-site-config.ts +57 -0
  602. package/src/lib/github-sync-status.tsx +87 -0
  603. package/src/lib/github-sync-trigger.ts +199 -0
  604. package/src/lib/github-sync-worker.ts +72 -0
  605. package/src/lib/hosted-signin.ts +9 -3
  606. package/src/lib/hugo-markdown.ts +255 -0
  607. package/src/lib/job-queue-cf.ts +18 -0
  608. package/src/lib/job-queue-db.ts +149 -0
  609. package/src/lib/job-queue.ts +35 -0
  610. package/src/lib/markdown-manager.ts +864 -0
  611. package/src/lib/markdown-to-tiptap.ts +4 -323
  612. package/src/lib/markdown.ts +16 -24
  613. package/src/lib/media-helpers.ts +1 -0
  614. package/src/lib/navigation.ts +50 -19
  615. package/src/lib/post-display.ts +10 -22
  616. package/src/lib/post-meta.ts +20 -2
  617. package/src/lib/public-storage.ts +6 -1
  618. package/src/lib/rate-limit-d1.ts +99 -0
  619. package/src/lib/rate-limit-memory.ts +105 -0
  620. package/src/lib/rate-limit.ts +63 -0
  621. package/src/lib/render.tsx +14 -2
  622. package/src/lib/resolve-config.ts +32 -11
  623. package/src/lib/rich-image.ts +89 -0
  624. package/src/lib/schemas.ts +180 -13
  625. package/src/lib/summary.ts +162 -20
  626. package/src/lib/theme.ts +119 -0
  627. package/src/lib/timeline.ts +63 -42
  628. package/src/lib/tiptap-render.ts +265 -126
  629. package/src/lib/tiptap-to-markdown.ts +6 -329
  630. package/src/lib/upload.ts +97 -6
  631. package/src/lib/url.ts +34 -0
  632. package/src/lib/version.ts +18 -0
  633. package/src/lib/video-playback.ts +73 -0
  634. package/src/lib/view.ts +168 -94
  635. package/src/lib/webhook-signature.ts +65 -0
  636. package/src/lib/worker-response-cache.ts +220 -0
  637. package/src/lib/youtube.ts +119 -0
  638. package/src/middleware/__tests__/auth.test.ts +44 -4
  639. package/src/middleware/__tests__/onboarding.test.ts +3 -3
  640. package/src/middleware/__tests__/rate-limit.test.ts +113 -0
  641. package/src/middleware/__tests__/secure-headers.test.ts +28 -1
  642. package/src/middleware/__tests__/session.test.ts +85 -0
  643. package/src/middleware/auth.ts +62 -25
  644. package/src/middleware/config.ts +7 -10
  645. package/src/middleware/cors.ts +49 -0
  646. package/src/middleware/rate-limit.ts +54 -0
  647. package/src/middleware/secure-headers.ts +45 -55
  648. package/src/middleware/session.ts +36 -0
  649. package/src/node/__tests__/cli-migrate.test.ts +111 -0
  650. package/src/node/__tests__/cli-runtime-target.test.ts +1 -1
  651. package/src/node/__tests__/cli-site-token-env.test.ts +2 -2
  652. package/src/preset.css +316 -12
  653. package/src/routes/__tests__/compose.test.ts +4 -2
  654. package/src/routes/api/__tests__/collections.test.ts +81 -27
  655. package/src/routes/api/__tests__/mcp.test.ts +389 -0
  656. package/src/routes/api/__tests__/nav-items.test.ts +163 -2
  657. package/src/routes/api/__tests__/posts.test.ts +190 -0
  658. package/src/routes/api/__tests__/search.test.ts +48 -0
  659. package/src/routes/api/__tests__/settings.test.ts +99 -3
  660. package/src/routes/api/__tests__/upload-multipart.test.ts +21 -6
  661. package/src/routes/api/__tests__/upload.test.ts +132 -0
  662. package/src/routes/api/__tests__/uploads.test.ts +5 -3
  663. package/src/routes/api/collections.ts +67 -26
  664. package/src/routes/api/custom-urls.ts +1 -0
  665. package/src/routes/api/export.ts +8 -4
  666. package/src/routes/api/github-sync.tsx +380 -0
  667. package/src/routes/api/internal/__tests__/sites.test.ts +45 -2
  668. package/src/routes/api/internal/search-reindex.ts +40 -0
  669. package/src/routes/api/internal/sites.ts +2 -0
  670. package/src/routes/api/internal/text-attachments.ts +60 -0
  671. package/src/routes/api/internal/uploads.ts +5 -1
  672. package/src/routes/api/mcp.ts +30 -0
  673. package/src/routes/api/nav-items.ts +30 -11
  674. package/src/routes/api/palette.ts +17 -0
  675. package/src/routes/api/posts.ts +37 -106
  676. package/src/routes/api/public/__tests__/posts.test.ts +372 -0
  677. package/src/routes/api/public/posts.ts +302 -0
  678. package/src/routes/api/search.ts +13 -46
  679. package/src/routes/api/settings.ts +44 -58
  680. package/src/routes/api/upload-multipart.ts +15 -5
  681. package/src/routes/api/upload.ts +62 -49
  682. package/src/routes/api/uploads.ts +1 -0
  683. package/src/routes/auth/__tests__/hosted-sso.test.ts +33 -0
  684. package/src/routes/auth/__tests__/setup.test.ts +29 -4
  685. package/src/routes/auth/dev.ts +1 -1
  686. package/src/routes/auth/hosted-sso-expired-page.tsx +89 -0
  687. package/src/routes/auth/hosted-sso.ts +42 -1
  688. package/src/routes/auth/reset.tsx +46 -32
  689. package/src/routes/auth/setup.tsx +53 -43
  690. package/src/routes/auth/signin.tsx +57 -29
  691. package/src/routes/compose.tsx +114 -1
  692. package/src/routes/dash/__tests__/font-theme.test.ts +6 -27
  693. package/src/routes/dash/__tests__/settings-avatar.test.ts +2 -3
  694. package/src/routes/dash/custom-urls.tsx +250 -112
  695. package/src/routes/dash/settings.tsx +1182 -75
  696. package/src/routes/feed/__tests__/{rss.test.ts → feed.test.ts} +62 -123
  697. package/src/routes/feed/__tests__/sitemap.test.ts +320 -4
  698. package/src/routes/feed/feed.ts +386 -0
  699. package/src/routes/feed/manifest.ts +67 -0
  700. package/src/routes/feed/sitemap.ts +211 -27
  701. package/src/routes/pages/__tests__/collection-routing.test.ts +176 -0
  702. package/src/routes/pages/__tests__/collections.test.ts +2 -3
  703. package/src/routes/pages/__tests__/featured.test.ts +2 -3
  704. package/src/routes/pages/__tests__/page-canonical.test.ts +101 -0
  705. package/src/routes/pages/archive.tsx +523 -127
  706. package/src/routes/pages/collection.tsx +197 -43
  707. package/src/routes/pages/collections.tsx +5 -1
  708. package/src/routes/pages/home.tsx +26 -17
  709. package/src/routes/pages/latest.tsx +3 -3
  710. package/src/routes/pages/page.tsx +255 -3
  711. package/src/routes/pages/partials.tsx +8 -14
  712. package/src/routes/pages/search.tsx +17 -1
  713. package/src/routes/pages/theme-sample.tsx +1 -2
  714. package/src/runtime/__tests__/node.test.ts +1 -1
  715. package/src/runtime/cloudflare.ts +4 -0
  716. package/src/runtime/node.ts +16 -0
  717. package/src/runtime/readiness.ts +1 -1
  718. package/src/runtime/site.ts +9 -1
  719. package/src/services/__tests__/collection.test.ts +137 -54
  720. package/src/services/__tests__/github-app-installations.test.ts +181 -0
  721. package/src/services/__tests__/github-sync-classify.test.ts +189 -0
  722. package/src/services/__tests__/github-sync-push.test.ts +159 -0
  723. package/src/services/__tests__/media.test.ts +444 -7
  724. package/src/services/__tests__/navigation.test.ts +271 -14
  725. package/src/services/__tests__/post-timeline.test.ts +31 -21
  726. package/src/services/__tests__/post.test.ts +288 -9
  727. package/src/services/__tests__/search.test.ts +44 -0
  728. package/src/services/__tests__/settings.test.ts +43 -21
  729. package/src/services/auth.ts +2 -2
  730. package/src/services/bootstrap.ts +10 -7
  731. package/src/services/collection.ts +591 -193
  732. package/src/services/custom-url.ts +34 -7
  733. package/src/services/export-theme/assets/client-site.css +2 -0
  734. package/src/services/export-theme/assets/client-site.js +145 -0
  735. package/src/services/export-theme/layouts/_default/alias.html +49 -0
  736. package/src/services/export-theme/layouts/_default/baseof.html +21 -0
  737. package/src/services/export-theme/layouts/_default/list.html +104 -0
  738. package/src/services/export-theme/layouts/_default/rss.xml +160 -0
  739. package/src/services/export-theme/layouts/_default/single.html +15 -0
  740. package/src/services/export-theme/layouts/archive/list.html +31 -0
  741. package/src/services/export-theme/layouts/collection/single.html +19 -0
  742. package/src/services/export-theme/layouts/collections/list.html +111 -0
  743. package/src/services/export-theme/layouts/featured/list.html +28 -0
  744. package/src/services/export-theme/layouts/index.html +41 -0
  745. package/src/services/export-theme/layouts/partials/feed-post-content.xml +107 -0
  746. package/src/services/export-theme/layouts/partials/footer.html +32 -0
  747. package/src/services/export-theme/layouts/partials/head.html +52 -0
  748. package/src/services/export-theme/layouts/partials/header.html +115 -0
  749. package/src/services/export-theme/layouts/partials/media-gallery.html +246 -0
  750. package/src/services/export-theme/layouts/partials/pagination.html +55 -0
  751. package/src/services/export-theme/layouts/partials/post-card.html +127 -0
  752. package/src/services/export-theme/layouts/partials/reply.html +91 -0
  753. package/src/services/export-theme/layouts/partials/thread-preview.html +82 -0
  754. package/src/services/export-theme/layouts/post/list.html +129 -0
  755. package/src/services/export-theme/styles/main.css +1981 -0
  756. package/src/services/export-theme/theme.toml +12 -0
  757. package/src/services/export.ts +1372 -2412
  758. package/src/services/github-app-installations.ts +302 -0
  759. package/src/services/github-sync.ts +769 -0
  760. package/src/services/index.ts +15 -0
  761. package/src/services/mcp.ts +1324 -0
  762. package/src/services/media.ts +336 -25
  763. package/src/services/navigation.ts +115 -23
  764. package/src/services/path.ts +129 -28
  765. package/src/services/post.ts +858 -197
  766. package/src/services/search.ts +3 -0
  767. package/src/services/settings.ts +29 -15
  768. package/src/services/site-admin.ts +26 -6
  769. package/src/services/upload-session.ts +69 -34
  770. package/src/style-cjk-jp.css +3 -0
  771. package/src/style-cjk-kr.css +3 -0
  772. package/src/styles/components.css +160 -59
  773. package/src/styles/fonts/et-book/et-book-bold-line-figures.woff +0 -0
  774. package/src/styles/fonts/et-book/et-book-display-italic-old-style-figures.woff +0 -0
  775. package/src/styles/fonts/et-book/et-book-roman-line-figures.woff +0 -0
  776. package/src/styles/fonts/et-book.css +31 -0
  777. package/src/styles/fonts/latin.css +1 -0
  778. package/src/styles/fonts/noto-serif-jp/400/057a6a98bda7fe57105ddaa99ec82015.woff2 +0 -0
  779. package/src/styles/fonts/noto-serif-jp/400/0acd1fe2b2ea1ad1bfee7ae1fa139d27.woff2 +0 -0
  780. package/src/styles/fonts/noto-serif-jp/400/0c2ab6b295e55f356f8020d4e7747522.woff2 +0 -0
  781. package/src/styles/fonts/noto-serif-jp/400/0c5f9492af03a4fa42c784de94649de1.woff2 +0 -0
  782. package/src/styles/fonts/noto-serif-jp/400/0d9a936885a4c39077438effd3779cbd.woff2 +0 -0
  783. package/src/styles/fonts/noto-serif-jp/400/0e645da524f7cfc0e8c3c03fb2b08428.woff2 +0 -0
  784. package/src/styles/fonts/noto-serif-jp/400/135e83b403475c5dc9e49b43501a5b84.woff2 +0 -0
  785. package/src/styles/fonts/noto-serif-jp/400/13b2c53b30e6a3e4de7132dbc18dbdfc.woff2 +0 -0
  786. package/src/styles/fonts/noto-serif-jp/400/15d95680dc31cc6ce20e0a5464106dc4.woff2 +0 -0
  787. package/src/styles/fonts/noto-serif-jp/400/1733f27476507ca68b68a803bc533cc2.woff2 +0 -0
  788. package/src/styles/fonts/noto-serif-jp/400/188c2db794f3dd7a45889ddbc81da9bb.woff2 +0 -0
  789. package/src/styles/fonts/noto-serif-jp/400/1cf737900dd49c2e88f1b3221a82a602.woff2 +0 -0
  790. package/src/styles/fonts/noto-serif-jp/400/233d3a685ee18276b319363474599d47.woff2 +0 -0
  791. package/src/styles/fonts/noto-serif-jp/400/284b53bbefb06924cf236d24c8ed5641.woff2 +0 -0
  792. package/src/styles/fonts/noto-serif-jp/400/2a56eaf19d1d38a6b57e2a388f733676.woff2 +0 -0
  793. package/src/styles/fonts/noto-serif-jp/400/2abfbab82b6a7c04426afc054d2464da.woff2 +0 -0
  794. package/src/styles/fonts/noto-serif-jp/400/2e6f4bb71ef6b38765d51acc5a79f638.woff2 +0 -0
  795. package/src/styles/fonts/noto-serif-jp/400/31194d303a67561926a544ed0e072aee.woff2 +0 -0
  796. package/src/styles/fonts/noto-serif-jp/400/3623d96698132c61e861f984ce11cc23.woff2 +0 -0
  797. package/src/styles/fonts/noto-serif-jp/400/39211b02f24c69cbd1b54f6d41b01933.woff2 +0 -0
  798. package/src/styles/fonts/noto-serif-jp/400/3e24063b19abd2b051af986a6870046d.woff2 +0 -0
  799. package/src/styles/fonts/noto-serif-jp/400/4410f876d27c9821839474b6b1059fd7.woff2 +0 -0
  800. package/src/styles/fonts/noto-serif-jp/400/479329a39a3eb6c0047e6b0981919855.woff2 +0 -0
  801. package/src/styles/fonts/noto-serif-jp/400/527ff336279465617aafbafe1a830632.woff2 +0 -0
  802. package/src/styles/fonts/noto-serif-jp/400/56b40518ea0608e62826bd44ee27f5f9.woff2 +0 -0
  803. package/src/styles/fonts/noto-serif-jp/400/5acc7f736217259db79a42bf44241c48.woff2 +0 -0
  804. package/src/styles/fonts/noto-serif-jp/400/5c05f8b75c9d7f25b3c04ca711cf43b3.woff2 +0 -0
  805. package/src/styles/fonts/noto-serif-jp/400/5e0124c7265f1b4cf0fc797b94efbebc.woff2 +0 -0
  806. package/src/styles/fonts/noto-serif-jp/400/615a7e0d63f257109d599b2a1977de68.woff2 +0 -0
  807. package/src/styles/fonts/noto-serif-jp/400/61a2c80d0c924d5a6187c02e8d1d1642.woff2 +0 -0
  808. package/src/styles/fonts/noto-serif-jp/400/62fc94f8d4c5a750b7f25e7387539910.woff2 +0 -0
  809. package/src/styles/fonts/noto-serif-jp/400/639c7c6b0b0c27c738702741cfa4b8c0.woff2 +0 -0
  810. package/src/styles/fonts/noto-serif-jp/400/68a3a4bf337f8a0722be76676e20b850.woff2 +0 -0
  811. package/src/styles/fonts/noto-serif-jp/400/6abdd163d2c4b85698db8aa1ce149361.woff2 +0 -0
  812. package/src/styles/fonts/noto-serif-jp/400/73b794d885b88f7befb7ea8ab1780a15.woff2 +0 -0
  813. package/src/styles/fonts/noto-serif-jp/400/743f290baf027d4626a86e22f3d44600.woff2 +0 -0
  814. package/src/styles/fonts/noto-serif-jp/400/757019c01c5e2c2b0f54293cea3b5636.woff2 +0 -0
  815. package/src/styles/fonts/noto-serif-jp/400/76f117a3baacda304a71965a17266a13.woff2 +0 -0
  816. package/src/styles/fonts/noto-serif-jp/400/77747f17625a259fb405b7bbdd84ac4b.woff2 +0 -0
  817. package/src/styles/fonts/noto-serif-jp/400/788498548ddfb710d6ef3c7bff79fa97.woff2 +0 -0
  818. package/src/styles/fonts/noto-serif-jp/400/78ea6c40923ce95367e3517dd1e5a849.woff2 +0 -0
  819. package/src/styles/fonts/noto-serif-jp/400/7f9a6c9286b68de9c72b0024f7beeb40.woff2 +0 -0
  820. package/src/styles/fonts/noto-serif-jp/400/823d1bb11097331238d103c7f72138dc.woff2 +0 -0
  821. package/src/styles/fonts/noto-serif-jp/400/888ba53510213d5d1f6a7deb60e569b6.woff2 +0 -0
  822. package/src/styles/fonts/noto-serif-jp/400/892aa49b2529c89bb4076d4aa51fe30f.woff2 +0 -0
  823. package/src/styles/fonts/noto-serif-jp/400/95ff41191c76ef893ac70a1043e95e44.woff2 +0 -0
  824. package/src/styles/fonts/noto-serif-jp/400/96c75862c8cec51a7c05ff025fea86cd.woff2 +0 -0
  825. package/src/styles/fonts/noto-serif-jp/400/9b21e8244f5930c48ad5073f83777b6c.woff2 +0 -0
  826. package/src/styles/fonts/noto-serif-jp/400/9fce02d1a09f464c36c9fcfb14a354c5.woff2 +0 -0
  827. package/src/styles/fonts/noto-serif-jp/400/a0a6755c7e3f9e4cf03387027dd9f16c.woff2 +0 -0
  828. package/src/styles/fonts/noto-serif-jp/400/a4475c442c6b259354c9eda62e64e7df.woff2 +0 -0
  829. package/src/styles/fonts/noto-serif-jp/400/a4a39b5f048671aa37c2b2a9581ab08a.woff2 +0 -0
  830. package/src/styles/fonts/noto-serif-jp/400/a534449d67561ac9b06489f64e57ad98.woff2 +0 -0
  831. package/src/styles/fonts/noto-serif-jp/400/a919a8c6fec6d7e8bb21177965f2e9d7.woff2 +0 -0
  832. package/src/styles/fonts/noto-serif-jp/400/ad67113f88b59582991cb0c5d33ea19f.woff2 +0 -0
  833. package/src/styles/fonts/noto-serif-jp/400/adb6e613fb99c6dd660b727101f554a8.woff2 +0 -0
  834. package/src/styles/fonts/noto-serif-jp/400/adc4a98a89870ef984ee8f4b57c8a3a5.woff2 +0 -0
  835. package/src/styles/fonts/noto-serif-jp/400/b12379ab782468d725519cd07a7d15bc.woff2 +0 -0
  836. package/src/styles/fonts/noto-serif-jp/400/b55486f8a459c838fe329d4e79a8c211.woff2 +0 -0
  837. package/src/styles/fonts/noto-serif-jp/400/bb0b15492b8cdbbec57c0bcfa0aa9241.woff2 +0 -0
  838. package/src/styles/fonts/noto-serif-jp/400/bedc74b423b7293b6ad0bdecc61c42cc.woff2 +0 -0
  839. package/src/styles/fonts/noto-serif-jp/400/bfb00d4a4c48661bd0be99f300a0faae.woff2 +0 -0
  840. package/src/styles/fonts/noto-serif-jp/400/c1b0df29ae41d764904df84e9ac83d1e.woff2 +0 -0
  841. package/src/styles/fonts/noto-serif-jp/400/c42c67070cfe99cf823df92d81c7fa6e.woff2 +0 -0
  842. package/src/styles/fonts/noto-serif-jp/400/c4d749e45ecd5a5aed5a0bb3ebfd355d.woff2 +0 -0
  843. package/src/styles/fonts/noto-serif-jp/400/c96d83978add28b356c22c4c84916733.woff2 +0 -0
  844. package/src/styles/fonts/noto-serif-jp/400/cb7ccd6494256f7a2977b7c2b0225592.woff2 +0 -0
  845. package/src/styles/fonts/noto-serif-jp/400/ce41d70ce6a069a498525c9e15c45cf2.woff2 +0 -0
  846. package/src/styles/fonts/noto-serif-jp/400/d509ee5c8241bc7c3de2039d75564fa5.woff2 +0 -0
  847. package/src/styles/fonts/noto-serif-jp/400/d675d717cd329bfd4c0524f76ae1579c.woff2 +0 -0
  848. package/src/styles/fonts/noto-serif-jp/400/dc8f6256445e68199540be9ade33529f.woff2 +0 -0
  849. package/src/styles/fonts/noto-serif-jp/400/e8c15be62faf978d208925e79ea6a10d.woff2 +0 -0
  850. package/src/styles/fonts/noto-serif-jp/400/e91c4d941ed9f5c2f3e27f205a3a225e.woff2 +0 -0
  851. package/src/styles/fonts/noto-serif-jp/400/e9c566be7a5d38a9085225f7372bc82b.woff2 +0 -0
  852. package/src/styles/fonts/noto-serif-jp/400/e9ebc567a711eeb29019ddae3e0ce7fe.woff2 +0 -0
  853. package/src/styles/fonts/noto-serif-jp/400/ecb8875a56c7b038b35432fda41ae128.woff2 +0 -0
  854. package/src/styles/fonts/noto-serif-jp/400/f1661731474b78bdf81114daf10b254f.woff2 +0 -0
  855. package/src/styles/fonts/noto-serif-jp/400/f2c58dee206ba9355046fc23d05491f7.woff2 +0 -0
  856. package/src/styles/fonts/noto-serif-jp/400/f50ac27ea4358d67fdda403c2bb52467.woff2 +0 -0
  857. package/src/styles/fonts/noto-serif-jp/400/f55334112f8e8be82d65db29887a663f.woff2 +0 -0
  858. package/src/styles/fonts/noto-serif-jp/400/f740e93f3c0277ecc616594103bca683.woff2 +0 -0
  859. package/src/styles/fonts/noto-serif-jp/400/f7633b5af033d76ff2fb3c3c266d77c5.woff2 +0 -0
  860. package/src/styles/fonts/noto-serif-jp/400/f7d8468cba2335a83ee414ea68291bab.woff2 +0 -0
  861. package/src/styles/fonts/noto-serif-jp/400/fc9ae5b600fb711f2d67e93ce768cba4.woff2 +0 -0
  862. package/src/styles/fonts/noto-serif-jp/400/fd1bceb55d3e0183ac2454b8532fec7d.woff2 +0 -0
  863. package/src/styles/fonts/noto-serif-jp/700/02611a045a7fe83a12014e3debc9f731.woff2 +0 -0
  864. package/src/styles/fonts/noto-serif-jp/700/0f5e1a18987dbc84ca05188c129e1936.woff2 +0 -0
  865. package/src/styles/fonts/noto-serif-jp/700/112743a4ab5fdd1498dfdf2b11336380.woff2 +0 -0
  866. package/src/styles/fonts/noto-serif-jp/700/1211f03d3ff5759a702631445793f60e.woff2 +0 -0
  867. package/src/styles/fonts/noto-serif-jp/700/147b24c2f08d03bbed30887d4cb3311c.woff2 +0 -0
  868. package/src/styles/fonts/noto-serif-jp/700/16663e567f81f4725a1522f37e18f71f.woff2 +0 -0
  869. package/src/styles/fonts/noto-serif-jp/700/1824321da801e6257b902f3d1d09054c.woff2 +0 -0
  870. package/src/styles/fonts/noto-serif-jp/700/1a3a92c7c060a71a6c35819b9ebcdbb9.woff2 +0 -0
  871. package/src/styles/fonts/noto-serif-jp/700/1fba7ec0e412e911bf31841de5a8a4e4.woff2 +0 -0
  872. package/src/styles/fonts/noto-serif-jp/700/28a97af9ab9d38983d20f39ff09840e1.woff2 +0 -0
  873. package/src/styles/fonts/noto-serif-jp/700/2bfaadaf3479c72286248e6de0be0ec9.woff2 +0 -0
  874. package/src/styles/fonts/noto-serif-jp/700/2c8c55e4cec85ce77e95cac9d330f5cf.woff2 +0 -0
  875. package/src/styles/fonts/noto-serif-jp/700/2ed9981d2e8983365bd051159b976b6d.woff2 +0 -0
  876. package/src/styles/fonts/noto-serif-jp/700/2f4c633e923ba30c6ba376367379fc91.woff2 +0 -0
  877. package/src/styles/fonts/noto-serif-jp/700/349965eee0a9b6c984a319ab96a4ece9.woff2 +0 -0
  878. package/src/styles/fonts/noto-serif-jp/700/36cda3eae13370b934bba4429fab9078.woff2 +0 -0
  879. package/src/styles/fonts/noto-serif-jp/700/3aa13f1843d7c8fa16109b6395a9a29d.woff2 +0 -0
  880. package/src/styles/fonts/noto-serif-jp/700/3e2c06bdd9dcab29aeaeb0cfb7fa608a.woff2 +0 -0
  881. package/src/styles/fonts/noto-serif-jp/700/424123f9371ba357087363263eeafcda.woff2 +0 -0
  882. package/src/styles/fonts/noto-serif-jp/700/43b3bbf43055c3e65db9cdf2c5b18c1c.woff2 +0 -0
  883. package/src/styles/fonts/noto-serif-jp/700/44704471b60c18b3ecec5300a88f1102.woff2 +0 -0
  884. package/src/styles/fonts/noto-serif-jp/700/46604090efbb99c2db1800928af0a239.woff2 +0 -0
  885. package/src/styles/fonts/noto-serif-jp/700/46998df85d31e629c0142f0556f5e7c5.woff2 +0 -0
  886. package/src/styles/fonts/noto-serif-jp/700/49902f1c41b281f8eb3771abdd4dccb8.woff2 +0 -0
  887. package/src/styles/fonts/noto-serif-jp/700/4db4f31a16965baa42cb7dad667a8f04.woff2 +0 -0
  888. package/src/styles/fonts/noto-serif-jp/700/572b9e28f1e6d89b765a16d809db84a1.woff2 +0 -0
  889. package/src/styles/fonts/noto-serif-jp/700/5921cef36750ff6092d94b83a802823b.woff2 +0 -0
  890. package/src/styles/fonts/noto-serif-jp/700/59e95d8b5332dcdae894a19946ab767d.woff2 +0 -0
  891. package/src/styles/fonts/noto-serif-jp/700/5ec349ff62b9ee5fe0c6dae867704dc4.woff2 +0 -0
  892. package/src/styles/fonts/noto-serif-jp/700/601f812e8b1eafecd5ba585a6a6d7962.woff2 +0 -0
  893. package/src/styles/fonts/noto-serif-jp/700/6025ddaf99d86cc8bfd781006b19fbd6.woff2 +0 -0
  894. package/src/styles/fonts/noto-serif-jp/700/60f6e28b3f0400b0e8fe32c3c7116102.woff2 +0 -0
  895. package/src/styles/fonts/noto-serif-jp/700/64a404d675f1d726f0891b7a80794595.woff2 +0 -0
  896. package/src/styles/fonts/noto-serif-jp/700/7158022889c6c177062ac85036e7af10.woff2 +0 -0
  897. package/src/styles/fonts/noto-serif-jp/700/7e38ca789a9e76ac91d9256374e154f0.woff2 +0 -0
  898. package/src/styles/fonts/noto-serif-jp/700/815a0b797465190f60d8b1a04656c42e.woff2 +0 -0
  899. package/src/styles/fonts/noto-serif-jp/700/8726558cf297cbda831cc19514897205.woff2 +0 -0
  900. package/src/styles/fonts/noto-serif-jp/700/8855472f3c02f6c7ebb3216617ebe4af.woff2 +0 -0
  901. package/src/styles/fonts/noto-serif-jp/700/8e231d707f0c4f8e3cde90a6b52a79aa.woff2 +0 -0
  902. package/src/styles/fonts/noto-serif-jp/700/9064c12fd72c7aba235d8c3881755b91.woff2 +0 -0
  903. package/src/styles/fonts/noto-serif-jp/700/911b9e53e9814de2998c60bf3115f560.woff2 +0 -0
  904. package/src/styles/fonts/noto-serif-jp/700/92fdc376bce277874e75db666f175b44.woff2 +0 -0
  905. package/src/styles/fonts/noto-serif-jp/700/930a23430f0eb64480d7fe5f82834e21.woff2 +0 -0
  906. package/src/styles/fonts/noto-serif-jp/700/93bed0e5f2dd5a21cf73304fcfbc149d.woff2 +0 -0
  907. package/src/styles/fonts/noto-serif-jp/700/93f3ea6918533d96d9c252378b9a4af0.woff2 +0 -0
  908. package/src/styles/fonts/noto-serif-jp/700/95a0951d2a2722ff773a1a45e8c474d6.woff2 +0 -0
  909. package/src/styles/fonts/noto-serif-jp/700/982cd1765ca6bbb3e6547e47834d5148.woff2 +0 -0
  910. package/src/styles/fonts/noto-serif-jp/700/9b0c3caac458c7bc9c9133e40405ddea.woff2 +0 -0
  911. package/src/styles/fonts/noto-serif-jp/700/9f3bdab4025dc7c5ba1a5871e62e8918.woff2 +0 -0
  912. package/src/styles/fonts/noto-serif-jp/700/a00e94d4f04df6aa659db9c4954c7efe.woff2 +0 -0
  913. package/src/styles/fonts/noto-serif-jp/700/a2b0597837e382aca19919c4b74e58c8.woff2 +0 -0
  914. package/src/styles/fonts/noto-serif-jp/700/a373e85c96aa0dc303092429fb837e51.woff2 +0 -0
  915. package/src/styles/fonts/noto-serif-jp/700/a6e044424780a57610833cc856c15bf5.woff2 +0 -0
  916. package/src/styles/fonts/noto-serif-jp/700/a7c58070d68dc1724e9d4e781afb78db.woff2 +0 -0
  917. package/src/styles/fonts/noto-serif-jp/700/accc43762ad05edfbff66ba1380d192a.woff2 +0 -0
  918. package/src/styles/fonts/noto-serif-jp/700/ad47bcd6d4663026d648c132d969318d.woff2 +0 -0
  919. package/src/styles/fonts/noto-serif-jp/700/af57a2e8c72f9ba0efb1af771d32c124.woff2 +0 -0
  920. package/src/styles/fonts/noto-serif-jp/700/b0ae5f374e43dac992a4a5d334cebc0b.woff2 +0 -0
  921. package/src/styles/fonts/noto-serif-jp/700/b91234c10fd8b8c8abc88e03afe66a1f.woff2 +0 -0
  922. package/src/styles/fonts/noto-serif-jp/700/b9317198f118a1dfd8ddf2b82ec028f3.woff2 +0 -0
  923. package/src/styles/fonts/noto-serif-jp/700/ba825ae79b1a6f7e0cce5215fcb5c96f.woff2 +0 -0
  924. package/src/styles/fonts/noto-serif-jp/700/bc6183ac08f0fac78c46f80c10cf7c92.woff2 +0 -0
  925. package/src/styles/fonts/noto-serif-jp/700/bc8ccea5abf6598cf3cfa97eb59804bb.woff2 +0 -0
  926. package/src/styles/fonts/noto-serif-jp/700/bc95a792cbca6639214c9b0da13392ff.woff2 +0 -0
  927. package/src/styles/fonts/noto-serif-jp/700/bcfa62f35731856246c146d3a6932bf3.woff2 +0 -0
  928. package/src/styles/fonts/noto-serif-jp/700/c063897793f593eb26d6ff7b7baaba18.woff2 +0 -0
  929. package/src/styles/fonts/noto-serif-jp/700/c6c2971ad1f3221f6cf84028aa0f477e.woff2 +0 -0
  930. package/src/styles/fonts/noto-serif-jp/700/c97f41eef722121d86f55d553c056a39.woff2 +0 -0
  931. package/src/styles/fonts/noto-serif-jp/700/ca62704509932d3232d62918de97af3f.woff2 +0 -0
  932. package/src/styles/fonts/noto-serif-jp/700/d1f064825fa5784b5c930652bd831cce.woff2 +0 -0
  933. package/src/styles/fonts/noto-serif-jp/700/d2faabcedd19f016e7b21bce073c0ec8.woff2 +0 -0
  934. package/src/styles/fonts/noto-serif-jp/700/d320171e57480510f87dbbc7d5264b0a.woff2 +0 -0
  935. package/src/styles/fonts/noto-serif-jp/700/d3a72a99d365dddfbca8d017a8011368.woff2 +0 -0
  936. package/src/styles/fonts/noto-serif-jp/700/d42aafa0f246ad3b4c16fe96d3a3a432.woff2 +0 -0
  937. package/src/styles/fonts/noto-serif-jp/700/d4aaf23c13ae808a4bed617afd13aa07.woff2 +0 -0
  938. package/src/styles/fonts/noto-serif-jp/700/d6bb686bddfbe8f38a36a68e609a8667.woff2 +0 -0
  939. package/src/styles/fonts/noto-serif-jp/700/d9020ff69a83b2a6ee1f42ae480f7db0.woff2 +0 -0
  940. package/src/styles/fonts/noto-serif-jp/700/da90a9012ab2d98f759e3fa0820ef502.woff2 +0 -0
  941. package/src/styles/fonts/noto-serif-jp/700/df10d94bea357a43313e20da5d84bd30.woff2 +0 -0
  942. package/src/styles/fonts/noto-serif-jp/700/e34b2b141e472dc776c86fdf8eea23b0.woff2 +0 -0
  943. package/src/styles/fonts/noto-serif-jp/700/e444fd88f1390636e603d0d681538ac8.woff2 +0 -0
  944. package/src/styles/fonts/noto-serif-jp/700/e79898628283edc27180fc39d0d769c1.woff2 +0 -0
  945. package/src/styles/fonts/noto-serif-jp/700/eaf332445a40942928e5f5750c1c3116.woff2 +0 -0
  946. package/src/styles/fonts/noto-serif-jp/700/f91cd722855f4269256eae1187df64ec.woff2 +0 -0
  947. package/src/styles/fonts/noto-serif-jp/700/fc895f5ce66b656f4a933097bf2a8775.woff2 +0 -0
  948. package/src/styles/fonts/noto-serif-jp/700/fca6720fd14c467d29a90f18ef3859b9.woff2 +0 -0
  949. package/src/styles/fonts/noto-serif-jp/700/fd1bb507bcbf04856eeb7f7fd47ea579.woff2 +0 -0
  950. package/src/styles/fonts/noto-serif-jp/noto-serif-jp.css +3349 -0
  951. package/src/styles/fonts/noto-serif-kr/400/033466ef683afe931f7f520cfb42d928.woff2 +0 -0
  952. package/src/styles/fonts/noto-serif-kr/400/05da12edb9d52210581dc6ec4541031f.woff2 +0 -0
  953. package/src/styles/fonts/noto-serif-kr/400/0968e4861204b51f62a2f8e9f15dd5e0.woff2 +0 -0
  954. package/src/styles/fonts/noto-serif-kr/400/0d5dec931dc885f07fe5cd5af8bed675.woff2 +0 -0
  955. package/src/styles/fonts/noto-serif-kr/400/1076f0f6f66d28d7a2f16427faad4413.woff2 +0 -0
  956. package/src/styles/fonts/noto-serif-kr/400/12ef1ba76bd20b004b865266a1aa70b3.woff2 +0 -0
  957. package/src/styles/fonts/noto-serif-kr/400/152395634a207579552f8cb54db88599.woff2 +0 -0
  958. package/src/styles/fonts/noto-serif-kr/400/1a08931435f885e707edb85978ea3bb6.woff2 +0 -0
  959. package/src/styles/fonts/noto-serif-kr/400/31a197213ae61d7043c81013f52d10d6.woff2 +0 -0
  960. package/src/styles/fonts/noto-serif-kr/400/37dbd564820cce2f7b3331e442da0df3.woff2 +0 -0
  961. package/src/styles/fonts/noto-serif-kr/400/37dc8505b20b37a2477a9121b16d44a7.woff2 +0 -0
  962. package/src/styles/fonts/noto-serif-kr/400/3ac0a07878cacdc98bb889f40f5970d3.woff2 +0 -0
  963. package/src/styles/fonts/noto-serif-kr/400/491bbba374093fff045f55803a22bfef.woff2 +0 -0
  964. package/src/styles/fonts/noto-serif-kr/400/4d38e56738156625329d93bd5c8cc74a.woff2 +0 -0
  965. package/src/styles/fonts/noto-serif-kr/400/57e9a86651366c1ba299e47aa7e358c2.woff2 +0 -0
  966. package/src/styles/fonts/noto-serif-kr/400/57f89adeae55aa7fe2add3fc1801ce03.woff2 +0 -0
  967. package/src/styles/fonts/noto-serif-kr/400/5df9ce98c75f8c50fb4fff7f01a23925.woff2 +0 -0
  968. package/src/styles/fonts/noto-serif-kr/400/60020a830d809c26970cf8e48ba1eeda.woff2 +0 -0
  969. package/src/styles/fonts/noto-serif-kr/400/60bcfa3ea7446eb42394aab02d28be40.woff2 +0 -0
  970. package/src/styles/fonts/noto-serif-kr/400/63fafcb069520613d0ea35ad3e6b1e42.woff2 +0 -0
  971. package/src/styles/fonts/noto-serif-kr/400/65a60d87c64228d258a123cbe85f5f31.woff2 +0 -0
  972. package/src/styles/fonts/noto-serif-kr/400/6968e889e18891d912809fe484c2e745.woff2 +0 -0
  973. package/src/styles/fonts/noto-serif-kr/400/70714891ad3fbfc3d5f10a8669dacc5a.woff2 +0 -0
  974. package/src/styles/fonts/noto-serif-kr/400/761d84afca8d7f34eebefe538adba827.woff2 +0 -0
  975. package/src/styles/fonts/noto-serif-kr/400/76e07530323418ec723c5d7634c9bcca.woff2 +0 -0
  976. package/src/styles/fonts/noto-serif-kr/400/773819b7b9b8fd404a929867c0fd677e.woff2 +0 -0
  977. package/src/styles/fonts/noto-serif-kr/400/7817dd16805145d8538ad57590f69f5a.woff2 +0 -0
  978. package/src/styles/fonts/noto-serif-kr/400/7b59f0ec7792b18458dc5a361e37884c.woff2 +0 -0
  979. package/src/styles/fonts/noto-serif-kr/400/7c3945788a689a69356c1a622d69d48b.woff2 +0 -0
  980. package/src/styles/fonts/noto-serif-kr/400/835b6505bb9eea9678925a1fa885353d.woff2 +0 -0
  981. package/src/styles/fonts/noto-serif-kr/400/8b5c9ef81159f31d2ab35f45ca4373e0.woff2 +0 -0
  982. package/src/styles/fonts/noto-serif-kr/400/8b91c7c2ed390f1278b9befa3aa87233.woff2 +0 -0
  983. package/src/styles/fonts/noto-serif-kr/400/8fb45117a62d92dce44a80f0b729ead5.woff2 +0 -0
  984. package/src/styles/fonts/noto-serif-kr/400/90b7848e9b1623b77bdcf155e90b839c.woff2 +0 -0
  985. package/src/styles/fonts/noto-serif-kr/400/985d4d41afa0934a4eb2de35473fb9a2.woff2 +0 -0
  986. package/src/styles/fonts/noto-serif-kr/400/9bb38fd05201de666b88b82d56a386f7.woff2 +0 -0
  987. package/src/styles/fonts/noto-serif-kr/400/9eff2ab2a9d2ced47ab761bf6fdb11ec.woff2 +0 -0
  988. package/src/styles/fonts/noto-serif-kr/400/9f1963fe8d4d6878d717d872a8f3fdb5.woff2 +0 -0
  989. package/src/styles/fonts/noto-serif-kr/400/a0d00fe4816c95a8c7dffd445ef00b03.woff2 +0 -0
  990. package/src/styles/fonts/noto-serif-kr/400/a0f199077fa1a33bc2a1e01c64de7fe6.woff2 +0 -0
  991. package/src/styles/fonts/noto-serif-kr/400/a7c35e42a659347e490c3cb7983b2e7f.woff2 +0 -0
  992. package/src/styles/fonts/noto-serif-kr/400/aa662092cf249707123ca4d575e2764b.woff2 +0 -0
  993. package/src/styles/fonts/noto-serif-kr/400/aae1eda193285ab817a2d1b408440326.woff2 +0 -0
  994. package/src/styles/fonts/noto-serif-kr/400/b0cb664cb2e1371efda8943c0b7dcd1c.woff2 +0 -0
  995. package/src/styles/fonts/noto-serif-kr/400/b0d1cdced482352cf0d3ae58638aacb9.woff2 +0 -0
  996. package/src/styles/fonts/noto-serif-kr/400/b320f5d185b2cff933ac549c184031c5.woff2 +0 -0
  997. package/src/styles/fonts/noto-serif-kr/400/ba9c59d7dfa4494db1bb764ada81467d.woff2 +0 -0
  998. package/src/styles/fonts/noto-serif-kr/400/bab547459d514f46206e340c4bb2dc88.woff2 +0 -0
  999. package/src/styles/fonts/noto-serif-kr/400/bcc39eda837bb7a7a3d37c8c60fffb81.woff2 +0 -0
  1000. package/src/styles/fonts/noto-serif-kr/400/bd73264d7f98776708d5d6f3c9b78fcc.woff2 +0 -0
  1001. package/src/styles/fonts/noto-serif-kr/400/bed610b217d500f5975cfc9fe6157570.woff2 +0 -0
  1002. package/src/styles/fonts/noto-serif-kr/400/bf8901f8f11d4f433ea17dabc9370ea6.woff2 +0 -0
  1003. package/src/styles/fonts/noto-serif-kr/400/c4143bb9f2fe77b6ccf20088a8904650.woff2 +0 -0
  1004. package/src/styles/fonts/noto-serif-kr/400/c7ff3f6bbdcd5f604b7343602ab904df.woff2 +0 -0
  1005. package/src/styles/fonts/noto-serif-kr/400/c945c62368357d05a53206620460fb30.woff2 +0 -0
  1006. package/src/styles/fonts/noto-serif-kr/400/ce022e18a1377ac509443c3c3790b431.woff2 +0 -0
  1007. package/src/styles/fonts/noto-serif-kr/400/cf9cffe56636322f62b40d61130fbc5e.woff2 +0 -0
  1008. package/src/styles/fonts/noto-serif-kr/400/d20d8944bc0b85f5b2aae4b24f343516.woff2 +0 -0
  1009. package/src/styles/fonts/noto-serif-kr/400/d36644d6502527e1fff205d0c7eca434.woff2 +0 -0
  1010. package/src/styles/fonts/noto-serif-kr/400/d40ab99c7a38026f411c8f112f742b48.woff2 +0 -0
  1011. package/src/styles/fonts/noto-serif-kr/400/dc6e234ded795e91f76d6647f628fbf0.woff2 +0 -0
  1012. package/src/styles/fonts/noto-serif-kr/400/dd0cfdfdac0866e66d587e2b5a9e9961.woff2 +0 -0
  1013. package/src/styles/fonts/noto-serif-kr/400/de304c8a02e45ded4f8dcc479d167198.woff2 +0 -0
  1014. package/src/styles/fonts/noto-serif-kr/400/e8c364c16daa04835bf32d293d2598db.woff2 +0 -0
  1015. package/src/styles/fonts/noto-serif-kr/400/ec86e23683052da5cfdc3b77641bd15a.woff2 +0 -0
  1016. package/src/styles/fonts/noto-serif-kr/400/eda1b0cb6d1719dd9bedcf3216a9e8de.woff2 +0 -0
  1017. package/src/styles/fonts/noto-serif-kr/400/ee6fce20b420a480714607c66d7f97e5.woff2 +0 -0
  1018. package/src/styles/fonts/noto-serif-kr/400/eee3836d6ac17ebb2c450bbcbc9db121.woff2 +0 -0
  1019. package/src/styles/fonts/noto-serif-kr/400/f5738255e92d8dd34a46d1bcdf4c4074.woff2 +0 -0
  1020. package/src/styles/fonts/noto-serif-kr/400/fa6e58ce4b52695e7ae19bbea6336ec8.woff2 +0 -0
  1021. package/src/styles/fonts/noto-serif-kr/400/fd2069e6e8588c70b4f11364093b81f2.woff2 +0 -0
  1022. package/src/styles/fonts/noto-serif-kr/700/04b8bde59cff68eeee74fb1914eb09c7.woff2 +0 -0
  1023. package/src/styles/fonts/noto-serif-kr/700/05ac821472e235943ed1435e4bb8ecad.woff2 +0 -0
  1024. package/src/styles/fonts/noto-serif-kr/700/074c1f8483d5a4d8c45c8c5f3e4cbb32.woff2 +0 -0
  1025. package/src/styles/fonts/noto-serif-kr/700/1380210a722ac9aeef54005ad7b015c9.woff2 +0 -0
  1026. package/src/styles/fonts/noto-serif-kr/700/17c7f5d0a45e92ede0e5dec3a2c77efa.woff2 +0 -0
  1027. package/src/styles/fonts/noto-serif-kr/700/1be602ad456b0d75902d352116cb35fd.woff2 +0 -0
  1028. package/src/styles/fonts/noto-serif-kr/700/2612c60f9dc5459ac42763591240a1d6.woff2 +0 -0
  1029. package/src/styles/fonts/noto-serif-kr/700/2ab8cf1f23a5ac7939a7876054e711a7.woff2 +0 -0
  1030. package/src/styles/fonts/noto-serif-kr/700/34e6750e00c3a911ef87dc66b336594d.woff2 +0 -0
  1031. package/src/styles/fonts/noto-serif-kr/700/36f3df4730cfca4fc77fe52b52e6a126.woff2 +0 -0
  1032. package/src/styles/fonts/noto-serif-kr/700/37887deb7a9c466cf2af6ee7ff372ea6.woff2 +0 -0
  1033. package/src/styles/fonts/noto-serif-kr/700/3aba89c4d4281553078de4622b498cbb.woff2 +0 -0
  1034. package/src/styles/fonts/noto-serif-kr/700/3d88558097559d775231194d43745ba7.woff2 +0 -0
  1035. package/src/styles/fonts/noto-serif-kr/700/3dc3e8c35524cad2d1236f3393104ccf.woff2 +0 -0
  1036. package/src/styles/fonts/noto-serif-kr/700/45140742dfa8686b58db2899ce89f89a.woff2 +0 -0
  1037. package/src/styles/fonts/noto-serif-kr/700/469d2754e315e77270c12fa0ab28026c.woff2 +0 -0
  1038. package/src/styles/fonts/noto-serif-kr/700/4c0760284569b87d8f2290c324953973.woff2 +0 -0
  1039. package/src/styles/fonts/noto-serif-kr/700/4cba92c942694bdc479bc54101bb1aa4.woff2 +0 -0
  1040. package/src/styles/fonts/noto-serif-kr/700/4e7d263c30bb48604069a3b4404d4eeb.woff2 +0 -0
  1041. package/src/styles/fonts/noto-serif-kr/700/5279c7e465d9871edf51fd02e691eee7.woff2 +0 -0
  1042. package/src/styles/fonts/noto-serif-kr/700/54bfdb6f21f9d6191e5100580239e14f.woff2 +0 -0
  1043. package/src/styles/fonts/noto-serif-kr/700/56be5e32fd01668fe5ba814d94905839.woff2 +0 -0
  1044. package/src/styles/fonts/noto-serif-kr/700/615b38e0b5bb3ea68426f44f47706e6f.woff2 +0 -0
  1045. package/src/styles/fonts/noto-serif-kr/700/65e9c4585d71bf48a5c62f367010da16.woff2 +0 -0
  1046. package/src/styles/fonts/noto-serif-kr/700/6b75213eb0be40ce84241eb2bb438a2e.woff2 +0 -0
  1047. package/src/styles/fonts/noto-serif-kr/700/7520ca6ca8c60eb1e62d50e71c8d30f1.woff2 +0 -0
  1048. package/src/styles/fonts/noto-serif-kr/700/759a647b77791b1e98f99bc0ab5317a7.woff2 +0 -0
  1049. package/src/styles/fonts/noto-serif-kr/700/76e51630143b95b6322ef93ad330da7a.woff2 +0 -0
  1050. package/src/styles/fonts/noto-serif-kr/700/79aa7c8c842c4a27cf57c0a3a1ffca5a.woff2 +0 -0
  1051. package/src/styles/fonts/noto-serif-kr/700/7cc72fd2c9105560422b6a67c6162945.woff2 +0 -0
  1052. package/src/styles/fonts/noto-serif-kr/700/7d0ea0690e432462f4d05a23d720ec19.woff2 +0 -0
  1053. package/src/styles/fonts/noto-serif-kr/700/7dffa5c1bec57e0903fd62357401ff1a.woff2 +0 -0
  1054. package/src/styles/fonts/noto-serif-kr/700/82f6ccc063960eed1cdfd1d61ada8862.woff2 +0 -0
  1055. package/src/styles/fonts/noto-serif-kr/700/845b4b67564d62cf5cad242f7ac08ea5.woff2 +0 -0
  1056. package/src/styles/fonts/noto-serif-kr/700/84c8e7bc0931008ed91f44ed12dfea94.woff2 +0 -0
  1057. package/src/styles/fonts/noto-serif-kr/700/887a11290ba78b1e66c6d2f67043005e.woff2 +0 -0
  1058. package/src/styles/fonts/noto-serif-kr/700/88db1d042074fb6e66821ffc10941930.woff2 +0 -0
  1059. package/src/styles/fonts/noto-serif-kr/700/8dc18c0cebe6aa4bf4c45dbb831048ab.woff2 +0 -0
  1060. package/src/styles/fonts/noto-serif-kr/700/919a879bd2d580d8491a31a449390689.woff2 +0 -0
  1061. package/src/styles/fonts/noto-serif-kr/700/91da6cb174bebfb96976e2f1316be2fe.woff2 +0 -0
  1062. package/src/styles/fonts/noto-serif-kr/700/934dfdbed2bb2c4b6129199d699a34fa.woff2 +0 -0
  1063. package/src/styles/fonts/noto-serif-kr/700/97d7a17234f2b5030ae9697ae00aded2.woff2 +0 -0
  1064. package/src/styles/fonts/noto-serif-kr/700/995c4fda62d25c3b79dd5987737df6ae.woff2 +0 -0
  1065. package/src/styles/fonts/noto-serif-kr/700/9d0afa53dc2f92ba42024f55f11f6779.woff2 +0 -0
  1066. package/src/styles/fonts/noto-serif-kr/700/9e13a47242926f1cd7d68c08d9ef8889.woff2 +0 -0
  1067. package/src/styles/fonts/noto-serif-kr/700/a379ada89abd750c587ded29f77e731c.woff2 +0 -0
  1068. package/src/styles/fonts/noto-serif-kr/700/a48be56ce5d3a99dc8f8331398004412.woff2 +0 -0
  1069. package/src/styles/fonts/noto-serif-kr/700/a806759e72987951d6d08b7cbdf36a1b.woff2 +0 -0
  1070. package/src/styles/fonts/noto-serif-kr/700/a88481ec8bc7be11cb66e46781a79bb9.woff2 +0 -0
  1071. package/src/styles/fonts/noto-serif-kr/700/a9a016d4a93409f65278327e8a8bb38d.woff2 +0 -0
  1072. package/src/styles/fonts/noto-serif-kr/700/ab92d41062a7644faa45f50bf384454a.woff2 +0 -0
  1073. package/src/styles/fonts/noto-serif-kr/700/b326a8a9c33b554db570da94f60bc380.woff2 +0 -0
  1074. package/src/styles/fonts/noto-serif-kr/700/b6117ff2993b11bb1fdc7ea3588a010c.woff2 +0 -0
  1075. package/src/styles/fonts/noto-serif-kr/700/b61982951bd51b724143c30dfaaa9fe9.woff2 +0 -0
  1076. package/src/styles/fonts/noto-serif-kr/700/c0098958e20db68cab90097b5e62516f.woff2 +0 -0
  1077. package/src/styles/fonts/noto-serif-kr/700/c4bfaa5e50798246e3770718b7a7c84a.woff2 +0 -0
  1078. package/src/styles/fonts/noto-serif-kr/700/c84598999133455503042e06f4ab79cb.woff2 +0 -0
  1079. package/src/styles/fonts/noto-serif-kr/700/ca9a533988d7019597a60d4e17127e0c.woff2 +0 -0
  1080. package/src/styles/fonts/noto-serif-kr/700/cf2b28f90f47276f7e2688a65e88a101.woff2 +0 -0
  1081. package/src/styles/fonts/noto-serif-kr/700/d689b1861d7e4377dd72ad3013482612.woff2 +0 -0
  1082. package/src/styles/fonts/noto-serif-kr/700/d9047070d72a816b3dba9d40c2d85e69.woff2 +0 -0
  1083. package/src/styles/fonts/noto-serif-kr/700/da04549f3f4ed28076b01b8cd710d313.woff2 +0 -0
  1084. package/src/styles/fonts/noto-serif-kr/700/da7af303f8c645f9a9dbae0e6e32dd35.woff2 +0 -0
  1085. package/src/styles/fonts/noto-serif-kr/700/df9568257eb29b156449fdd4bec5ec76.woff2 +0 -0
  1086. package/src/styles/fonts/noto-serif-kr/700/e067cd0ed76c90cd0a93c9339253f20b.woff2 +0 -0
  1087. package/src/styles/fonts/noto-serif-kr/700/e08b07772e7bed3cec2832d43f7fd339.woff2 +0 -0
  1088. package/src/styles/fonts/noto-serif-kr/700/e12150d5a39b30be8f567968c7a527b0.woff2 +0 -0
  1089. package/src/styles/fonts/noto-serif-kr/700/e53fcb2381eee345db4f6f973dd95a3e.woff2 +0 -0
  1090. package/src/styles/fonts/noto-serif-kr/700/e5bd313ef81f687d398aacb11cec3069.woff2 +0 -0
  1091. package/src/styles/fonts/noto-serif-kr/700/eb5afb3d952b8593782caec6026514b6.woff2 +0 -0
  1092. package/src/styles/fonts/noto-serif-kr/700/edd6a4f608d04fc0351d7688cfc321e4.woff2 +0 -0
  1093. package/src/styles/fonts/noto-serif-kr/700/f9695c6c4df2bf6bc03045ff79d4f01f.woff2 +0 -0
  1094. package/src/styles/fonts/noto-serif-kr/700/fada6eaa68ff8816afe43d2a36c5423e.woff2 +0 -0
  1095. package/src/styles/fonts/noto-serif-kr/700/fbcc4bf5367218951172bdee6f77d7a6.woff2 +0 -0
  1096. package/src/styles/fonts/noto-serif-kr/noto-serif-kr.css +2601 -0
  1097. package/src/styles/site-media.css +823 -0
  1098. package/src/styles/tokens.css +292 -21
  1099. package/src/styles/ui.css +4188 -1857
  1100. package/src/types/app-context.ts +20 -0
  1101. package/src/types/bindings.ts +3 -1
  1102. package/src/types/config.ts +147 -9
  1103. package/src/types/constants.ts +46 -11
  1104. package/src/types/entities.ts +24 -8
  1105. package/src/types/operations.ts +80 -1
  1106. package/src/types/props.ts +10 -9
  1107. package/src/types/raw-assets.d.ts +39 -0
  1108. package/src/types/views.ts +28 -7
  1109. package/src/ui/__tests__/color-themes.test.ts +7 -40
  1110. package/src/ui/__tests__/font-themes.test.ts +30 -11
  1111. package/src/ui/color-themes.ts +311 -270
  1112. package/src/ui/compose/ComposeDialog.tsx +712 -394
  1113. package/src/ui/compose/ComposePrompt.tsx +15 -10
  1114. package/src/ui/dash/ActionButtons.tsx +27 -18
  1115. package/src/ui/dash/DangerZone.tsx +15 -10
  1116. package/src/ui/dash/FormatBadge.tsx +21 -8
  1117. package/src/ui/dash/StatusBadge.tsx +33 -22
  1118. package/src/ui/dash/appearance/AdvancedContent.tsx +44 -30
  1119. package/src/ui/dash/appearance/CodeInjectionContent.tsx +164 -0
  1120. package/src/ui/dash/appearance/ColorThemeContent.tsx +127 -160
  1121. package/src/ui/dash/appearance/FontThemeContent.tsx +20 -15
  1122. package/src/ui/dash/appearance/NavigationContent.tsx +368 -225
  1123. package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +54 -0
  1124. package/src/ui/dash/settings/AccountContent.tsx +34 -23
  1125. package/src/ui/dash/settings/AccountMenuContent.tsx +226 -137
  1126. package/src/ui/dash/settings/ApiTokensContent.tsx +122 -79
  1127. package/src/ui/dash/settings/AvatarContent.tsx +73 -45
  1128. package/src/ui/dash/settings/DeleteAccountContent.tsx +106 -66
  1129. package/src/ui/dash/settings/GeneralContent.tsx +274 -157
  1130. package/src/ui/dash/settings/GitHubSyncContent.tsx +558 -0
  1131. package/src/ui/dash/settings/SessionsContent.tsx +79 -38
  1132. package/src/ui/dash/settings/SettingsRootContent.tsx +209 -109
  1133. package/src/ui/dash/settings/__tests__/AccountMenuContent.test.tsx +67 -0
  1134. package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +75 -0
  1135. package/src/ui/feed/CuratedThreadPreview.tsx +24 -14
  1136. package/src/ui/feed/LinkCard.tsx +116 -84
  1137. package/src/ui/feed/LinkPreview.tsx +75 -0
  1138. package/src/ui/feed/NoteCard.tsx +60 -16
  1139. package/src/ui/feed/PostStatusBadges.tsx +15 -0
  1140. package/src/ui/feed/QuoteCard.tsx +10 -3
  1141. package/src/ui/feed/ThreadPreview.tsx +62 -36
  1142. package/src/ui/feed/TimelineFeed.tsx +2 -1
  1143. package/src/ui/feed/__tests__/thread-preview.test.ts +220 -11
  1144. package/src/ui/feed/__tests__/timeline-cards.test.ts +186 -5
  1145. package/src/ui/feed/thread-preview-state.ts +23 -10
  1146. package/src/ui/font-themes.ts +57 -97
  1147. package/src/ui/layouts/BaseLayout.tsx +230 -136
  1148. package/src/ui/layouts/SiteLayout.tsx +431 -143
  1149. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +76 -6
  1150. package/src/ui/layouts/__tests__/SiteLayout.test.tsx +76 -0
  1151. package/src/ui/pages/ArchivePage.tsx +320 -207
  1152. package/src/ui/pages/BrandPage.tsx +499 -341
  1153. package/src/ui/pages/CollectionEditorPage.tsx +50 -30
  1154. package/src/ui/pages/CollectionPage.tsx +151 -78
  1155. package/src/ui/pages/CollectionsPage.tsx +27 -18
  1156. package/src/ui/pages/ComposePage.tsx +15 -10
  1157. package/src/ui/pages/FeaturedPage.tsx +16 -11
  1158. package/src/ui/pages/HomePage.tsx +15 -10
  1159. package/src/ui/pages/PostPage.tsx +5 -1
  1160. package/src/ui/pages/SearchPage.tsx +93 -43
  1161. package/src/ui/pages/ThemeSamplePage.tsx +758 -520
  1162. package/src/ui/pages/__tests__/ArchivePage.test.tsx +72 -0
  1163. package/src/ui/shared/CollectionDirectory.tsx +215 -34
  1164. package/src/ui/shared/CollectionsManager.tsx +155 -75
  1165. package/src/ui/shared/DecorativeQuoteMark.tsx +12 -9
  1166. package/src/ui/shared/MediaGallery.tsx +350 -256
  1167. package/src/ui/shared/Pagination.tsx +36 -25
  1168. package/src/ui/shared/PostFooter.tsx +139 -96
  1169. package/src/ui/shared/__tests__/media-gallery.test.ts +27 -0
  1170. package/src/ui/shared/__tests__/navigation-labels.test.ts +79 -28
  1171. package/src/ui/shared/__tests__/post-footer.test.ts +42 -17
  1172. package/src/ui/shared/collection-management-labels.ts +109 -33
  1173. package/src/ui/shared/navigation-labels.ts +78 -8
  1174. package/bin/lib/site-localize-media.js +0 -427
  1175. package/dist/client/_assets/client-auth.js +0 -3260
  1176. package/dist/client/_assets/client.css +0 -2
  1177. package/dist/client/_assets/client.js +0 -380
  1178. package/src/__tests__/site-localize-media.test.ts +0 -150
  1179. package/src/client/components/jant-collection-sidebar.ts +0 -816
  1180. package/src/i18n/locales/en.ts +0 -1
  1181. package/src/i18n/locales/zh-Hans.po +0 -3197
  1182. package/src/i18n/locales/zh-Hans.ts +0 -1
  1183. package/src/i18n/locales/zh-Hant.po +0 -3197
  1184. package/src/i18n/locales/zh-Hant.ts +0 -1
  1185. package/src/routes/feed/rss.ts +0 -216
  1186. package/src/types/lingui-react-macro.d.ts +0 -34
  1187. /package/dist/client/_assets/chunks/{heic-to-XcUDQvtx.js → heic-to-DUUaO23q.js} +0 -0
  1188. /package/dist/client/_assets/chunks/{module-ChVQstFd.js → module-DcsAZQZ_.js} +0 -0
  1189. /package/dist/client/_assets/chunks/{native-CR5HLOyf.js → native-DpcrFAPh.js} +0 -0
  1190. /package/dist/client/_assets/{client-cjk.css → client-cjk-B7Z0snDu.css} +0 -0
  1191. /package/dist/client/_assets/{client-cjk-tc.css → client-cjk-tc-BesJYrb2.css} +0 -0
@@ -1,3197 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "POT-Creation-Date: 2026-03-09 00:37+0800\n"
4
- "MIME-Version: 1.0\n"
5
- "Content-Type: text/plain; charset=utf-8\n"
6
- "Content-Transfer-Encoding: 8bit\n"
7
- "X-Generator: lingui-po-translate\n"
8
- "Language: zh-Hans\n"
9
- "Project-Id-Version: \n"
10
- "Report-Msgid-Bugs-To: \n"
11
- "PO-Revision-Date: \n"
12
- "Last-Translator: \n"
13
- "Language-Team: \n"
14
- "Plural-Forms: \n"
15
-
16
- #. @context: Link showing count of hidden thread posts between curated posts
17
- #. placeholder {0}: segment.hiddenBeforeCount
18
- #. placeholder {1}: segment.hiddenBeforeCount === 1 ? "post" : "posts"
19
- #: src/ui/feed/CuratedThreadPreview.tsx
20
- msgid "{0} hidden {1}"
21
- msgstr "隐藏了 {0} 条"
22
-
23
- #. @context: Link showing count of hidden thread posts between root and latest
24
- #. placeholder {0}: hiddenCount === 1 ? "post" : "posts"
25
- #: src/ui/feed/ThreadPreview.tsx
26
- msgid "{hiddenCount} more {0}"
27
- msgstr "{hiddenCount} 条隐藏的 {0}"
28
-
29
- #. @context: Custom CSS textarea placeholder
30
- #: src/ui/dash/appearance/AdvancedContent.tsx
31
- msgid "/* Your custom CSS here */"
32
- msgstr "/* 在此添加自定义 CSS */"
33
-
34
- #. @context: Compose collection trigger label when multiple collections selected. %name% is the first collection name, %count% is how many more
35
- #: src/ui/compose/ComposeDialog.tsx
36
- msgid "%name% + %count% more"
37
- msgstr "%name% + 另有 %count% 个"
38
-
39
- #. @context: Add alt text label under attachment thumbnail
40
- #: src/ui/compose/ComposeDialog.tsx
41
- msgid "+ ALT"
42
- msgstr "+ 替代文本"
43
-
44
- #. @context: Redirect type option
45
- #: src/routes/dash/custom-urls.tsx
46
- msgid "301 (Permanent)"
47
- msgstr "301 (永久)"
48
-
49
- #. @context: Redirect type option
50
- #: src/routes/dash/custom-urls.tsx
51
- msgid "302 (Temporary)"
52
- msgstr "302 (临时)"
53
-
54
- #. @context: Search snippet prefix on sample page
55
- #: src/ui/pages/ThemeSamplePage.tsx
56
- msgid "A calmer accent makes"
57
- msgstr "更柔和的强调色会让"
58
-
59
- #. @context: Excerpt for the sample note post
60
- #. @context: Plain-text summary for the sample note post
61
- #: src/ui/pages/ThemeSamplePage.tsx
62
- #: src/ui/pages/ThemeSamplePage.tsx
63
- msgid "A calmer, warmer accent makes the default theme feel quieter and more intentional."
64
- msgstr "更平静、更温暖的强调色,让默认主题更安静,也更有分寸。"
65
-
66
- #. @context: Section title for the usage guidance section on the brand asset page
67
- #: src/ui/pages/BrandPage.tsx
68
- msgid "A few simple rules."
69
- msgstr "几条简单规则."
70
-
71
- #. @context: Second paragraph on the sample detail article
72
- #: src/ui/pages/ThemeSamplePage.tsx
73
- msgid "A good default accent in Jant should feel like editorial structure, not product branding. That means links, emphasis, and thread cues can be visible without turning the page into UI chrome."
74
- msgstr "Jant 中合适的默认强调应该更像编辑结构,而不是产品品牌化。这意味着链接、强调和帖子串提示可以可见,同时不会把页面变成界面装饰"
75
-
76
- #. @context: Excerpt for the sample detail article
77
- #. @context: Plain-text body fallback for the sample detail article
78
- #. @context: Plain-text summary for the sample detail article
79
- #: src/ui/pages/ThemeSamplePage.tsx
80
- #: src/ui/pages/ThemeSamplePage.tsx
81
- #: src/ui/pages/ThemeSamplePage.tsx
82
- msgid "A long-form article sample for checking the default palette in a true reading context."
83
- msgstr "用于在真实阅读环境中检查默认调色板的长篇文章示例。"
84
-
85
- #. @context: Subheading in the sample detail article
86
- #: src/ui/pages/ThemeSamplePage.tsx
87
- msgid "A practical checklist"
88
- msgstr "实用清单"
89
-
90
- #. @context: Excerpt for the sample quote post
91
- #. @context: Plain-text summary for the sample quote post
92
- #: src/ui/pages/ThemeSamplePage.tsx
93
- #: src/ui/pages/ThemeSamplePage.tsx
94
- msgid "A quote card for judging accent color against softer, citation-heavy content."
95
- msgstr "用于在更柔和、引用密集的内容上评估强调色的引用卡片。"
96
-
97
- #. @context: Description for the square logo PNG asset card
98
- #: src/ui/pages/BrandPage.tsx
99
- msgid "A ready-made 1:1 PNG for decks, mockups, directories, and other square placements."
100
- msgstr "现成的 1:1 PNG,适用于演示文稿、样机、名录及其他方形展示场景。"
101
-
102
- #. @context: Excerpt for the sample link post
103
- #. @context: Plain-text summary for the sample link post
104
- #: src/ui/pages/ThemeSamplePage.tsx
105
- #: src/ui/pages/ThemeSamplePage.tsx
106
- msgid "A reference link for checking whether the accent feels editorial instead of promotional."
107
- msgstr "用于检查语气是否偏向编辑性而非宣传性的参考链接"
108
-
109
- #. @context: Help text for site description field
110
- #: src/ui/dash/settings/GeneralContent.tsx
111
- msgid "A short intro for search engines and feed readers. Plain text only."
112
- msgstr "供搜索引擎和订阅源阅读器使用的简短简介。仅限纯文本。"
113
-
114
- #. @context: Description for the brand pack card
115
- #: src/ui/pages/BrandPage.tsx
116
- msgid "A single ZIP with the main logo, reverse logo, square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and social preview image."
117
- msgstr "一个 ZIP 文件,包含主标志、反向标志、方形 PNG、圆角方形和圆形图块,以及 favicon、Apple Touch 图标和社交预览图片。"
118
-
119
- #. @context: Main sample article title
120
- #: src/ui/pages/ThemeSamplePage.tsx
121
- msgid "A softer blue feels more like ink than product chrome."
122
- msgstr "较柔和的蓝色感觉更像墨水,而不是产品镀铬的光泽。"
123
-
124
- #. @context: Settings form field for site description
125
- #: src/ui/dash/settings/GeneralContent.tsx
126
- msgid "About this blog"
127
- msgstr "关于此博客"
128
-
129
- #. @context: Thread helper text on sample page
130
- #: src/ui/pages/ThemeSamplePage.tsx
131
- msgid "Accent should feel present, not loud."
132
- msgstr "强调色应当有存在感,但不要太刺眼。"
133
-
134
- #. @context: Page title for the account settings menu
135
- #. @context: Settings group label for account settings
136
- #. @context: Settings item — account settings
137
- #: src/ui/dash/settings/AccountMenuContent.tsx
138
- #: src/ui/dash/settings/SettingsRootContent.tsx
139
- #: src/ui/dash/settings/SettingsRootContent.tsx
140
- msgid "Account"
141
- msgstr "账户"
142
-
143
- #. @context: Error shown when account deletion is blocked in demo mode
144
- #: src/routes/dash/settings.tsx
145
- msgid "Account deletion is off in demo mode. The shared demo resets separately."
146
- msgstr "演示模式下不提供删除账户。共享演示会单独重置。"
147
-
148
- #. @context: Settings section heading for active sessions
149
- #: src/ui/dash/settings/SessionsContent.tsx
150
- msgid "Active Sessions"
151
- msgstr "活动会话"
152
-
153
- #. @context: Heading for list of active API tokens
154
- #: src/ui/dash/settings/ApiTokensContent.tsx
155
- msgid "Active Tokens"
156
- msgstr "有效 API 令牌"
157
-
158
- #. @context: Add more attachments button
159
- #: src/ui/compose/ComposeDialog.tsx
160
- msgid "Add"
161
- msgstr "添加"
162
-
163
- #. @context: Description in link popover form
164
- #: src/ui/dash/appearance/NavigationContent.tsx
165
- msgid "Add a custom link to any URL"
166
- msgstr "添加指向任意 URL 的自定义链接"
167
-
168
- #. @context: Description for the RSS system navigation toggle
169
- #: src/ui/shared/navigation-labels.ts
170
- msgid "Add a link to your main RSS feed. Change what /feed returns in General."
171
- msgstr "添加指向主 RSS feed 的链接。可在通用设置中修改 /feed 的输出内容。"
172
-
173
- #. @context: Compose link title required error
174
- #: src/ui/compose/ComposeDialog.tsx
175
- msgid "Add a title before posting this link."
176
- msgstr "先补上标题,再发布这条链接。"
177
-
178
- #. @context: Compose link URL required error
179
- #: src/ui/compose/ComposeDialog.tsx
180
- msgid "Add a URL before posting this link."
181
- msgstr "先补上 URL,再发布这条链接。"
182
-
183
- #. @context: Alt text panel title
184
- #: src/ui/compose/ComposeDialog.tsx
185
- msgid "Add alt text"
186
- msgstr "添加替代文本"
187
-
188
- #. @context: Action to create a new collection from compose
189
- #: src/ui/compose/ComposeDialog.tsx
190
- msgid "Add Collection"
191
- msgstr "添加合集"
192
-
193
- #. @context: Custom CSS settings description
194
- #: src/ui/dash/appearance/AdvancedContent.tsx
195
- msgid "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
196
- msgstr "添加自定义 CSS 来覆盖任何样式。使用诸如 [data-page], [data-post], [data-format] 的数据属性来定位特定元素。"
197
-
198
- #. @context: Section heading for adding custom link to nav
199
- #: src/ui/dash/appearance/NavigationContent.tsx
200
- msgid "Add custom link to navigation"
201
- msgstr "向导航添加自定义链接"
202
-
203
- #. @context: Button and heading for adding custom link
204
- #: src/ui/dash/appearance/NavigationContent.tsx
205
- msgid "Add Link"
206
- msgstr "添加链接"
207
-
208
- #. @context: Settings group label for advanced settings
209
- #: src/ui/dash/settings/SettingsRootContent.tsx
210
- msgid "Advanced"
211
- msgstr "高级"
212
-
213
- #. @context: Description after API reference link
214
- #: src/ui/dash/settings/ApiTokensContent.tsx
215
- msgid "all available endpoints and request formats."
216
- msgstr "所有可用的端点和请求格式。"
217
-
218
- #. @context: Archive filter - collection dropdown default
219
- #: src/ui/pages/ArchivePage.tsx
220
- msgid "All collections"
221
- msgstr "所有合集"
222
-
223
- #. @context: Archive filter - all formats select option
224
- #: src/ui/pages/ArchivePage.tsx
225
- msgid "All formats"
226
- msgstr "所有格式"
227
-
228
- #. @context: Archive filter - all visibility select option
229
- #: src/ui/pages/ArchivePage.tsx
230
- msgid "All visibility"
231
- msgstr "所有可见性"
232
-
233
- #. @context: Archive filter - year dropdown default
234
- #: src/ui/pages/ArchivePage.tsx
235
- msgid "All years"
236
- msgstr "所有年份"
237
-
238
- #. @context: Checkbox for allowing search engine indexing
239
- #: src/ui/dash/settings/GeneralContent.tsx
240
- msgid "Allow search engines to index my site"
241
- msgstr "允许搜索引擎收录我的网站"
242
-
243
- #. @context: Theme mode option description
244
- #: src/ui/dash/appearance/ColorThemeContent.tsx
245
- msgid "Always show the dark version of the theme."
246
- msgstr "始终显示主题的深色版本。"
247
-
248
- #. @context: Theme mode option description
249
- #: src/ui/dash/appearance/ColorThemeContent.tsx
250
- msgid "Always show the light version of the theme."
251
- msgstr "始终显示主题的浅色版本。"
252
-
253
- #. @context: Alt text for the sample detail article image
254
- #: src/ui/pages/ThemeSamplePage.tsx
255
- msgid "An abstract editorial layout in warm paper colors"
256
- msgstr "以温暖纸色调呈现的抽象社论布局"
257
-
258
- #. @context: Button label for opening the hidden collection list in the post footer
259
- #: src/ui/shared/PostFooter.tsx
260
- msgid "and {count} more"
261
- msgstr "以及另外 {count} 个"
262
-
263
- #. @context: Sample link post body suffix on the theme sample page
264
- #: src/ui/pages/ThemeSamplePage.tsx
265
- msgid "and checking whether the accent is guiding attention or pulling too hard."
266
- msgstr "并检查强调色是在引导注意力还是过于抢眼。"
267
-
268
- #. @context: Link to API documentation
269
- #: src/ui/dash/settings/ApiTokensContent.tsx
270
- msgid "API reference"
271
- msgstr "API 文档"
272
-
273
- #. @context: Settings item — API token settings
274
- #. @context: Settings section heading
275
- #: src/ui/dash/settings/ApiTokensContent.tsx
276
- #: src/ui/dash/settings/SettingsRootContent.tsx
277
- msgid "API Tokens"
278
- msgstr "API 令牌"
279
-
280
- #. @context: Settings group label for design settings
281
- #: src/ui/dash/settings/SettingsRootContent.tsx
282
- msgid "Appearance"
283
- msgstr "外观"
284
-
285
- #. @context: Compose publish settings help text for public visibility
286
- #: src/ui/compose/ComposeDialog.tsx
287
- msgid "Appears in Latest."
288
- msgstr "会出现在 Latest 中。"
289
-
290
- #. @context: Title for the apple touch icon asset card
291
- #: src/ui/pages/BrandPage.tsx
292
- msgid "Apple touch icon"
293
- msgstr "Apple Touch 图标"
294
-
295
- #. @context: Appearance settings description
296
- #: src/ui/dash/appearance/ColorThemeContent.tsx
297
- msgid "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
298
- msgstr "应用到整个站点,包括管理页面。先选择配色,再决定是跟随系统还是固定模式。"
299
-
300
- #. @context: Archive page title
301
- #. @context: Built-in navigation label for the archive page
302
- #. @context: Inactive nav link label on sample page
303
- #: src/ui/pages/ArchivePage.tsx
304
- #: src/ui/pages/ThemeSamplePage.tsx
305
- #: src/ui/shared/navigation-labels.ts
306
- msgid "Archive"
307
- msgstr "归档"
308
-
309
- #. @context: Section heading for the detail article sample on the theme sample page
310
- #: src/ui/pages/ThemeSamplePage.tsx
311
- msgid "Article detail page"
312
- msgstr "文章详情页"
313
-
314
- #. @context: Archive media filter - audio
315
- #: src/ui/pages/ArchivePage.tsx
316
- msgid "Audio"
317
- msgstr "音频"
318
-
319
- #. @context: Error toast when authentication secret is missing from server config
320
- #: src/routes/auth/setup.tsx
321
- msgid "Auth secret is missing. Check your environment variables."
322
- msgstr "身份验证密钥缺失. 检查你的环境变量."
323
-
324
- #. @context: Error toast when authentication system is unavailable
325
- #: src/routes/auth/signin.tsx
326
- msgid "Authentication isn't set up. Check your server config."
327
- msgstr "未设置身份验证。请检查您的服务器配置。"
328
-
329
- #. @context: Compose quote author placeholder
330
- #: src/ui/compose/ComposeDialog.tsx
331
- msgid "Author (optional)"
332
- msgstr "作者(可选)"
333
-
334
- #. @context: Theme mode option label
335
- #. @context: Theme mode option on sample page
336
- #: src/ui/dash/appearance/ColorThemeContent.tsx
337
- #: src/ui/pages/ThemeSamplePage.tsx
338
- msgid "Auto"
339
- msgstr "自动"
340
-
341
- #. @context: Description after theming guide link on Custom CSS page
342
- #: src/ui/dash/appearance/AdvancedContent.tsx
343
- msgid "available CSS variables, data attributes, and examples."
344
- msgstr "可用的 CSS 变量、数据属性和示例."
345
-
346
- #. @context: Settings item — avatar settings
347
- #: src/ui/dash/settings/SettingsRootContent.tsx
348
- msgid "Avatar"
349
- msgstr "头像"
350
-
351
- #. @context: Toast after saving avatar display preference
352
- #. @context: Toast after saving avatar display preference
353
- #: src/routes/dash/settings.tsx
354
- #: src/routes/dash/settings.tsx
355
- msgid "Avatar display updated."
356
- msgstr "头像显示已更新。"
357
-
358
- #. @context: Usage label for the circle tile asset card
359
- #: src/ui/pages/BrandPage.tsx
360
- msgid "Avatar-ready"
361
- msgstr "头像可用"
362
-
363
- #. @context: Link back from the new post page
364
- #: src/ui/pages/ComposePage.tsx
365
- msgid "Back"
366
- msgstr "返回"
367
-
368
- #. @context: Link to backup and restore documentation from account settings
369
- #: src/ui/dash/settings/AccountMenuContent.tsx
370
- msgid "Backup & Restore Guide"
371
- msgstr "备份与恢复指南"
372
-
373
- #. @context: Settings item description for API tokens
374
- #: src/ui/dash/settings/SettingsRootContent.tsx
375
- msgid "Bearer tokens for scripts and automation"
376
- msgstr "用于脚本和自动化的 Bearer 令牌"
377
-
378
- #. @context: Sample note post body suffix on the theme sample page
379
- #: src/ui/pages/ThemeSamplePage.tsx
380
- msgid "before deciding whether the accent is carrying too much product energy."
381
- msgstr "再判断这个强调色是否带上了过多产品化的气息。"
382
-
383
- #. @context: Step 1 description for site export before account deletion
384
- #: src/ui/dash/settings/DeleteAccountContent.tsx
385
- msgid "Before deleting, download a site export. You won't be able to recover this account after deletion."
386
- msgstr "删除之前先下载站点导出。删除后将无法恢复这个账户。"
387
-
388
- #. @context: Settings section heading for avatar
389
- #: src/ui/dash/settings/AvatarContent.tsx
390
- msgid "Blog Avatar"
391
- msgstr "博客头像"
392
-
393
- #. @context: Browser page title for the public brand asset page
394
- #. @context: Eyebrow on the public brand asset page
395
- #: src/routes/pages/brand.tsx
396
- #: src/ui/pages/BrandPage.tsx
397
- msgid "Brand assets"
398
- msgstr "品牌素材"
399
-
400
- #. @context: Title for the brand pack card
401
- #. @context: Title for the brand pack card
402
- #: src/ui/pages/BrandPage.tsx
403
- #: src/ui/pages/BrandPage.tsx
404
- msgid "Brand pack"
405
- msgstr "品牌包"
406
-
407
- #. @context: Asset keyword on the public brand asset page
408
- #. @context: Title for the brand tile asset card
409
- #: src/ui/pages/BrandPage.tsx
410
- #: src/ui/pages/BrandPage.tsx
411
- msgid "Brand tile"
412
- msgstr "品牌卡片"
413
-
414
- #. @context: Breadcrumb label on collection detail page
415
- #. @context: Breadcrumb label on collection editor page
416
- #: src/ui/pages/CollectionEditorPage.tsx
417
- #: src/ui/pages/CollectionPage.tsx
418
- msgid "Breadcrumb"
419
- msgstr "面包屑导航"
420
-
421
- #. @context: Secondary hero button label to jump to the file list
422
- #: src/ui/pages/BrandPage.tsx
423
- msgid "Browse files"
424
- msgstr "浏览文件"
425
-
426
- #. @context: Usage label for the favicon asset card
427
- #: src/ui/pages/BrandPage.tsx
428
- msgid "Browser tab"
429
- msgstr "浏览器标签页"
430
-
431
- #. @context: Usage label for the brand tile asset card
432
- #: src/ui/pages/BrandPage.tsx
433
- msgid "Built-in background"
434
- msgstr "内置背景"
435
-
436
- #. @context: Sample note post second paragraph on the theme sample page
437
- #: src/ui/pages/ThemeSamplePage.tsx
438
- msgid "Buttons can stay steady, but links, thread markers, and subtle emphasis should feel closer to ink on paper than dashboard chrome."
439
- msgstr "按钮可以保持稳重,但链接、帖子串标记和细微的强调应该更像纸上的墨迹,而不是仪表盘的装饰"
440
-
441
- #. @context: Button label to dismiss a dialog or action
442
- #. @context: Button label to dismiss a dialog or action
443
- #. @context: Button label to dismiss a dialog or action
444
- #. @context: Button label to dismiss a dialog or action
445
- #. @context: Button label to dismiss a dialog or action
446
- #. @context: Button to cancel form
447
- #. @context: Button to cancel form
448
- #. @context: Button to cancel settings changes
449
- #. @context: Button to cancel unsaved changes and revert to original values
450
- #. @context: Close compose dialog
451
- #. @context: Confirm close action sheet - cancel and return to editor
452
- #: src/routes/dash/custom-urls.tsx
453
- #: src/ui/compose/ComposeDialog.tsx
454
- #: src/ui/compose/ComposeDialog.tsx
455
- #: src/ui/dash/ActionButtons.tsx
456
- #: src/ui/dash/DangerZone.tsx
457
- #: src/ui/dash/settings/ApiTokensContent.tsx
458
- #: src/ui/dash/settings/AvatarContent.tsx
459
- #: src/ui/dash/settings/DeleteAccountContent.tsx
460
- #: src/ui/dash/settings/GeneralContent.tsx
461
- #: src/ui/shared/collection-management-labels.ts
462
- #: src/ui/shared/collection-management-labels.ts
463
- msgid "Cancel"
464
- msgstr "取消"
465
-
466
- #. @context: Button to change password
467
- #. @context: Settings section heading
468
- #: src/ui/dash/settings/AccountContent.tsx
469
- #: src/ui/dash/settings/AccountContent.tsx
470
- msgid "Change Password"
471
- msgstr "修改密码"
472
-
473
- #. @context: Warning shown when changing the canonical RSS feed selection
474
- #: src/ui/dash/settings/GeneralContent.tsx
475
- msgid "Changing this updates what subscribers get from /feed."
476
- msgstr "修改后,订阅 /feed 的用户会收到不同内容。"
477
-
478
- #. @context: Compose custom slug helper while checking whether a manual slug is available
479
- #: src/ui/compose/ComposeDialog.tsx
480
- msgid "Checking link..."
481
- msgstr "正在检查链接..."
482
-
483
- #. @context: Password reset page description
484
- #: src/routes/auth/reset.tsx
485
- msgid "Choose a new password."
486
- msgstr "设置新密码."
487
-
488
- #. @context: Font theme settings description
489
- #: src/ui/dash/appearance/FontThemeContent.tsx
490
- msgid "Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm."
491
- msgstr "为你的站点选择一种排版方向。每个主题都会同时改变字体搭配和阅读节奏。"
492
-
493
- #. @context: Body copy for the logo downloads section
494
- #: src/ui/pages/BrandPage.tsx
495
- msgid "Choose the standard logo for most placements and the reverse logo when you need more contrast."
496
- msgstr "在大多数场景选择标准徽标,需要更高对比度时选择反色徽标。"
497
-
498
- #. @context: Guidance body on the brand asset page
499
- #: src/ui/pages/BrandPage.tsx
500
- msgid "Choose the standard logo for websites, docs, directories, and editorial layouts."
501
- msgstr "为网站、文档、名录和编辑版面选择标准徽标."
502
-
503
- #. @context: Asset keyword on the public brand asset page
504
- #. @context: Title for the circle tile asset card
505
- #: src/ui/pages/BrandPage.tsx
506
- #: src/ui/pages/BrandPage.tsx
507
- msgid "Circle tile"
508
- msgstr "圆形图块"
509
-
510
- #. @context: Archive filter button label to clear the active filter
511
- #. @context: Archive filter button label to clear the active filter
512
- #: src/ui/pages/ArchivePage.tsx
513
- #: src/ui/pages/ArchivePage.tsx
514
- msgid "Clear filter"
515
- msgstr "清除筛选"
516
-
517
- #. @context: Singular collection count label
518
- #. @context: Singular collection count label
519
- #. @context: Singular collection count label
520
- #. @context: Singular collection count label on an aggregate collection page
521
- #: src/ui/pages/CollectionPage.tsx
522
- #: src/ui/pages/CollectionsPage.tsx
523
- #: src/ui/shared/CollectionsManager.tsx
524
- #: src/ui/shared/CollectionsManager.tsx
525
- msgid "collection"
526
- msgstr "个合集"
527
-
528
- #. @context: Compose collection selector trigger label
529
- #. @context: Custom URL target type badge for a collection
530
- #. @context: Custom URL type option
531
- #: src/routes/dash/custom-urls.tsx
532
- #: src/routes/dash/custom-urls.tsx
533
- #: src/ui/compose/ComposeDialog.tsx
534
- msgid "Collection"
535
- msgstr "合集"
536
-
537
- #. @context: Toast shown after creating a collection
538
- #: src/ui/shared/collection-management-labels.ts
539
- msgid "Collection created."
540
- msgstr "合集已创建。"
541
-
542
- #. @context: Toast after deleting a collection
543
- #: src/ui/shared/collection-management-labels.ts
544
- msgid "Collection deleted."
545
- msgstr "合集已删除。"
546
-
547
- #. @context: Collection form field
548
- #: src/ui/shared/collection-management-labels.ts
549
- msgid "Collection link"
550
- msgstr "合集链接"
551
-
552
- #. @context: Toast after reordering collections
553
- #: src/ui/shared/CollectionsManager.tsx
554
- msgid "Collection order updated."
555
- msgstr "合集排序已更新。"
556
-
557
- #. @context: Toast after saving a collection
558
- #: src/ui/shared/collection-management-labels.ts
559
- msgid "Collection saved."
560
- msgstr "合集已保存。"
561
-
562
- #. @context: Plural collection count label
563
- #. @context: Plural collection count label
564
- #. @context: Plural collection count label
565
- #. @context: Plural collection count label on an aggregate collection page
566
- #: src/ui/pages/CollectionPage.tsx
567
- #: src/ui/pages/CollectionsPage.tsx
568
- #: src/ui/shared/CollectionsManager.tsx
569
- #: src/ui/shared/CollectionsManager.tsx
570
- msgid "collections"
571
- msgstr "个合集"
572
-
573
- #. @context: Breadcrumb link to collections page
574
- #. @context: Breadcrumb link to collections page
575
- #. @context: Built-in navigation label for the collections page
576
- #. @context: Collections page heading
577
- #. @context: Collections page heading
578
- #. @context: Inactive nav link label on sample page
579
- #: src/ui/pages/CollectionEditorPage.tsx
580
- #: src/ui/pages/CollectionPage.tsx
581
- #: src/ui/pages/CollectionsPage.tsx
582
- #: src/ui/pages/ThemeSamplePage.tsx
583
- #: src/ui/shared/CollectionsManager.tsx
584
- #: src/ui/shared/navigation-labels.ts
585
- msgid "Collections"
586
- msgstr "合集"
587
-
588
- #. @context: Alert title on theme sample page
589
- #: src/ui/pages/ThemeSamplePage.tsx
590
- msgid "Color check"
591
- msgstr "颜色检查"
592
-
593
- #. @context: Appearance settings heading
594
- #: src/ui/dash/appearance/ColorThemeContent.tsx
595
- msgid "Color theme"
596
- msgstr "颜色主题"
597
-
598
- #. @context: Settings item — color theme settings
599
- #: src/ui/dash/settings/SettingsRootContent.tsx
600
- msgid "Color Theme"
601
- msgstr "颜色主题"
602
-
603
- #. @context: Inline link label in the sample detail article
604
- #: src/ui/pages/ThemeSamplePage.tsx
605
- msgid "Compare it against the theme controls"
606
- msgstr "与主题控件比较"
607
-
608
- #. @context: Setup form submit button
609
- #: src/routes/auth/setup.tsx
610
- msgid "Complete Setup"
611
- msgstr "完成设置"
612
-
613
- #. @context: Step 2 heading — user must type confirmation phrase
614
- #: src/ui/dash/settings/DeleteAccountContent.tsx
615
- msgid "Confirm account deletion"
616
- msgstr "确认删除账号"
617
-
618
- #. @context: Password form field
619
- #: src/ui/dash/settings/AccountContent.tsx
620
- msgid "Confirm New Password"
621
- msgstr "确认新密码"
622
-
623
- #. @context: Password reset form field
624
- #: src/routes/auth/reset.tsx
625
- msgid "Confirm Password"
626
- msgstr "确认密码"
627
-
628
- #. @context: Controls section heading on sample page
629
- #: src/ui/pages/ThemeSamplePage.tsx
630
- msgid "Controls"
631
- msgstr "控件"
632
-
633
- #. @context: Feedback after copying API token
634
- #: src/ui/dash/settings/ApiTokensContent.tsx
635
- msgid "Copied"
636
- msgstr "已复制"
637
-
638
- #. @context: Button to copy a URL to the clipboard
639
- #: src/ui/dash/settings/GeneralContent.tsx
640
- msgid "Copy"
641
- msgstr "复制"
642
-
643
- #. @context: Button to copy API token to clipboard
644
- #. @context: Button to copy API token to clipboard
645
- #: src/ui/dash/settings/ApiTokensContent.tsx
646
- #: src/ui/dash/settings/ApiTokensContent.tsx
647
- msgid "Copy Token"
648
- msgstr "复制令牌"
649
-
650
- #. @context: Warning to copy newly created API token
651
- #: src/ui/dash/settings/ApiTokensContent.tsx
652
- msgid "Copy your token now — it won't be shown again."
653
- msgstr "现在复制你的令牌 — 它将不再显示。"
654
-
655
- #. @context: Error toast when copying text to the clipboard fails
656
- #: src/ui/dash/settings/GeneralContent.tsx
657
- msgid "Could not copy. Try again."
658
- msgstr "无法复制,请重试。"
659
-
660
- #. @context: Error toast when account creation fails
661
- #. @context: Error toast when account creation fails
662
- #. @context: Error toast when account creation fails
663
- #: src/routes/auth/setup.tsx
664
- #: src/routes/auth/setup.tsx
665
- #: src/routes/auth/setup.tsx
666
- msgid "Couldn't create your account. Check the details and try again."
667
- msgstr "无法创建您的账户. 请检查详细信息并重试."
668
-
669
- #. @context: Error toast when nav delete fails
670
- #: src/ui/dash/appearance/NavigationContent.tsx
671
- msgid "Couldn't delete. Try again in a moment."
672
- msgstr "无法删除. 请稍后再试."
673
-
674
- #. @context: Toast when publish fails and post is auto-saved as draft
675
- #: src/ui/compose/ComposeDialog.tsx
676
- msgid "Couldn't publish. Saved as draft."
677
- msgstr "无法发布. 已保存为草稿."
678
-
679
- #. @context: Error toast when nav save fails
680
- #. @context: Toast when save fails
681
- #: src/ui/dash/appearance/NavigationContent.tsx
682
- #: src/ui/shared/collection-management-labels.ts
683
- msgid "Couldn't save. Try again in a moment."
684
- msgstr "保存失败。请稍后再试。"
685
-
686
- #. @context: Compose collection combobox empty state when no collections exist
687
- #: src/ui/compose/ComposeDialog.tsx
688
- msgid "Create a collection to get started."
689
- msgstr "创建一个合集即可开始。"
690
-
691
- #. @context: Label for curl example
692
- #: src/ui/dash/settings/ApiTokensContent.tsx
693
- msgid "Create a post with curl:"
694
- msgstr "使用 curl 创建帖子:"
695
-
696
- #. @context: Button to save new custom URL
697
- #: src/routes/dash/custom-urls.tsx
698
- msgid "Create Custom URL"
699
- msgstr "创建自定义 URL"
700
-
701
- #. @context: Setup page description
702
- #: src/routes/auth/setup.tsx
703
- msgid "Create your admin account."
704
- msgstr "创建您的管理员账户。"
705
-
706
- #. @context: Token creation date
707
- #. placeholder {0}: formatDate(token.createdAt)
708
- #: src/ui/dash/settings/ApiTokensContent.tsx
709
- msgid "Created {0}"
710
- msgstr "创建于 {0}"
711
-
712
- #. @context: Badge indicating the current active session
713
- #: src/ui/dash/settings/SessionsContent.tsx
714
- msgid "Current"
715
- msgstr "当前"
716
-
717
- #. @context: Password form field
718
- #: src/ui/dash/settings/AccountContent.tsx
719
- msgid "Current Password"
720
- msgstr "当前密码"
721
-
722
- #. @context: Error toast when current password verification fails
723
- #: src/routes/dash/settings.tsx
724
- msgid "Current password doesn't match. Try again."
725
- msgstr "当前密码不匹配。请重试。"
726
-
727
- #. @context: Thread item label on sample page
728
- #: src/ui/pages/ThemeSamplePage.tsx
729
- msgid "Current post"
730
- msgstr "当前帖子"
731
-
732
- #. @context: Appearance settings heading for custom CSS
733
- #. @context: Link to Custom CSS settings from color theme page
734
- #. @context: Settings item — custom CSS settings
735
- #: src/ui/dash/appearance/AdvancedContent.tsx
736
- #: src/ui/dash/appearance/ColorThemeContent.tsx
737
- #: src/ui/dash/settings/SettingsRootContent.tsx
738
- msgid "Custom CSS"
739
- msgstr "自定义 CSS"
740
-
741
- #. @context: Toast after saving custom CSS
742
- #: src/routes/dash/settings.tsx
743
- msgid "Custom CSS updated."
744
- msgstr "自定义 CSS 已更新。"
745
-
746
- #. @context: Compose publish settings slug section label
747
- #: src/ui/compose/ComposeDialog.tsx
748
- msgid "Custom link"
749
- msgstr "自定义链接"
750
-
751
- #. @context: Settings item — custom URL settings
752
- #. @context: Settings section heading
753
- #: src/routes/dash/custom-urls.tsx
754
- #: src/ui/dash/settings/SettingsRootContent.tsx
755
- msgid "Custom URLs"
756
- msgstr "自定义 URL"
757
-
758
- #. @context: Destructive badge label on sample page
759
- #: src/ui/pages/ThemeSamplePage.tsx
760
- msgid "Danger"
761
- msgstr "危险"
762
-
763
- #. @context: Section heading for dangerous/destructive actions
764
- #. @context: Settings group label for destructive account actions
765
- #. @context: Settings group label for destructive account actions
766
- #: src/ui/dash/DangerZone.tsx
767
- #: src/ui/dash/settings/AccountMenuContent.tsx
768
- #: src/ui/dash/settings/AccountMenuContent.tsx
769
- msgid "Danger Zone"
770
- msgstr "危险区"
771
-
772
- #. @context: Theme mode option label
773
- #. @context: Theme mode option on sample page
774
- #: src/ui/dash/appearance/ColorThemeContent.tsx
775
- #: src/ui/pages/ThemeSamplePage.tsx
776
- msgid "Dark"
777
- msgstr "深色"
778
-
779
- #. @context: Usage label for the reverse logo asset card
780
- #. @context: Usage label for the reverse logo card
781
- #: src/ui/pages/BrandPage.tsx
782
- #: src/ui/pages/BrandPage.tsx
783
- msgid "Dark backgrounds"
784
- msgstr "深色背景"
785
-
786
- #. @context: Settings group label for data export/import
787
- #: src/ui/dash/settings/AccountMenuContent.tsx
788
- msgid "Data"
789
- msgstr "数据"
790
-
791
- #. @context: Badge label on sample page
792
- #. @context: Usage label for the default logo asset card
793
- #: src/ui/pages/BrandPage.tsx
794
- #: src/ui/pages/ThemeSamplePage.tsx
795
- msgid "Default"
796
- msgstr "默认"
797
-
798
- #. @context: Usage label for the default logo card
799
- #: src/ui/pages/BrandPage.tsx
800
- msgid "Default logo"
801
- msgstr "默认徽标"
802
-
803
- #. @context: Inline link label in the sample link post body
804
- #: src/ui/pages/ThemeSamplePage.tsx
805
- msgid "default note sample"
806
- msgstr "默认笔记示例"
807
-
808
- #. @context: Description for the social preview image asset card
809
- #: src/ui/pages/BrandPage.tsx
810
- msgid "Default preview image for social shares and link unfurls."
811
- msgstr "用于社交分享和链接展开的默认预览图片。"
812
-
813
- #. @context: Button to delete custom URL
814
- #. @context: Button to delete item
815
- #. @context: Delete collection action
816
- #. @context: Delete nav item
817
- #: src/routes/dash/custom-urls.tsx
818
- #: src/ui/dash/ActionButtons.tsx
819
- #: src/ui/dash/appearance/NavigationContent.tsx
820
- #: src/ui/shared/collection-management-labels.ts
821
- msgid "Delete"
822
- msgstr "删除"
823
-
824
- #. @context: Page title for account deletion
825
- #. @context: Settings item — delete account and all data
826
- #: src/ui/dash/settings/AccountMenuContent.tsx
827
- #: src/ui/dash/settings/DeleteAccountContent.tsx
828
- msgid "Delete Account"
829
- msgstr "删除账户"
830
-
831
- #. @context: Final destructive button to delete account and all data
832
- #: src/ui/dash/settings/DeleteAccountContent.tsx
833
- msgid "Delete Account Permanently"
834
- msgstr "永久删除账号"
835
-
836
- #. @context: Draft item action
837
- #: src/ui/compose/ComposeDialog.tsx
838
- msgid "Delete Draft"
839
- msgstr "删除草稿"
840
-
841
- #. @context: Settings item — open the hosted site danger zone in the control plane
842
- #: src/ui/dash/settings/AccountMenuContent.tsx
843
- msgid "Delete Hosted Site"
844
- msgstr "删除托管站点"
845
-
846
- #. @context: Final browser confirm dialog before account deletion
847
- #: src/ui/dash/settings/DeleteAccountContent.tsx
848
- msgid "Delete this blog permanently? This cannot be undone."
849
- msgstr "永久删除此博客?此操作不可恢复。"
850
-
851
- #. @context: Confirm dialog for deleting a collection
852
- #: src/ui/shared/collection-management-labels.ts
853
- msgid "Delete this collection permanently? Posts inside won't be removed."
854
- msgstr "永久删除这个合集?里面的帖子不会被删除。"
855
-
856
- #. @context: Hint shown on signin page when demo credentials are pre-filled
857
- #: src/routes/auth/signin.tsx
858
- msgid "Demo credentials are pre-filled — hit Sign In to continue."
859
- msgstr "演示凭证已预填 — 点击 登录 继续."
860
-
861
- #. @context: Notice shown on the account page when demo restrictions are enabled
862
- #: src/ui/dash/settings/AccountMenuContent.tsx
863
- msgid "Demo mode hides sessions, password changes, and account deletion. Export still works."
864
- msgstr "演示模式下会隐藏会话、密码修改和删除账户。导出仍可使用。"
865
-
866
- #. @context: Help text explaining that SEO indexing is locked in demo mode
867
- #: src/ui/dash/settings/GeneralContent.tsx
868
- msgid "Demo sites always stay hidden from search engines."
869
- msgstr "演示站点会始终对搜索引擎隐藏。"
870
-
871
- #. @context: Alt text textarea placeholder
872
- #: src/ui/compose/ComposeDialog.tsx
873
- msgid "Describe this for people with visual impairments..."
874
- msgstr "为视力受限的人描述此图像..."
875
-
876
- #. @context: Collection form field
877
- #: src/ui/shared/collection-management-labels.ts
878
- msgid "Description (optional)"
879
- msgstr "描述(可选)"
880
-
881
- #. @context: Collection label on theme sample content card
882
- #. @context: Collection tag on sample note post
883
- #. @context: Collection tag on the sample detail article
884
- #. @context: Color theme preview collection label
885
- #: src/ui/dash/appearance/ColorThemeContent.tsx
886
- #: src/ui/pages/ThemeSamplePage.tsx
887
- #: src/ui/pages/ThemeSamplePage.tsx
888
- #: src/ui/pages/ThemeSamplePage.tsx
889
- msgid "Design"
890
- msgstr "设计"
891
-
892
- #. @context: Title for the sample detail article on the theme sample page
893
- #: src/ui/pages/ThemeSamplePage.tsx
894
- msgid "Designing a calmer default accent for Jant"
895
- msgstr "为 Jant 设计更平静的默认强调色"
896
-
897
- #. @context: Redirect destination field
898
- #: src/routes/dash/custom-urls.tsx
899
- msgid "Destination"
900
- msgstr "目标地址"
901
-
902
- #. @context: Confirm close action sheet - discard changes button for editing published post
903
- #. @context: More menu - discard post
904
- #: src/ui/compose/ComposeDialog.tsx
905
- #: src/ui/compose/ComposeDialog.tsx
906
- msgid "Discard"
907
- msgstr "放弃"
908
-
909
- #. @context: Confirm dialog shown before discarding attached text edits
910
- #: src/ui/compose/ComposeDialog.tsx
911
- msgid "Discard changes?"
912
- msgstr "要放弃更改吗?"
913
-
914
- #. @context: Checkbox to show avatar in the site header
915
- #: src/ui/dash/settings/AvatarContent.tsx
916
- msgid "Display avatar in my site header"
917
- msgstr "在我的站点页眉显示头像"
918
-
919
- #. @context: Help text for site footer field
920
- #: src/ui/dash/settings/GeneralContent.tsx
921
- msgid "Displayed at the bottom of all posts and pages. Markdown supported."
922
- msgstr "显示在所有文章和页面的底部。支持 Markdown。"
923
-
924
- #. @context: Theme group heading on color theme settings page
925
- #: src/ui/dash/appearance/ColorThemeContent.tsx
926
- msgid "Distinctive Mood"
927
- msgstr "鲜明氛围"
928
-
929
- #. @context: Label for a divider item while organizing collections
930
- #: src/ui/shared/CollectionsManager.tsx
931
- msgid "Divider"
932
- msgstr "分隔线"
933
-
934
- #. @context: Guidance body on the brand asset page
935
- #: src/ui/pages/BrandPage.tsx
936
- msgid "Do not recolor, stretch, rotate, outline, or add effects to the logo."
937
- msgstr "请勿为标志重新着色、拉伸、旋转、描边或添加效果."
938
-
939
- #. @context: Confirm close action sheet subtitle when editing a published post
940
- #: src/ui/compose/ComposeDialog.tsx
941
- msgid "Do you want to publish your changes or discard them?"
942
- msgstr "要发布您的更改,还是放弃它们?"
943
-
944
- #. @context: Compose publish settings help text for posts hidden from Latest
945
- #: src/ui/compose/ComposeDialog.tsx
946
- msgid "Doesn't appear in Latest. Still appears in collections you add it to."
947
- msgstr "不会出现在 Latest 中,但仍会出现在你添加到的 Collection 里。"
948
-
949
- #. @context: Confirm action sheet - discard text attachment changes button
950
- #. @context: Confirm close action sheet - discard button
951
- #: src/ui/compose/ComposeDialog.tsx
952
- #: src/ui/compose/ComposeDialog.tsx
953
- msgid "Don't save"
954
- msgstr "不保存"
955
-
956
- #. @context: Button to exit collection organize mode
957
- #. @context: Close attached text panel
958
- #. @context: Compose button - update existing post
959
- #. @context: Primary button in the quick-create collection dialog
960
- #: src/ui/compose/ComposeDialog.tsx
961
- #: src/ui/compose/ComposeDialog.tsx
962
- #: src/ui/shared/collection-management-labels.ts
963
- #: src/ui/shared/CollectionsManager.tsx
964
- msgid "Done"
965
- msgstr "完成"
966
-
967
- #. @context: Step 1 heading — user must download a site export before deleting
968
- #: src/ui/dash/settings/DeleteAccountContent.tsx
969
- msgid "Download a site export"
970
- msgstr "下载站点导出"
971
-
972
- #. @context: Settings item description for static site export
973
- #: src/ui/dash/settings/AccountMenuContent.tsx
974
- msgid "Download a Zola site ZIP for static publishing or import into another Jant."
975
- msgstr "下载一个 Zola 站点 ZIP,可用于静态发布或导入另一套 Jant。"
976
-
977
- #. @context: Primary hero button label for the brand pack ZIP
978
- #: src/ui/pages/BrandPage.tsx
979
- msgid "Download Brand Pack"
980
- msgstr "下载品牌包"
981
-
982
- #. @context: Button to download the site export ZIP before deletion
983
- #: src/ui/dash/settings/DeleteAccountContent.tsx
984
- msgid "Download Export ZIP"
985
- msgstr "下载导出 ZIP"
986
-
987
- #. @context: Alert when site export download fails during account deletion
988
- #: src/ui/dash/settings/DeleteAccountContent.tsx
989
- msgid "Download failed. Please try again."
990
- msgstr "下载失败。请重试。"
991
-
992
- #. @context: Download button label for a non-SVG brand asset
993
- #: src/ui/pages/BrandPage.tsx
994
- msgid "Download file"
995
- msgstr "下载文件"
996
-
997
- #. @context: Meta description for the public brand asset page
998
- #: src/routes/pages/brand.tsx
999
- msgid "Download official Jant logos, icons, and preview assets."
1000
- msgstr "下载官方 Jant 徽标、图标和预览素材。"
1001
-
1002
- #. @context: Download button label for a PNG logo asset
1003
- #: src/ui/pages/BrandPage.tsx
1004
- msgid "Download PNG"
1005
- msgstr "下载 PNG"
1006
-
1007
- #. @context: Download button label for a logo asset
1008
- #: src/ui/pages/BrandPage.tsx
1009
- msgid "Download SVG"
1010
- msgstr "下载 SVG"
1011
-
1012
- #. @context: Hero title on the public brand asset page
1013
- #: src/ui/pages/BrandPage.tsx
1014
- msgid "Download the official Jant logo, icons, and preview files."
1015
- msgstr "下载官方 Jant 徽标、图标和预览文件。"
1016
-
1017
- #. @context: Post status badge - draft
1018
- #: src/ui/dash/StatusBadge.tsx
1019
- msgid "Draft"
1020
- msgstr "草稿"
1021
-
1022
- #. @context: Toast after draft deletion
1023
- #: src/ui/compose/ComposeDialog.tsx
1024
- msgid "Draft deleted."
1025
- msgstr "草稿已删除."
1026
-
1027
- #. @context: Toast shown when a local draft is restored on compose open
1028
- #: src/ui/compose/ComposeDialog.tsx
1029
- msgid "Draft restored."
1030
- msgstr "草稿已恢复."
1031
-
1032
- #. @context: Toast after saving a draft post
1033
- #. @context: Toast after saving a draft post
1034
- #: src/routes/compose.tsx
1035
- #: src/routes/compose.tsx
1036
- msgid "Draft saved."
1037
- msgstr "草稿已保存."
1038
-
1039
- #. @context: Drafts panel title
1040
- #: src/ui/compose/ComposeDialog.tsx
1041
- msgid "Drafts"
1042
- msgstr "草稿"
1043
-
1044
- #. @context: Helper text shown while organizing collections
1045
- #: src/ui/shared/CollectionsManager.tsx
1046
- msgid "Drag collections and dividers into the order you want."
1047
- msgstr "拖动合集和分隔线,调整为你想要的顺序。"
1048
-
1049
- #. @context: Placeholder for API token name input
1050
- #: src/ui/dash/settings/ApiTokensContent.tsx
1051
- msgid "e.g. iOS Shortcuts"
1052
- msgstr "例如 iOS Shortcuts"
1053
-
1054
- #. @context: Button to edit item
1055
- #. @context: Per-collection edit action
1056
- #. @context: Per-collection edit action
1057
- #. @context: Per-collection edit action
1058
- #: src/ui/dash/ActionButtons.tsx
1059
- #: src/ui/pages/CollectionEditorPage.tsx
1060
- #: src/ui/pages/CollectionEditorPage.tsx
1061
- #: src/ui/shared/collection-management-labels.ts
1062
- msgid "Edit"
1063
- msgstr "编辑"
1064
-
1065
- #. @context: Button to manually edit the collection link
1066
- #: src/ui/shared/collection-management-labels.ts
1067
- msgid "Edit link"
1068
- msgstr "编辑链接"
1069
-
1070
- #. @context: Compose dialog header title in edit mode
1071
- #: src/ui/compose/ComposeDialog.tsx
1072
- msgid "Edit post"
1073
- msgstr "编辑帖子"
1074
-
1075
- #. @context: Sample link post title on the theme sample page
1076
- #: src/ui/pages/ThemeSamplePage.tsx
1077
- msgid "Editorial interfaces worth borrowing from"
1078
- msgstr "值得借鉴的编辑界面"
1079
-
1080
- #. @context: Setup/signin form field - email
1081
- #. @context: Setup/signin form field - email
1082
- #: src/routes/auth/setup.tsx
1083
- #: src/routes/auth/signin.tsx
1084
- msgid "Email"
1085
- msgstr "电子邮箱"
1086
-
1087
- #. @context: Compose toolbar - emoji picker tooltip
1088
- #: src/ui/compose/ComposeDialog.tsx
1089
- msgid "Emoji"
1090
- msgstr "表情"
1091
-
1092
- #. @context: Compose URL field error message
1093
- #: src/ui/compose/ComposeDialog.tsx
1094
- msgid "Enter a valid URL starting with http://, https://, or mailto:."
1095
- msgstr "请输入以 http://、https:// 或 mailto: 开头的有效 URL。"
1096
-
1097
- #. @context: Plural entry count label
1098
- #. @context: Plural entry count label
1099
- #: src/ui/shared/CollectionDirectory.tsx
1100
- #: src/ui/shared/CollectionsManager.tsx
1101
- msgid "entries"
1102
- msgstr "条目"
1103
-
1104
- #. @context: Singular entry count label
1105
- #. @context: Singular entry count label
1106
- #: src/ui/shared/CollectionDirectory.tsx
1107
- #: src/ui/shared/CollectionsManager.tsx
1108
- msgid "entry"
1109
- msgstr "条目"
1110
-
1111
- #. @context: Usage label for the brand pack card
1112
- #: src/ui/pages/BrandPage.tsx
1113
- msgid "Everything in one download"
1114
- msgstr "一次性全部下载"
1115
-
1116
- #. @context: Section title for the quick-start panel on the brand asset page
1117
- #: src/ui/pages/BrandPage.tsx
1118
- msgid "Everything most people need is in one ZIP."
1119
- msgstr "大多数人需要的所有内容都在一个 ZIP 文件中。"
1120
-
1121
- #. @context: Intro paragraph on the public brand asset page
1122
- #: src/ui/pages/BrandPage.tsx
1123
- msgid "Everything on this page is ready to use for articles, launch posts, directories, and product coverage."
1124
- msgstr "本页的所有内容均可直接用于文章、发布帖、目录和产品报道。"
1125
-
1126
- #. @context: Settings item description for account settings on the settings home page when demo restrictions are enabled
1127
- #: src/ui/dash/settings/SettingsRootContent.tsx
1128
- msgid "Export and demo limits"
1129
- msgstr "导出与演示限制"
1130
-
1131
- #. @context: Confirmation text after downloading the site export in delete flow
1132
- #: src/ui/dash/settings/DeleteAccountContent.tsx
1133
- msgid "Export downloaded."
1134
- msgstr "导出已下载。"
1135
-
1136
- #. @context: Settings item — export a Zola static site ZIP
1137
- #: src/ui/dash/settings/AccountMenuContent.tsx
1138
- msgid "Export Static Site"
1139
- msgstr "导出静态站点"
1140
-
1141
- #. @context: Title for the favicon asset card
1142
- #: src/ui/pages/BrandPage.tsx
1143
- msgid "Favicon"
1144
- msgstr "网站图标"
1145
-
1146
- #. @context: Settings item description for avatar
1147
- #: src/ui/dash/settings/SettingsRootContent.tsx
1148
- msgid "Favicon and the profile mark in your header"
1149
- msgstr "网站图标及页眉中的个人头像"
1150
-
1151
- #. @context: Archive visibility filter - featured posts
1152
- #. @context: Browse filter for featured posts
1153
- #. @context: Browse filter label
1154
- #. @context: Browse filter label
1155
- #. @context: Browse filter label for featured posts
1156
- #. @context: Browser page title for the featured feed
1157
- #. @context: Browser page title for the featured feed
1158
- #. @context: Inactive browse tab label on sample page
1159
- #. @context: Page heading for the featured posts feed
1160
- #. @context: Post badge - featured
1161
- #. @context: Select option for using featured posts as the main RSS feed
1162
- #. @context: Tooltip and screen reader label for the featured-post icon in the post footer when no featured date is available
1163
- #: src/routes/pages/featured.tsx
1164
- #: src/routes/pages/home.tsx
1165
- #: src/ui/dash/appearance/NavigationContent.tsx
1166
- #: src/ui/dash/appearance/NavigationContent.tsx
1167
- #: src/ui/dash/appearance/NavigationContent.tsx
1168
- #: src/ui/dash/settings/GeneralContent.tsx
1169
- #: src/ui/dash/StatusBadge.tsx
1170
- #: src/ui/layouts/SiteLayout.tsx
1171
- #: src/ui/pages/ArchivePage.tsx
1172
- #: src/ui/pages/FeaturedPage.tsx
1173
- #: src/ui/pages/ThemeSamplePage.tsx
1174
- #: src/ui/shared/PostFooter.tsx
1175
- msgid "Featured"
1176
- msgstr "精选"
1177
-
1178
- #. @context: Label for the explicit featured RSS feed URL
1179
- #: src/ui/dash/settings/GeneralContent.tsx
1180
- msgid "Featured feed"
1181
- msgstr "Featured feed"
1182
-
1183
- #. @context: Tooltip and screen reader label for the featured-post icon in the post footer
1184
- #: src/ui/shared/PostFooter.tsx
1185
- msgid "Featured on {date} at {time}"
1186
- msgstr "精选于 {date} {time}"
1187
-
1188
- #. @context: RSS and Atom feed title suffix for the featured posts feed
1189
- #. @context: RSS autodiscovery title for the featured posts feed
1190
- #: src/routes/feed/rss.ts
1191
- #: src/ui/layouts/BaseLayout.tsx
1192
- msgid "Featured posts"
1193
- msgstr "精选帖子"
1194
-
1195
- #. @context: Toast after saving feed settings
1196
- #: src/routes/dash/settings.tsx
1197
- msgid "Feed settings updated."
1198
- msgstr "订阅源设置已更新。"
1199
-
1200
- #. @context: Toast after copying a feed URL to the clipboard
1201
- #: src/ui/dash/settings/GeneralContent.tsx
1202
- msgid "Feed URL copied."
1203
- msgstr "订阅源 URL 已复制。"
1204
-
1205
- #. @context: Settings section heading for RSS feed configuration
1206
- #: src/ui/dash/settings/GeneralContent.tsx
1207
- msgid "Feeds"
1208
- msgstr "订阅源"
1209
-
1210
- #. @context: Search snippet suffix on sample page
1211
- #: src/ui/pages/ThemeSamplePage.tsx
1212
- msgid "feel deliberate instead of washed out."
1213
- msgstr "显得更有目的性,而不是暗淡无光。"
1214
-
1215
- #. @context: Table cell in the sample detail article
1216
- #: src/ui/pages/ThemeSamplePage.tsx
1217
- msgid "Feel editorial and slightly quieter."
1218
- msgstr "具有编辑风格,略显低调。"
1219
-
1220
- #. @context: Sample quote attribution title on the theme sample page
1221
- #: src/ui/pages/ThemeSamplePage.tsx
1222
- msgid "Field Notes on Interface Tone"
1223
- msgstr "关于界面语气的现场笔记"
1224
-
1225
- #. @context: Color theme preview card title
1226
- #. @context: Input value on sample page
1227
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1228
- #: src/ui/pages/ThemeSamplePage.tsx
1229
- msgid "Field notes on quiet design"
1230
- msgstr "克制设计手记"
1231
-
1232
- #. @context: Error toast when file storage is not set up
1233
- #. @context: Error when file storage is not set up
1234
- #: src/routes/api/upload.ts
1235
- #: src/routes/dash/settings.tsx
1236
- msgid "File storage isn't set up. Check your server config."
1237
- msgstr "未设置文件存储。请检查服务器配置。"
1238
-
1239
- #. @context: Toast after successful file upload
1240
- #: src/routes/api/upload.ts
1241
- msgid "File uploaded."
1242
- msgstr "文件已上传."
1243
-
1244
- #. @context: Archive media filter - files/documents
1245
- #: src/ui/pages/ArchivePage.tsx
1246
- msgid "Files"
1247
- msgstr "文件"
1248
-
1249
- #. @context: Settings item description for custom CSS
1250
- #: src/ui/dash/settings/SettingsRootContent.tsx
1251
- msgid "Fine-grained styling overrides"
1252
- msgstr "细粒度样式覆盖"
1253
-
1254
- #. @context: Label for the list of stable RSS feed URLs
1255
- #: src/ui/dash/settings/GeneralContent.tsx
1256
- msgid "Fixed feed URLs"
1257
- msgstr "固定 feed 链接"
1258
-
1259
- #. @context: Theme mode option description
1260
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1261
- msgid "Follow each visitor's system preference."
1262
- msgstr "跟随每位访问者的系统偏好。"
1263
-
1264
- #. @context: Appearance settings heading for font theme
1265
- #: src/ui/dash/appearance/FontThemeContent.tsx
1266
- msgid "Font theme"
1267
- msgstr "字体主题"
1268
-
1269
- #. @context: Settings item — font theme settings
1270
- #: src/ui/dash/settings/SettingsRootContent.tsx
1271
- msgid "Font Theme"
1272
- msgstr "字体主题"
1273
-
1274
- #. @context: Paragraph mentioning code on the sample detail article
1275
- #: src/ui/pages/ThemeSamplePage.tsx
1276
- msgid "For the same reason, inline code should stay neutral. Something like theme.siteAccent = soften(green, 12%) should not suddenly become the loudest thing on the page."
1277
- msgstr "也因为这个原因,行内代码应该保持中性。像 theme.siteAccent = soften(green, 12%) 这样的内容,不该突然变成页面里最吵的一部分。"
1278
-
1279
- #. @context: Search results count - multiple
1280
- #. placeholder {0}: String(results.length)
1281
- #: src/ui/pages/SearchPage.tsx
1282
- msgid "Found {0} results"
1283
- msgstr "找到 {0} 条结果"
1284
-
1285
- #. @context: Search results count - single
1286
- #: src/ui/pages/SearchPage.tsx
1287
- msgid "Found 1 result"
1288
- msgstr "找到 1 条结果"
1289
-
1290
- #. @context: Compose dialog - open fullscreen editor
1291
- #: src/ui/compose/ComposeDialog.tsx
1292
- msgid "Fullscreen"
1293
- msgstr "全屏"
1294
-
1295
- #. @context: Settings item — general settings
1296
- #. @context: Settings section heading
1297
- #: src/ui/dash/settings/GeneralContent.tsx
1298
- #: src/ui/dash/settings/SettingsRootContent.tsx
1299
- msgid "General"
1300
- msgstr "通用"
1301
-
1302
- #. @context: Compose publish settings slug summary when no custom slug is set
1303
- #: src/ui/compose/ComposeDialog.tsx
1304
- msgid "Generate automatically"
1305
- msgstr "自动生成"
1306
-
1307
- #. @context: Button to create new API token
1308
- #: src/ui/dash/settings/ApiTokensContent.tsx
1309
- msgid "Generate Token"
1310
- msgstr "生成 API 令牌"
1311
-
1312
- #. @context: Compose custom slug helper while generating a suggested slug
1313
- #: src/ui/compose/ComposeDialog.tsx
1314
- msgid "Generating a link..."
1315
- msgstr "正在生成链接..."
1316
-
1317
- #. @context: Compose link title placeholder
1318
- #: src/ui/compose/ComposeDialog.tsx
1319
- msgid "Give it a title..."
1320
- msgstr "给它起个标题..."
1321
-
1322
- #. @context: Table cell in the sample detail article
1323
- #: src/ui/pages/ThemeSamplePage.tsx
1324
- msgid "Guide the eye without taking over the layout."
1325
- msgstr "引导视线而不主导布局."
1326
-
1327
- #. @context: Section kicker for the usage guidance section on the brand asset page
1328
- #: src/ui/pages/BrandPage.tsx
1329
- msgid "Guidelines"
1330
- msgstr "使用指南"
1331
-
1332
- #. @context: Usage label for the square tile asset card
1333
- #: src/ui/pages/BrandPage.tsx
1334
- msgid "Hard edge"
1335
- msgstr "硬边"
1336
-
1337
- #. @context: Toast after saving max visible nav links setting
1338
- #: src/ui/dash/appearance/NavigationContent.tsx
1339
- msgid "Header link limit updated."
1340
- msgstr "页首链接数量限制已更新。"
1341
-
1342
- #. @context: Settings item description for navigation
1343
- #: src/ui/dash/settings/SettingsRootContent.tsx
1344
- msgid "Header links, home feed, and overflow menu"
1345
- msgstr "页首链接、首页视图和溢出菜单"
1346
-
1347
- #. @context: Description for the RSS system navigation toggle. %feed% is either Latest or Featured.
1348
- #: src/ui/dash/appearance/NavigationContent.tsx
1349
- msgid "Header RSS points to your %feed% feed (/feed). Change what /feed returns in General."
1350
- msgstr "页首 RSS 指向你的 %feed% feed(/feed)。可在通用设置中修改 /feed 的输出内容。"
1351
-
1352
- #. @context: Bullet item in the sample detail article
1353
- #: src/ui/pages/ThemeSamplePage.tsx
1354
- msgid "Headings should keep their hierarchy even when the accent gets softer."
1355
- msgstr "即使强调变弱,标题也应保持其层次结构。"
1356
-
1357
- #. @context: Hint text in alt text panel
1358
- #: src/ui/compose/ComposeDialog.tsx
1359
- msgid "Helps screen readers describe the image"
1360
- msgstr "帮助屏幕阅读器描述图片"
1361
-
1362
- #. @context: Archive visibility filter for posts hidden from Latest
1363
- #. @context: Compose publish settings visibility option
1364
- #. @context: Post badge for posts hidden from Latest
1365
- #: src/ui/compose/ComposeDialog.tsx
1366
- #: src/ui/dash/StatusBadge.tsx
1367
- #: src/ui/pages/ArchivePage.tsx
1368
- msgid "Hidden from Latest"
1369
- msgstr "从 Latest 隐藏"
1370
-
1371
- #. @context: Compose dropdown option for hiding a post from the Latest view
1372
- #: src/ui/compose/ComposeDialog.tsx
1373
- msgid "Hide from Latest"
1374
- msgstr "从 Latest 隐藏"
1375
-
1376
- #. @context: Collection sort order option
1377
- #. @context: Collection sort order option
1378
- #: src/ui/pages/CollectionPage.tsx
1379
- #: src/ui/shared/collection-management-labels.ts
1380
- msgid "Highest rated"
1381
- msgstr "评分最高"
1382
-
1383
- #. @context: Settings subsection heading for home page settings
1384
- #: src/ui/dash/settings/GeneralContent.tsx
1385
- msgid "Home"
1386
- msgstr "首页"
1387
-
1388
- #. @context: Toast after saving home default view setting
1389
- #: src/ui/dash/appearance/NavigationContent.tsx
1390
- msgid "Home feed updated."
1391
- msgstr "首页视图已更新。"
1392
-
1393
- #. @context: Description for the apple touch icon asset card
1394
- #: src/ui/pages/BrandPage.tsx
1395
- msgid "Home screen icon for iPhone and iPad shortcuts."
1396
- msgstr "用于 iPhone 和 iPad 快捷方式的主屏幕图标。"
1397
-
1398
- #. @context: Toast after auto-saving home settings
1399
- #: src/routes/dash/settings.tsx
1400
- msgid "Home settings updated."
1401
- msgstr "首页设置已更新。"
1402
-
1403
- #. @context: Generic hosted auth provider label when no explicit provider name is configured
1404
- #: src/ui/dash/settings/AccountMenuContent.tsx
1405
- msgid "Hosted account"
1406
- msgstr "托管账号"
1407
-
1408
- #. @context: Confirmation phrase the user must type to delete their account. {siteName} is the blog name.
1409
- #: src/ui/dash/settings/DeleteAccountContent.tsx
1410
- msgid "I want to delete {siteName}"
1411
- msgstr "我想删除 {siteName}"
1412
-
1413
- #. @context: Section kicker for the icon and preview downloads section
1414
- #: src/ui/pages/BrandPage.tsx
1415
- msgid "Icons and previews"
1416
- msgstr "图标与预览"
1417
-
1418
- #. @context: Closing paragraph on the sample detail article
1419
- #: src/ui/pages/ThemeSamplePage.tsx
1420
- msgid "If this article still feels like a page you want to keep reading, the palette is probably close."
1421
- msgstr "如果这篇文章仍然让你想继续阅读,那么配色可能已经很接近了。"
1422
-
1423
- #. @context: Alert body on theme sample page
1424
- #: src/ui/pages/ThemeSamplePage.tsx
1425
- msgid "If this page feels too branded, the first place to soften is the default theme’s site accent, not the border or body text."
1426
- msgstr "如果这一页显得太有品牌姿态,最先该收一收的是默认主题的站点强调色,而不是边框或正文颜色。"
1427
-
1428
- #. @context: Archive media filter - images
1429
- #: src/ui/pages/ArchivePage.tsx
1430
- msgid "Images"
1431
- msgstr "图片"
1432
-
1433
- #. @context: Link to the thread root from a post footer
1434
- #: src/ui/shared/PostFooter.tsx
1435
- msgid "In thread →"
1436
- msgstr "在线程中 →"
1437
-
1438
- #. @context: Accessible label for the asset keyword list on the public brand page
1439
- #: src/ui/pages/BrandPage.tsx
1440
- msgid "Included assets"
1441
- msgstr "包含资源"
1442
-
1443
- #. @context: Label above the included collections list on an aggregate collection page
1444
- #: src/ui/pages/CollectionPage.tsx
1445
- msgid "Includes"
1446
- msgstr ""
1447
-
1448
- #. @context: Site accent sample badge
1449
- #: src/ui/pages/ThemeSamplePage.tsx
1450
- msgid "Inline emphasis"
1451
- msgstr "行内强调"
1452
-
1453
- #. @context: Table cell in the sample detail article
1454
- #: src/ui/pages/ThemeSamplePage.tsx
1455
- msgid "Inline link"
1456
- msgstr "内联链接"
1457
-
1458
- #. @context: Sample note summary suffix on the theme sample page
1459
- #: src/ui/pages/ThemeSamplePage.tsx
1460
- msgid "instead of judging it as an isolated swatch."
1461
- msgstr "而不是把它当作孤立的色样来判断。"
1462
-
1463
- #. @context: Sample quote text on the theme sample page
1464
- #: src/ui/pages/ThemeSamplePage.tsx
1465
- msgid "Interfaces for reading should guide the eye, not keep asking for attention."
1466
- msgstr "供阅读的界面应该引导视线,而不是不断争取注意力。"
1467
-
1468
- #. @context: Usage label for the apple touch icon asset card
1469
- #: src/ui/pages/BrandPage.tsx
1470
- msgid "iOS home screen"
1471
- msgstr "iOS 主屏幕"
1472
-
1473
- #. @context: Accessible label for the Jant logo mark
1474
- #: src/ui/pages/BrandPage.tsx
1475
- msgid "Jant logo"
1476
- msgstr "Jant 徽标"
1477
-
1478
- #. @context: Body paragraph on the theme sample page
1479
- #: src/ui/pages/ThemeSamplePage.tsx
1480
- msgid "Jant looks best when the accent feels editorial. Buttons can stay sturdy, but inline emphasis should feel like a pen mark, not a dashboard highlight."
1481
- msgstr "Jant 在强调采用编辑式风格时效果最好。按钮可以保持稳重,但行内强调应该像笔迹,而不是仪表盘式的高亮。"
1482
-
1483
- #. @context: Active nav link label on sample page
1484
- #: src/ui/pages/ThemeSamplePage.tsx
1485
- msgid "Journal"
1486
- msgstr "日志"
1487
-
1488
- #. @context: Guidance title on the brand asset page
1489
- #: src/ui/pages/BrandPage.tsx
1490
- msgid "Keep the artwork unchanged."
1491
- msgstr "保持图稿不变。"
1492
-
1493
- #. @context: Collection slug validation error for links that are too long
1494
- #: src/ui/shared/collection-management-labels.ts
1495
- msgid "Keep this link under 200 characters."
1496
- msgstr "把这个链接控制在 200 个字符以内。"
1497
-
1498
- #. @context: Nav item label field
1499
- #: src/ui/dash/appearance/NavigationContent.tsx
1500
- msgid "Label"
1501
- msgstr "标签"
1502
-
1503
- #. @context: Placeholder for an optional divider label in collections organize mode
1504
- #: src/ui/shared/CollectionsManager.tsx
1505
- msgid "Label (optional)"
1506
- msgstr "标签(可选)"
1507
-
1508
- #. @context: Error toast when nav link fields are empty
1509
- #: src/ui/dash/appearance/NavigationContent.tsx
1510
- msgid "Label and URL are required"
1511
- msgstr "标签和 URL 为必填项"
1512
-
1513
- #. @context: Error toast when nav label is empty
1514
- #: src/ui/dash/appearance/NavigationContent.tsx
1515
- msgid "Label is required"
1516
- msgstr "标签为必填项"
1517
-
1518
- #. @context: Settings form field
1519
- #: src/ui/dash/settings/GeneralContent.tsx
1520
- msgid "Language"
1521
- msgstr "语言"
1522
-
1523
- #. @context: Settings subsection heading for language and time zone fields
1524
- #: src/ui/dash/settings/GeneralContent.tsx
1525
- msgid "Language & Time"
1526
- msgstr "语言与时间"
1527
-
1528
- #. @context: Toast after saving language and time settings
1529
- #: src/routes/dash/settings.tsx
1530
- msgid "Language and time updated."
1531
- msgstr "语言和时间已更新。"
1532
-
1533
- #. @context: Token last used date
1534
- #. placeholder {0}: formatDate(token.lastUsedAt)
1535
- #: src/ui/dash/settings/ApiTokensContent.tsx
1536
- msgid "Last used {0}"
1537
- msgstr "上次使用 {0}"
1538
-
1539
- #. @context: Active browse tab label on sample page
1540
- #. @context: Browse filter for latest posts
1541
- #. @context: Browse filter label
1542
- #. @context: Browse filter label
1543
- #. @context: Browse filter label for latest posts
1544
- #. @context: Browser page title for the latest feed
1545
- #. @context: Browser page title for the latest feed
1546
- #. @context: Page heading for the latest posts feed
1547
- #. @context: Select option for using latest posts as the main RSS feed
1548
- #: src/routes/pages/home.tsx
1549
- #: src/routes/pages/latest.tsx
1550
- #: src/ui/dash/appearance/NavigationContent.tsx
1551
- #: src/ui/dash/appearance/NavigationContent.tsx
1552
- #: src/ui/dash/appearance/NavigationContent.tsx
1553
- #: src/ui/dash/settings/GeneralContent.tsx
1554
- #: src/ui/layouts/SiteLayout.tsx
1555
- #: src/ui/pages/HomePage.tsx
1556
- #: src/ui/pages/ThemeSamplePage.tsx
1557
- msgid "Latest"
1558
- msgstr "最新"
1559
-
1560
- #. @context: Label for the explicit latest RSS feed URL
1561
- #: src/ui/dash/settings/GeneralContent.tsx
1562
- msgid "Latest feed"
1563
- msgstr "Latest feed"
1564
-
1565
- #. @context: RSS and Atom feed title suffix for the latest public posts feed
1566
- #. @context: RSS autodiscovery title for the latest public posts feed
1567
- #: src/routes/feed/rss.ts
1568
- #: src/ui/layouts/BaseLayout.tsx
1569
- msgid "Latest posts"
1570
- msgstr "最新帖子"
1571
-
1572
- #. @context: Compose publish settings slug help text
1573
- #: src/ui/compose/ComposeDialog.tsx
1574
- msgid "Leave blank to generate one automatically."
1575
- msgstr "留空则自动生成。"
1576
-
1577
- #. @context: Suffix after Custom CSS link on color theme page
1578
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1579
- msgid "lets you override any theme variable."
1580
- msgstr "可让你覆盖任意主题变量。"
1581
-
1582
- #. @context: Theme mode option label
1583
- #. @context: Theme mode option on sample page
1584
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1585
- #: src/ui/pages/ThemeSamplePage.tsx
1586
- msgid "Light"
1587
- msgstr "浅色"
1588
-
1589
- #. @context: Nav item type badge
1590
- #: src/ui/dash/appearance/NavigationContent.tsx
1591
- msgid "link"
1592
- msgstr "链接"
1593
-
1594
- #. @context: Compose format tab
1595
- #. @context: Post format badge - link
1596
- #. @context: Post format label - link
1597
- #: src/ui/compose/ComposeDialog.tsx
1598
- #: src/ui/dash/FormatBadge.tsx
1599
- #: src/ui/pages/ArchivePage.tsx
1600
- msgid "Link"
1601
- msgstr "链接"
1602
-
1603
- #. @context: Description for the archive system navigation toggle
1604
- #: src/ui/shared/navigation-labels.ts
1605
- msgid "Link to the post archive"
1606
- msgstr "链接到文章归档页"
1607
-
1608
- #. @context: Description for the collections system navigation toggle
1609
- #: src/ui/shared/navigation-labels.ts
1610
- msgid "Link to your collections page"
1611
- msgstr "链接到你的合集页"
1612
-
1613
- #. @context: Post format label plural - links
1614
- #: src/ui/pages/ArchivePage.tsx
1615
- msgid "Links"
1616
- msgstr "链接"
1617
-
1618
- #. @context: Bullet item in the sample detail article
1619
- #: src/ui/pages/ThemeSamplePage.tsx
1620
- msgid "Links should read clearly without glowing against the page."
1621
- msgstr "链接应清晰可读,不应在页面上发光。"
1622
-
1623
- #. @context: Label for max visible nav links number input
1624
- #: src/ui/dash/appearance/NavigationContent.tsx
1625
- msgid "Links shown in header"
1626
- msgstr "页眉显示的链接数"
1627
-
1628
- #. @context: Label for list posts curl example
1629
- #: src/ui/dash/settings/ApiTokensContent.tsx
1630
- msgid "List posts:"
1631
- msgstr "列出帖子:"
1632
-
1633
- #. @context: Inline link label in the sample note post body
1634
- #. @context: Inline link label in the sample note summary
1635
- #: src/ui/pages/ThemeSamplePage.tsx
1636
- #: src/ui/pages/ThemeSamplePage.tsx
1637
- msgid "live theme controls"
1638
- msgstr "实时主题控制"
1639
-
1640
- #. @context: Pagination button - load more items
1641
- #: src/ui/shared/Pagination.tsx
1642
- msgid "Load more"
1643
- msgstr "加载更多"
1644
-
1645
- #. @context: Asset keyword on the public brand asset page
1646
- #. @context: Asset keyword on the public brand asset page
1647
- #. @context: Title for the default logo asset card
1648
- #. @context: Title for the default logo card
1649
- #: src/ui/pages/BrandPage.tsx
1650
- #: src/ui/pages/BrandPage.tsx
1651
- #: src/ui/pages/BrandPage.tsx
1652
- #: src/ui/pages/BrandPage.tsx
1653
- msgid "Logo"
1654
- msgstr "徽标"
1655
-
1656
- #. @context: Section kicker for the logo downloads section
1657
- #: src/ui/pages/BrandPage.tsx
1658
- msgid "Logos"
1659
- msgstr "品牌标志"
1660
-
1661
- #. @context: Ordered list item in the sample detail article
1662
- #: src/ui/pages/ThemeSamplePage.tsx
1663
- msgid "Look at the footer metadata last, to make sure the accent is not fighting the typography."
1664
- msgstr "最后查看页脚的元数据,确保强调色不会与排版产生冲突."
1665
-
1666
- #. @context: Theme group description on color theme settings page
1667
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1668
- msgid "Low-distraction palettes for a cleaner, calmer reading rhythm."
1669
- msgstr "低干扰配色,带来更干净、更平静的阅读节奏。"
1670
-
1671
- #. @context: Label for the canonical /feed URL
1672
- #. @context: RSS autodiscovery title for the site's main feed
1673
- #: src/ui/dash/settings/GeneralContent.tsx
1674
- #: src/ui/layouts/BaseLayout.tsx
1675
- msgid "Main feed"
1676
- msgstr "主 feed"
1677
-
1678
- #. @context: Settings field label for the canonical /feed output
1679
- #: src/ui/dash/settings/GeneralContent.tsx
1680
- msgid "Main RSS feed"
1681
- msgstr "主 RSS feed"
1682
-
1683
- #. @context: Settings item description for hosted account management in the connected provider
1684
- #: src/ui/dash/settings/AccountMenuContent.tsx
1685
- msgid "Manage password and hosted access in {providerLabel}"
1686
- msgstr "在 {providerLabel} 中管理密码和托管站点访问权限"
1687
-
1688
- #. @context: Intro text on the account settings menu page below the title
1689
- #: src/ui/dash/settings/AccountMenuContent.tsx
1690
- msgid "Manage sign-in security, exports, and irreversible actions."
1691
- msgstr "管理登录安全、导出和不可逆操作."
1692
-
1693
- #. @context: Intro text on the hosted account settings menu page below the title
1694
- #: src/ui/dash/settings/AccountMenuContent.tsx
1695
- msgid "Manage this site's active sessions here. Password and hosted access are managed through {providerLabel}."
1696
- msgstr "在这里管理这个站点的当前会话。密码和托管站点访问权限通过 {providerLabel} 管理。"
1697
-
1698
- #. @context: Color theme preview date label
1699
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1700
- msgid "March 14"
1701
- msgstr "3 月 14 日"
1702
-
1703
- #. @context: Date label on theme sample content card
1704
- #: src/ui/pages/ThemeSamplePage.tsx
1705
- msgid "March 15"
1706
- msgstr "3月15日"
1707
-
1708
- #. @context: Placeholder hint for markdown-enabled textareas
1709
- #: src/ui/dash/settings/GeneralContent.tsx
1710
- msgid "Markdown supported"
1711
- msgstr "支持 Markdown"
1712
-
1713
- #. @context: Compose toolbar - media tooltip
1714
- #: src/ui/compose/ComposeDialog.tsx
1715
- msgid "Media"
1716
- msgstr "媒体"
1717
-
1718
- #. @context: Aria-label for collections page more button
1719
- #. @context: Button label for a menu with more actions
1720
- #. @context: Post menu trigger label in the post footer
1721
- #: src/routes/dash/custom-urls.tsx
1722
- #: src/ui/shared/collection-management-labels.ts
1723
- #: src/ui/shared/PostFooter.tsx
1724
- msgid "More actions"
1725
- msgstr "更多操作"
1726
-
1727
- #. @context: Theme group description on color theme settings page
1728
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1729
- msgid "More atmospheric palettes with a stronger sense of time, place, or tone."
1730
- msgstr "氛围感更强的配色,时间、地点和情绪感更鲜明。"
1731
-
1732
- #. @context: Button to show overflow nav links
1733
- #: src/ui/layouts/SiteLayout.tsx
1734
- msgid "More links"
1735
- msgstr "更多链接"
1736
-
1737
- #. @context: Helper text in the quick-create collection dialog
1738
- #: src/ui/shared/collection-management-labels.ts
1739
- msgid "More options are available after you create it."
1740
- msgstr "创建后还可设置更多选项。"
1741
-
1742
- #. @context: Fallback theme group heading on color theme page
1743
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1744
- msgid "More Palettes"
1745
- msgstr "更多配色"
1746
-
1747
- #. @context: Secondary badge label on sample page
1748
- #. @context: Token label on sample page
1749
- #: src/ui/pages/ThemeSamplePage.tsx
1750
- #: src/ui/pages/ThemeSamplePage.tsx
1751
- msgid "Muted"
1752
- msgstr "柔和"
1753
-
1754
- #. @context: Collection title placeholder
1755
- #: src/ui/shared/collection-management-labels.ts
1756
- msgid "My Collection"
1757
- msgstr "我的合集"
1758
-
1759
- #. @context: Settings item description for general
1760
- #: src/ui/dash/settings/SettingsRootContent.tsx
1761
- msgid "Name, metadata, language, and search defaults"
1762
- msgstr "名称、元数据、语言和搜索默认设置"
1763
-
1764
- #. @context: Settings item — navigation settings
1765
- #: src/ui/dash/settings/SettingsRootContent.tsx
1766
- msgid "Navigation"
1767
- msgstr "导航"
1768
-
1769
- #. @context: Navigation section heading on sample page
1770
- #: src/ui/pages/ThemeSamplePage.tsx
1771
- msgid "Navigation and reading states"
1772
- msgstr "导航和阅读状态"
1773
-
1774
- #. @context: Section heading for nav items
1775
- #: src/ui/dash/appearance/NavigationContent.tsx
1776
- msgid "Navigation items"
1777
- msgstr "导航项"
1778
-
1779
- #. @context: Toast after saving navigation item order
1780
- #: src/ui/dash/appearance/NavigationContent.tsx
1781
- msgid "Navigation order updated."
1782
- msgstr "导航排序已更新。"
1783
-
1784
- #. @context: Label for nav preview section
1785
- #. @context: Label for nav preview section
1786
- #: src/ui/dash/appearance/NavigationContent.tsx
1787
- #: src/ui/dash/appearance/NavigationContent.tsx
1788
- msgid "Navigation Preview"
1789
- msgstr "导航预览"
1790
-
1791
- #. @context: Button to create a collection from collections page
1792
- #. @context: Page title for new collection
1793
- #. @context: Page title for new collection
1794
- #: src/ui/pages/CollectionEditorPage.tsx
1795
- #: src/ui/pages/CollectionEditorPage.tsx
1796
- #: src/ui/shared/CollectionsManager.tsx
1797
- msgid "New Collection"
1798
- msgstr "新建合集"
1799
-
1800
- #. @context: Button to create new custom URL
1801
- #. @context: Button to create new custom URL
1802
- #. @context: Page heading
1803
- #: src/routes/dash/custom-urls.tsx
1804
- #: src/routes/dash/custom-urls.tsx
1805
- #: src/routes/dash/custom-urls.tsx
1806
- msgid "New Custom URL"
1807
- msgstr "新建自定义 URL"
1808
-
1809
- #. @context: Menu action to create a divider on collections page
1810
- #: src/ui/shared/CollectionsManager.tsx
1811
- msgid "New Divider"
1812
- msgstr "新建分隔线"
1813
-
1814
- #. @context: Password form field
1815
- #. @context: Password reset form field
1816
- #: src/routes/auth/reset.tsx
1817
- #: src/ui/dash/settings/AccountContent.tsx
1818
- msgid "New Password"
1819
- msgstr "新密码"
1820
-
1821
- #. @context: Browser page title for the new post page
1822
- #. @context: Collection page quick compose button aria label
1823
- #. @context: Page title for the new post page
1824
- #: src/routes/pages/new.tsx
1825
- #: src/ui/pages/CollectionPage.tsx
1826
- #: src/ui/pages/ComposePage.tsx
1827
- msgid "New post"
1828
- msgstr "新建帖子"
1829
-
1830
- #. @context: Collection sort order option
1831
- #. @context: Collection sort order option
1832
- #: src/ui/pages/CollectionPage.tsx
1833
- #: src/ui/shared/collection-management-labels.ts
1834
- msgid "Newest first"
1835
- msgstr "最新在前"
1836
-
1837
- #. @context: Pagination button - next page
1838
- #. @context: Pagination button - next page
1839
- #. @context: Pagination next label on sample page
1840
- #: src/ui/pages/ThemeSamplePage.tsx
1841
- #: src/ui/shared/Pagination.tsx
1842
- #: src/ui/shared/Pagination.tsx
1843
- msgid "Next"
1844
- msgstr "下一页"
1845
-
1846
- #. @context: Empty state when no sessions exist (shouldn't normally appear)
1847
- #: src/ui/dash/settings/SessionsContent.tsx
1848
- msgid "No active sessions right now. Signed-in devices show up here."
1849
- msgstr "目前没有活动会话。已登录的设备会显示在这里。"
1850
-
1851
- #. @context: Compose collection combobox empty state when search has no results
1852
- #: src/ui/compose/ComposeDialog.tsx
1853
- msgid "No collections match that search. Try a different name."
1854
- msgstr "没有合集匹配这次搜索。试试别的名称。"
1855
-
1856
- #. @context: Empty state message on collections page
1857
- #. @context: Empty state message on collections page
1858
- #. @context: Empty state message on collections page
1859
- #: src/ui/pages/CollectionsPage.tsx
1860
- #: src/ui/shared/CollectionDirectory.tsx
1861
- #: src/ui/shared/CollectionsManager.tsx
1862
- msgid "No collections yet. Start one to organize posts by topic."
1863
- msgstr "还没有合集。创建一个合集,按主题整理帖子。"
1864
-
1865
- #. @context: Empty state message
1866
- #: src/routes/dash/custom-urls.tsx
1867
- msgid "No custom URLs yet. Create one to add redirects or custom paths for posts."
1868
- msgstr "还没有自定义 URL。创建一个以便为文章添加重定向或自定义路径。"
1869
-
1870
- #. @context: Drafts panel empty state
1871
- #: src/ui/compose/ComposeDialog.tsx
1872
- msgid "No drafts yet. Save a draft to find it here."
1873
- msgstr "还没有草稿。保存草稿后会在此找到它。"
1874
-
1875
- #. @context: Error toast when no file was selected for upload
1876
- #. @context: Error when no file was selected for upload
1877
- #: src/routes/api/upload.ts
1878
- #: src/routes/dash/settings.tsx
1879
- msgid "No file selected. Choose a file to upload."
1880
- msgstr "未选择文件。请选择要上传的文件。"
1881
-
1882
- #. @context: Empty state for navigation items
1883
- #: src/ui/dash/appearance/NavigationContent.tsx
1884
- msgid "No navigation items yet. Add links or enable system items below."
1885
- msgstr "还没有导航项目。添加链接或在下方启用系统项目。"
1886
-
1887
- #. @context: Search empty results
1888
- #: src/ui/pages/SearchPage.tsx
1889
- msgid "No results. Try different keywords."
1890
- msgstr "没有结果。尝试不同的关键词。"
1891
-
1892
- #. @context: Archive empty state with filters applied
1893
- #: src/ui/pages/ArchivePage.tsx
1894
- msgid "No threads match these filters. Try adjusting your selection or clear all filters."
1895
- msgstr "没有符合这些筛选条件的帖子串。调整筛选条件,或清除所有筛选。"
1896
-
1897
- #. @context: Color theme preview format label
1898
- #. @context: Compose format tab
1899
- #. @context: Post format badge - note
1900
- #. @context: Post format label - note
1901
- #. @context: Post format label on theme sample content card
1902
- #: src/ui/compose/ComposeDialog.tsx
1903
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1904
- #: src/ui/dash/FormatBadge.tsx
1905
- #: src/ui/pages/ArchivePage.tsx
1906
- #: src/ui/pages/ThemeSamplePage.tsx
1907
- msgid "Note"
1908
- msgstr "笔记"
1909
-
1910
- #. @context: Inline link label in the sample quote commentary
1911
- #: src/ui/pages/ThemeSamplePage.tsx
1912
- msgid "note treatment"
1913
- msgstr "笔记样式"
1914
-
1915
- #. @context: Post format label plural - notes
1916
- #: src/ui/pages/ArchivePage.tsx
1917
- msgid "Notes"
1918
- msgstr "笔记"
1919
-
1920
- #. @context: Empty state message on home page
1921
- #: src/ui/pages/HomePage.tsx
1922
- msgid "Nothing here yet."
1923
- msgstr "这里还没有内容。"
1924
-
1925
- #. @context: Empty state message on an aggregate collection page
1926
- #: src/ui/pages/CollectionPage.tsx
1927
- msgid "Nothing here yet. Add posts to one of these collections to fill this view."
1928
- msgstr ""
1929
-
1930
- #. @context: Empty state message on featured page
1931
- #: src/ui/pages/FeaturedPage.tsx
1932
- msgid "Nothing in Featured yet. Mark a post as featured to show it here."
1933
- msgstr "精选里还没有内容。把一篇文章标记为精选后,它就会显示在这里。"
1934
-
1935
- #. @context: Collection sort order option
1936
- #. @context: Collection sort order option
1937
- #: src/ui/pages/CollectionPage.tsx
1938
- #: src/ui/shared/collection-management-labels.ts
1939
- msgid "Oldest first"
1940
- msgstr "最旧优先"
1941
-
1942
- #. @context: Compose publish settings help text for private visibility
1943
- #: src/ui/compose/ComposeDialog.tsx
1944
- msgid "Only visible when signed in."
1945
- msgstr "仅登录后可见。"
1946
-
1947
- #. @context: Ordered list item in the sample detail article
1948
- #: src/ui/pages/ThemeSamplePage.tsx
1949
- msgid "Open a few links and check whether they still feel native to the page."
1950
- msgstr "打开几个链接,检查它们是否仍然像页面原生的一部分"
1951
-
1952
- #. @context: Accessible label for the external-link icon in the post footer
1953
- #: src/ui/shared/PostFooter.tsx
1954
- msgid "Open external link"
1955
- msgstr "打开外部链接"
1956
-
1957
- #. @context: Button label to open a raw brand asset in the browser
1958
- #: src/ui/pages/BrandPage.tsx
1959
- msgid "Open raw asset"
1960
- msgstr "打开原始资源"
1961
-
1962
- #. @context: Button label to open the raw PNG asset in the browser
1963
- #: src/ui/pages/BrandPage.tsx
1964
- msgid "Open raw PNG"
1965
- msgstr "打开原始 PNG"
1966
-
1967
- #. @context: Button label to open the raw SVG asset in the browser
1968
- #: src/ui/pages/BrandPage.tsx
1969
- msgid "Open raw SVG"
1970
- msgstr "打开原始 SVG"
1971
-
1972
- #. @context: Settings item description for the hosted delete-site entry in the account menu
1973
- #: src/ui/dash/settings/AccountMenuContent.tsx
1974
- msgid "Open the hosted site controls in {providerLabel} to cancel billing or permanently delete this site."
1975
- msgstr ""
1976
-
1977
- #. @context: Menu action to organize collections
1978
- #: src/ui/shared/CollectionsManager.tsx
1979
- msgid "Organize"
1980
- msgstr "整理"
1981
-
1982
- #. @context: Outline badge label on sample page
1983
- #: src/ui/pages/ThemeSamplePage.tsx
1984
- msgid "Outline"
1985
- msgstr "线框"
1986
-
1987
- #. @context: Settings item description for color theme
1988
- #: src/ui/dash/settings/SettingsRootContent.tsx
1989
- msgid "Palette, surface tone, and overall mood"
1990
- msgstr "调色板、表面色调与整体氛围"
1991
-
1992
- #. @context: Theme group description on color theme settings page
1993
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1994
- msgid "Paper-first palettes with warmer surfaces and a softer, handwritten feel."
1995
- msgstr "以纸感为先的配色,界面更温暖,也更有手写感。"
1996
-
1997
- #. @context: Settings item — password settings
1998
- #. @context: Setup/signin form field - password
1999
- #. @context: Setup/signin form field - password
2000
- #: src/routes/auth/setup.tsx
2001
- #: src/routes/auth/signin.tsx
2002
- #: src/ui/dash/settings/AccountMenuContent.tsx
2003
- msgid "Password"
2004
- msgstr "密码"
2005
-
2006
- #. @context: Toast after changing account password
2007
- #: src/routes/dash/settings.tsx
2008
- msgid "Password changed."
2009
- msgstr "密码已更改."
2010
-
2011
- #. @context: Error shown when password changes are blocked in demo mode
2012
- #. @context: Error shown when password reset is blocked in demo mode
2013
- #: src/routes/auth/reset.tsx
2014
- #: src/routes/dash/settings.tsx
2015
- msgid "Password changes are off in demo mode. Sign in with the shared demo credentials."
2016
- msgstr "演示模式下不提供密码修改。请使用共享的演示凭据登录。"
2017
-
2018
- #. @context: Error toast when new password and confirmation differ
2019
- #: src/routes/dash/settings.tsx
2020
- msgid "Passwords don't match. Make sure both fields are identical."
2021
- msgstr "密码不匹配。请确保两次输入相同。"
2022
-
2023
- #. @context: Attached text placeholder
2024
- #: src/ui/compose/ComposeDialog.tsx
2025
- msgid ""
2026
- "Paste a long article, AI response, or any text...\n"
2027
- "\n"
2028
- "Markdown formatting will be preserved."
2029
- msgstr ""
2030
- "粘贴一篇长文章、AI 回复或任何文本...\n"
2031
- "\n"
2032
- "Markdown 格式将被保留."
2033
-
2034
- #. @context: Compose link URL placeholder
2035
- #: src/ui/compose/ComposeDialog.tsx
2036
- msgid "Paste a URL..."
2037
- msgstr "粘贴链接..."
2038
-
2039
- #. @context: Custom URL form field
2040
- #: src/routes/dash/custom-urls.tsx
2041
- msgid "Path"
2042
- msgstr "路径"
2043
-
2044
- #. @context: Settings item description for account deletion
2045
- #: src/ui/dash/settings/AccountMenuContent.tsx
2046
- msgid "Permanently delete all data and reset the blog"
2047
- msgstr "永久删除所有数据并重置博客"
2048
-
2049
- #. @context: Post badge - pinned
2050
- #: src/ui/dash/StatusBadge.tsx
2051
- msgid "Pinned"
2052
- msgstr "已置顶"
2053
-
2054
- #. @context: Compose button - publish post
2055
- #. @context: Custom URL target type badge for a post
2056
- #. @context: Custom URL type option
2057
- #: src/routes/dash/custom-urls.tsx
2058
- #: src/routes/dash/custom-urls.tsx
2059
- #: src/ui/compose/ComposeDialog.tsx
2060
- msgid "Post"
2061
- msgstr "发布"
2062
-
2063
- #. @context: Compose dropdown option - publish post visible only when logged in
2064
- #: src/ui/compose/ComposeDialog.tsx
2065
- msgid "Post as Private"
2066
- msgstr "以私密方式发布"
2067
-
2068
- #. @context: Compose publish button for posts hidden from Latest
2069
- #: src/ui/compose/ComposeDialog.tsx
2070
- msgid "Post hidden"
2071
- msgstr ""
2072
-
2073
- #. @context: Compose publish button for private visibility
2074
- #: src/ui/compose/ComposeDialog.tsx
2075
- msgid "Post privately"
2076
- msgstr "私密发布"
2077
-
2078
- #. @context: Hover hint for the homepage compose shortcut
2079
- #: src/ui/compose/ComposePrompt.tsx
2080
- msgid "Press N to write"
2081
- msgstr "按 N 开始写作"
2082
-
2083
- #. @context: Ghost button label on sample page
2084
- #: src/ui/pages/ThemeSamplePage.tsx
2085
- msgid "Preview"
2086
- msgstr "预览"
2087
-
2088
- #. @context: Pagination button - previous page
2089
- #. @context: Pagination button - previous page
2090
- #. @context: Pagination previous label on sample page
2091
- #: src/ui/pages/ThemeSamplePage.tsx
2092
- #: src/ui/shared/Pagination.tsx
2093
- #: src/ui/shared/Pagination.tsx
2094
- msgid "Previous"
2095
- msgstr "上一页"
2096
-
2097
- #. @context: Token label on sample page
2098
- #: src/ui/pages/ThemeSamplePage.tsx
2099
- msgid "Primary"
2100
- msgstr "主色"
2101
-
2102
- #. @context: Table cell in the sample detail article
2103
- #: src/ui/pages/ThemeSamplePage.tsx
2104
- msgid "Primary button"
2105
- msgstr "主按钮"
2106
-
2107
- #. @context: Description for the default logo asset card
2108
- #: src/ui/pages/BrandPage.tsx
2109
- msgid "Primary Jant logo for websites, docs, press coverage, and editorial layouts."
2110
- msgstr "用于网站、文档、媒体报道和编辑版式的主要 Jant 标志."
2111
-
2112
- #. @context: Section title for the logo downloads section
2113
- #: src/ui/pages/BrandPage.tsx
2114
- msgid "Primary logo files"
2115
- msgstr "主要徽标文件"
2116
-
2117
- #. @context: Archive visibility filter - private posts
2118
- #. @context: Compose publish settings visibility option
2119
- #: src/ui/compose/ComposeDialog.tsx
2120
- #: src/ui/pages/ArchivePage.tsx
2121
- msgid "Private"
2122
- msgstr "私密"
2123
-
2124
- #. @context: Avatar upload button text while generating favicon variants
2125
- #: src/ui/dash/settings/AvatarContent.tsx
2126
- msgid "Processing..."
2127
- msgstr "处理中..."
2128
-
2129
- #. @context: Archive visibility filter - public posts
2130
- #. @context: Compose publish settings visibility option
2131
- #: src/ui/compose/ComposeDialog.tsx
2132
- #: src/ui/pages/ArchivePage.tsx
2133
- msgid "Public"
2134
- msgstr "公开"
2135
-
2136
- #. @context: Confirm close action sheet - publish update button for editing published post
2137
- #. @context: Primary button label on sample page
2138
- #: src/ui/compose/ComposeDialog.tsx
2139
- #: src/ui/pages/ThemeSamplePage.tsx
2140
- msgid "Publish"
2141
- msgstr "发布"
2142
-
2143
- #. @context: Compose publish settings panel title
2144
- #: src/ui/compose/ComposeDialog.tsx
2145
- msgid "Publish settings"
2146
- msgstr "发布设置"
2147
-
2148
- #. @context: Post status badge - published
2149
- #: src/ui/dash/StatusBadge.tsx
2150
- msgid "Published"
2151
- msgstr "已发布"
2152
-
2153
- #. @context: Tooltip text for the archive tile published timestamp
2154
- #. @context: Tooltip text for the published timestamp in the post footer
2155
- #: src/ui/pages/ArchivePage.tsx
2156
- #: src/ui/shared/PostFooter.tsx
2157
- msgid "Published on {date} at {time}"
2158
- msgstr "发布于 {date} {time}"
2159
-
2160
- #. @context: Toast shown after successful deferred publish
2161
- #: src/ui/compose/ComposeDialog.tsx
2162
- msgid "Published!"
2163
- msgstr "已发布!"
2164
-
2165
- #. @context: Search highlight text on sample page
2166
- #: src/ui/pages/ThemeSamplePage.tsx
2167
- msgid "quiet design"
2168
- msgstr "低调设计"
2169
-
2170
- #. @context: Muted sample label
2171
- #: src/ui/pages/ThemeSamplePage.tsx
2172
- msgid "Quiet metadata"
2173
- msgstr "低调元数据"
2174
-
2175
- #. @context: Theme group heading on color theme settings page
2176
- #: src/ui/dash/appearance/ColorThemeContent.tsx
2177
- msgid "Quiet Neutral"
2178
- msgstr "克制中性色"
2179
-
2180
- #. @context: Color theme preview card secondary sentence
2181
- #: src/ui/dash/appearance/ColorThemeContent.tsx
2182
- msgid "Quiet surfaces let writing lead."
2183
- msgstr "安静的界面应让文字先说话。"
2184
-
2185
- #. @context: Compose format tab
2186
- #. @context: Post format badge - quote
2187
- #. @context: Post format label - quote
2188
- #: src/ui/compose/ComposeDialog.tsx
2189
- #: src/ui/dash/FormatBadge.tsx
2190
- #: src/ui/pages/ArchivePage.tsx
2191
- msgid "Quote"
2192
- msgstr "引用"
2193
-
2194
- #. @context: Bullet item in the sample detail article
2195
- #: src/ui/pages/ThemeSamplePage.tsx
2196
- msgid "Quoted or highlighted passages should feel like annotations, not warnings."
2197
- msgstr "引用或突出显示的段落应该像注释,而不是警告."
2198
-
2199
- #. @context: Post format label plural - quotes
2200
- #: src/ui/pages/ArchivePage.tsx
2201
- msgid "Quotes"
2202
- msgstr "引用"
2203
-
2204
- #. @context: Compose toolbar - rate tooltip
2205
- #: src/ui/compose/ComposeDialog.tsx
2206
- msgid "Rate"
2207
- msgstr "评分"
2208
-
2209
- #. @context: Ordered list item in the sample detail article
2210
- #: src/ui/pages/ThemeSamplePage.tsx
2211
- msgid "Read the page from top to bottom without looking at the swatches."
2212
- msgstr "从上到下阅读页面,不要查看色板。"
2213
-
2214
- #. @context: Inline link label on sample page
2215
- #: src/ui/pages/ThemeSamplePage.tsx
2216
- msgid "Read the palette as content first"
2217
- msgstr "先将调色板作为内容读取"
2218
-
2219
- #. @context: Color theme preview inline link label
2220
- #: src/ui/dash/appearance/ColorThemeContent.tsx
2221
- msgid "Read why"
2222
- msgstr "了解原因"
2223
-
2224
- #. @context: Collection tag on sample quote post
2225
- #: src/ui/pages/ThemeSamplePage.tsx
2226
- msgid "Reading"
2227
- msgstr "阅读"
2228
-
2229
- #. @context: Section heading for real post component samples on the theme sample page
2230
- #: src/ui/pages/ThemeSamplePage.tsx
2231
- msgid "Real post components"
2232
- msgstr "真实文章组件"
2233
-
2234
- #. @context: Custom URL target type badge for a redirect
2235
- #. @context: Custom URL type option
2236
- #: src/routes/dash/custom-urls.tsx
2237
- #: src/routes/dash/custom-urls.tsx
2238
- msgid "Redirect"
2239
- msgstr "重定向"
2240
-
2241
- #. @context: Redirect type field
2242
- #: src/routes/dash/custom-urls.tsx
2243
- msgid "Redirect Type"
2244
- msgstr "重定向类型"
2245
-
2246
- #. @context: Settings item description for custom URLs
2247
- #: src/ui/dash/settings/SettingsRootContent.tsx
2248
- msgid "Redirects, vanity paths, and URL control"
2249
- msgstr "重定向、自定义路径与 URL 控制"
2250
-
2251
- #. @context: Collection tag on sample link post
2252
- #: src/ui/pages/ThemeSamplePage.tsx
2253
- msgid "References"
2254
- msgstr "参考"
2255
-
2256
- #. @context: Button to remove the blog avatar
2257
- #. @context: Remove system item from navigation
2258
- #: src/ui/dash/appearance/NavigationContent.tsx
2259
- #: src/ui/dash/settings/AvatarContent.tsx
2260
- msgid "Remove"
2261
- msgstr "移除"
2262
-
2263
- #. @context: Button to remove an uploaded attachment in compose
2264
- #: src/ui/compose/ComposeDialog.tsx
2265
- msgid "Remove attachment"
2266
- msgstr ""
2267
-
2268
- #. @context: Tooltip for divider delete button
2269
- #: src/ui/shared/CollectionsManager.tsx
2270
- msgid "Remove Divider"
2271
- msgstr "删除分隔线"
2272
-
2273
- #. @context: Archive tile label for multiple thread replies
2274
- #: src/ui/pages/ArchivePage.tsx
2275
- msgid "Replies"
2276
- msgstr "条回复"
2277
-
2278
- #. @context: Archive tile label for a single thread reply
2279
- #. @context: Compose button - reply to post
2280
- #. @context: Reply button label in the post footer
2281
- #: src/ui/compose/ComposeDialog.tsx
2282
- #: src/ui/pages/ArchivePage.tsx
2283
- #: src/ui/shared/PostFooter.tsx
2284
- msgid "Reply"
2285
- msgstr "回复"
2286
-
2287
- #. @context: Button to restore the automatically generated collection link from the title
2288
- #. @context: Compose custom slug action that clears the manual slug and falls back to automatic generation
2289
- #: src/ui/compose/ComposeDialog.tsx
2290
- #: src/ui/shared/collection-management-labels.ts
2291
- msgid "Reset link"
2292
- msgstr "重置链接"
2293
-
2294
- #. @context: Password reset form submit button
2295
- #. @context: Password reset page heading
2296
- #: src/routes/auth/reset.tsx
2297
- #: src/routes/auth/reset.tsx
2298
- msgid "Reset Password"
2299
- msgstr "重置密码"
2300
-
2301
- #. @context: Asset keyword on the public brand asset page
2302
- #. @context: Title for the reverse logo asset card
2303
- #. @context: Title for the reverse logo card
2304
- #. @context: Title for the reverse logo card
2305
- #: src/ui/pages/BrandPage.tsx
2306
- #: src/ui/pages/BrandPage.tsx
2307
- #: src/ui/pages/BrandPage.tsx
2308
- #: src/ui/pages/BrandPage.tsx
2309
- msgid "Reverse logo"
2310
- msgstr "反白标志"
2311
-
2312
- #. @context: Button to revoke API token
2313
- #. @context: Button to revoke a session
2314
- #: src/ui/dash/settings/ApiTokensContent.tsx
2315
- #: src/ui/dash/settings/SessionsContent.tsx
2316
- msgid "Revoke"
2317
- msgstr "撤销"
2318
-
2319
- #. @context: Confirm dialog for revoking API token
2320
- #: src/ui/dash/settings/ApiTokensContent.tsx
2321
- msgid "Revoke this token? Any scripts using it will stop working."
2322
- msgstr "撤销此令牌吗?任何使用它的脚本都将停止工作。"
2323
-
2324
- #. @context: Button to save collection
2325
- #. @context: Button to save settings
2326
- #. @context: Button to save settings changes
2327
- #. @context: Confirm action sheet - save text attachment changes button
2328
- #. @context: Confirm close action sheet - save draft button
2329
- #. @context: Save nav item changes
2330
- #: src/ui/compose/ComposeDialog.tsx
2331
- #: src/ui/compose/ComposeDialog.tsx
2332
- #: src/ui/dash/appearance/NavigationContent.tsx
2333
- #: src/ui/dash/settings/AvatarContent.tsx
2334
- #: src/ui/dash/settings/GeneralContent.tsx
2335
- #: src/ui/shared/collection-management-labels.ts
2336
- msgid "Save"
2337
- msgstr "保存"
2338
-
2339
- #. @context: More menu - save draft
2340
- #: src/ui/compose/ComposeDialog.tsx
2341
- msgid "Save as draft"
2342
- msgstr "保存为草稿"
2343
-
2344
- #. @context: Header draft button tooltip
2345
- #: src/ui/compose/ComposeDialog.tsx
2346
- msgid "Save as Draft"
2347
- msgstr "保存为草稿"
2348
-
2349
- #. @context: Button to save custom CSS
2350
- #: src/ui/dash/appearance/AdvancedContent.tsx
2351
- msgid "Save CSS"
2352
- msgstr "保存 CSS"
2353
-
2354
- #. @context: Secondary button label on sample page
2355
- #: src/ui/pages/ThemeSamplePage.tsx
2356
- msgid "Save draft"
2357
- msgstr "保存草稿"
2358
-
2359
- #. @context: Confirm action sheet title when closing text attachment editor
2360
- #: src/ui/compose/ComposeDialog.tsx
2361
- msgid "Save text attachment?"
2362
- msgstr "保存文本附件?"
2363
-
2364
- #. @context: Filled primary button label
2365
- #: src/ui/pages/ThemeSamplePage.tsx
2366
- msgid "Save theme"
2367
- msgstr "保存主题"
2368
-
2369
- #. @context: Confirm action sheet subtitle when closing text attachment editor
2370
- #: src/ui/compose/ComposeDialog.tsx
2371
- msgid "Save these changes to the text attachment, discard them, or keep editing."
2372
- msgstr "保存对文本附件的更改、不保存,或继续编辑。"
2373
-
2374
- #. @context: Confirm close action sheet subtitle
2375
- #: src/ui/compose/ComposeDialog.tsx
2376
- msgid "Save to drafts to edit and post at a later time."
2377
- msgstr "保存到草稿,以便稍后编辑并发布。"
2378
-
2379
- #. @context: Confirm close action sheet title
2380
- #: src/ui/compose/ComposeDialog.tsx
2381
- msgid "Save to drafts?"
2382
- msgstr "保存为草稿?"
2383
-
2384
- #. @context: Search icon link in browse nav
2385
- #. @context: Search page title
2386
- #. @context: Search submit button
2387
- #. @context: Settings section heading for search engine indexing settings
2388
- #: src/ui/dash/settings/GeneralContent.tsx
2389
- #: src/ui/layouts/SiteLayout.tsx
2390
- #: src/ui/pages/SearchPage.tsx
2391
- #: src/ui/pages/SearchPage.tsx
2392
- msgid "Search"
2393
- msgstr "搜索"
2394
-
2395
- #. @context: Search input placeholder
2396
- #: src/ui/pages/SearchPage.tsx
2397
- msgid "Search posts..."
2398
- msgstr "搜索帖子..."
2399
-
2400
- #. @context: Toast after saving search settings
2401
- #. @context: Toast after saving search settings
2402
- #: src/routes/dash/settings.tsx
2403
- #: src/routes/dash/settings.tsx
2404
- msgid "Search settings updated."
2405
- msgstr "搜索设置已更新。"
2406
-
2407
- #. @context: Search snippet label on sample page
2408
- #: src/ui/pages/ThemeSamplePage.tsx
2409
- msgid "Search snippet"
2410
- msgstr "搜索片段"
2411
-
2412
- #. @context: Compose collection combobox search placeholder
2413
- #: src/ui/compose/ComposeDialog.tsx
2414
- msgid "Search..."
2415
- msgstr "搜索..."
2416
-
2417
- #. @context: Settings group label for account security settings
2418
- #: src/ui/dash/settings/AccountMenuContent.tsx
2419
- msgid "Security"
2420
- msgstr "安全"
2421
-
2422
- #. @context: Error toast when CSRF token is invalid or expired
2423
- #: src/routes/dash/settings.tsx
2424
- msgid "Security token expired. Refresh the page and try again."
2425
- msgstr "安全令牌已过期。请刷新页面后重试。"
2426
-
2427
- #. @context: Error toast when CSRF token is missing from delete request
2428
- #: src/routes/dash/settings.tsx
2429
- msgid "Security token missing. Refresh the page and try again."
2430
- msgstr "安全令牌缺失。请刷新页面后重试。"
2431
-
2432
- #. @context: Settings item description for sessions
2433
- #: src/ui/dash/settings/AccountMenuContent.tsx
2434
- msgid "See where you're signed in and revoke old sessions"
2435
- msgstr "查看您在哪些设备登录并撤销旧会话"
2436
-
2437
- #. @context: Error shown when session management is blocked in demo mode
2438
- #: src/routes/dash/settings.tsx
2439
- msgid "Session management is off in demo mode. Use the shared demo session instead."
2440
- msgstr "演示模式下不提供会话管理。请直接使用共享演示会话。"
2441
-
2442
- #. @context: Settings item — session management
2443
- #: src/ui/dash/settings/AccountMenuContent.tsx
2444
- msgid "Sessions"
2445
- msgstr "会话"
2446
-
2447
- #. @context: Settings item description for account settings on the settings home page
2448
- #: src/ui/dash/settings/SettingsRootContent.tsx
2449
- msgid "Sessions, password, export"
2450
- msgstr "会话、密码、导出"
2451
-
2452
- #. @context: Built-in navigation label for settings
2453
- #. @context: Page title for the settings home page
2454
- #: src/ui/dash/settings/SettingsRootContent.tsx
2455
- #: src/ui/shared/navigation-labels.ts
2456
- msgid "Settings"
2457
- msgstr "设置"
2458
-
2459
- #. @context: Usage label for the social preview image asset card
2460
- #: src/ui/pages/BrandPage.tsx
2461
- msgid "Shared links"
2462
- msgstr "共享链接"
2463
-
2464
- #. @context: Checkbox for showing the optional Jant credit link on the home page
2465
- #: src/ui/dash/settings/GeneralContent.tsx
2466
- msgid "Show \"Build with Jant\" at the bottom of the home page"
2467
- msgstr "在首页底部显示 \"Build with Jant\""
2468
-
2469
- #. @context: Button to collapse expanded thread context
2470
- #. @context: Collapse reply context
2471
- #: src/ui/compose/ComposeDialog.tsx
2472
- #: src/ui/feed/ThreadPreview.tsx
2473
- msgid "Show less"
2474
- msgstr "收起"
2475
-
2476
- #. @context: Button to expand faded thread context
2477
- #. @context: Expand reply context
2478
- #: src/ui/compose/ComposeDialog.tsx
2479
- #: src/ui/feed/ThreadPreview.tsx
2480
- msgid "Show more"
2481
- msgstr "展开更多"
2482
-
2483
- #. @context: Description for the settings system navigation toggle
2484
- #: src/ui/shared/navigation-labels.ts
2485
- msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
2486
- msgstr "登录时显示“设置”,未登录时显示“登录”"
2487
-
2488
- #. @context: Built-in navigation label shown when auth is required
2489
- #: src/ui/shared/navigation-labels.ts
2490
- msgid "Sign in"
2491
- msgstr "登录"
2492
-
2493
- #. @context: Sign in form submit button
2494
- #. @context: Sign in page heading
2495
- #. @context: Sign in page heading
2496
- #: src/routes/auth/signin.tsx
2497
- #: src/routes/auth/signin.tsx
2498
- #: src/routes/auth/signin.tsx
2499
- msgid "Sign In"
2500
- msgstr "登录"
2501
-
2502
- #. @context: Settings link — sign out action
2503
- #: src/ui/dash/settings/SettingsRootContent.tsx
2504
- msgid "Sign Out"
2505
- msgstr "退出登录"
2506
-
2507
- #. @context: Session creation date
2508
- #. placeholder {0}: formatDate(session.createdAt)
2509
- #: src/ui/dash/settings/SessionsContent.tsx
2510
- msgid "Signed in {0}"
2511
- msgstr "已于 {0} 登录"
2512
-
2513
- #. @context: Settings group label for site settings
2514
- #. @context: Settings subsection heading for basic site fields
2515
- #: src/ui/dash/settings/GeneralContent.tsx
2516
- #: src/ui/dash/settings/SettingsRootContent.tsx
2517
- msgid "Site"
2518
- msgstr "站点"
2519
-
2520
- #. @context: Token label on sample page
2521
- #: src/ui/pages/ThemeSamplePage.tsx
2522
- msgid "Site accent"
2523
- msgstr "网站强调色"
2524
-
2525
- #. @context: Settings section heading for site footer
2526
- #: src/ui/dash/settings/GeneralContent.tsx
2527
- msgid "Site Footer"
2528
- msgstr "网站页脚"
2529
-
2530
- #. @context: Settings form field
2531
- #. @context: Setup form field - site name
2532
- #: src/routes/auth/setup.tsx
2533
- #: src/ui/dash/settings/GeneralContent.tsx
2534
- msgid "Site Name"
2535
- msgstr "站点名称"
2536
-
2537
- #. @context: Toast after saving site settings
2538
- #: src/routes/dash/settings.tsx
2539
- msgid "Site settings updated."
2540
- msgstr "站点设置已更新。"
2541
-
2542
- #. @context: Description for the favicon asset card
2543
- #: src/ui/pages/BrandPage.tsx
2544
- msgid "Small browser icon used in tabs and bookmarks."
2545
- msgstr "用于标签页和书签的小型浏览器图标。"
2546
-
2547
- #. @context: Asset keyword on the public brand asset page
2548
- #: src/ui/pages/BrandPage.tsx
2549
- msgid "Social preview"
2550
- msgstr "社交预览"
2551
-
2552
- #. @context: Title for the social preview image asset card
2553
- #: src/ui/pages/BrandPage.tsx
2554
- msgid "Social preview image"
2555
- msgstr "社交预览图"
2556
-
2557
- #. @context: Color theme preview card body sentence
2558
- #: src/ui/dash/appearance/ColorThemeContent.tsx
2559
- msgid "Soft color should still carry a clear reading rhythm."
2560
- msgstr "柔和的颜色也该保有清晰的阅读节奏。"
2561
-
2562
- #. @context: Toast when uploads fail and post is auto-saved as draft
2563
- #: src/ui/compose/ComposeDialog.tsx
2564
- msgid "Some uploads failed. Saved as draft."
2565
- msgstr "部分上传失败。已保存为草稿。"
2566
-
2567
- #. @context: Fallback validation error for compose form
2568
- #. @context: Fallback validation error for password reset form
2569
- #. @context: Fallback validation error for setup form
2570
- #. @context: Fallback validation error for sign-in form
2571
- #: src/routes/auth/reset.tsx
2572
- #: src/routes/auth/setup.tsx
2573
- #: src/routes/auth/signin.tsx
2574
- #: src/routes/compose.tsx
2575
- msgid "Something doesn't look right. Check the form and try again."
2576
- msgstr "有些内容看起来不对。请检查表单并重试。"
2577
-
2578
- #. @context: Sort menu label on collection detail page
2579
- #: src/ui/pages/CollectionPage.tsx
2580
- msgid "Sort"
2581
- msgstr "排序"
2582
-
2583
- #. @context: Collection form field
2584
- #: src/ui/shared/collection-management-labels.ts
2585
- msgid "Sort Order"
2586
- msgstr "排序方式"
2587
-
2588
- #. @context: Compose quote source link placeholder
2589
- #: src/ui/compose/ComposeDialog.tsx
2590
- msgid "Source link (optional)"
2591
- msgstr "来源链接 (可选)"
2592
-
2593
- #. @context: Section title for the icon and preview downloads section
2594
- #: src/ui/pages/BrandPage.tsx
2595
- msgid "Square assets for avatars, apps, browsers, and shared links"
2596
- msgstr "用于头像、应用、浏览器和共享链接的方形资源"
2597
-
2598
- #. @context: Asset keyword on the public brand asset page
2599
- #: src/ui/pages/BrandPage.tsx
2600
- msgid "Square logo"
2601
- msgstr "方形徽标"
2602
-
2603
- #. @context: Title for the square logo PNG asset card
2604
- #: src/ui/pages/BrandPage.tsx
2605
- msgid "Square logo PNG"
2606
- msgstr "方形徽标 PNG"
2607
-
2608
- #. @context: Title for the square tile asset card
2609
- #: src/ui/pages/BrandPage.tsx
2610
- msgid "Square tile"
2611
- msgstr "方形图块"
2612
-
2613
- #. @context: Heading for the quick-start panel on the brand asset page
2614
- #: src/ui/pages/BrandPage.tsx
2615
- msgid "Start here"
2616
- msgstr "从这里开始"
2617
-
2618
- #. @context: Table cell in the sample detail article
2619
- #: src/ui/pages/ThemeSamplePage.tsx
2620
- msgid "Stay sturdy and readable."
2621
- msgstr "保持稳重且易读。"
2622
-
2623
- #. @context: Compose custom slug helper label for the suggested slug
2624
- #: src/ui/compose/ComposeDialog.tsx
2625
- msgid "Suggested link"
2626
- msgstr "建议链接"
2627
-
2628
- #. @context: Textarea label on sample page
2629
- #: src/ui/pages/ThemeSamplePage.tsx
2630
- msgid "Summary"
2631
- msgstr "摘要"
2632
-
2633
- #. @context: Attached text panel hint
2634
- #: src/ui/compose/ComposeDialog.tsx
2635
- msgid "Supplementary content attached to your post"
2636
- msgstr "附加到您的帖子的补充内容"
2637
-
2638
- #. @context: Table header in the sample detail article
2639
- #: src/ui/pages/ThemeSamplePage.tsx
2640
- msgid "Surface"
2641
- msgstr "表面"
2642
-
2643
- #. @context: Helper text for theme picker pills on the sample page
2644
- #: src/ui/pages/ThemeSamplePage.tsx
2645
- msgid "Switch the palette and mode without opening settings or changing the active site theme."
2646
- msgstr "在不打开设置或更改当前站点主题的情况下切换调色板和模式。"
2647
-
2648
- #. @context: Guidance body on the brand asset page
2649
- #: src/ui/pages/BrandPage.tsx
2650
- msgid "Switch to the white logo when the standard green version would lose contrast."
2651
- msgstr "当标准绿色徽标对比度不足时,切换至白色徽标。"
2652
-
2653
- #. @context: Nav item type badge
2654
- #: src/ui/dash/appearance/NavigationContent.tsx
2655
- msgid "system"
2656
- msgstr "系统"
2657
-
2658
- #. @context: Section heading for system nav items
2659
- #: src/ui/dash/appearance/NavigationContent.tsx
2660
- msgid "System links"
2661
- msgstr "系统链接"
2662
-
2663
- #. @context: Label on failed upload overlay button, tells user tapping retries the upload
2664
- #: src/ui/compose/ComposeDialog.tsx
2665
- msgid "Tap to retry"
2666
- msgstr "点击重试"
2667
-
2668
- #. @context: Custom URL target slug field
2669
- #: src/routes/dash/custom-urls.tsx
2670
- msgid "Target Slug"
2671
- msgstr "目标别名"
2672
-
2673
- #. @context: Archive media filter - posts without any media attachments
2674
- #. @context: Archive media filter - posts without any media attachments
2675
- #: src/ui/pages/ArchivePage.tsx
2676
- #: src/ui/pages/ArchivePage.tsx
2677
- msgid "Text"
2678
- msgstr "仅文本"
2679
-
2680
- #. @context: Archive media filter - text file attachments
2681
- #. @context: Attached text panel title
2682
- #: src/ui/compose/ComposeDialog.tsx
2683
- #: src/ui/pages/ArchivePage.tsx
2684
- msgid "Text attachment"
2685
- msgstr "文本附件"
2686
-
2687
- #. @context: Error toast when selected font theme is not valid
2688
- #: src/routes/dash/settings.tsx
2689
- msgid "That font theme isn't available. Pick another one."
2690
- msgstr "该字体主题不可用。请选择另一个。"
2691
-
2692
- #. @context: Error toast when selected theme is not valid
2693
- #: src/routes/dash/settings.tsx
2694
- msgid "That theme isn't available. Pick another one."
2695
- msgstr "该主题不可用。请选择另一个。"
2696
-
2697
- #. @context: Blockquote in the sample detail article
2698
- #: src/ui/pages/ThemeSamplePage.tsx
2699
- msgid "The best default color is the one you notice only after reading for a while."
2700
- msgstr "最合适的默认颜色,是那种只有在阅读一段时间后才会注意到的颜色。"
2701
-
2702
- #. @context: Intro copy for the quick-start panel on the brand asset page
2703
- #: src/ui/pages/BrandPage.tsx
2704
- msgid "The brand pack includes SVG logos, a transparent square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and the default social preview image."
2705
- msgstr "品牌包包含 SVG 徽标、透明方形 PNG、圆角、方形和圆形图块,以及网站图标(favicon)、Apple Touch 图标和默认社交预览图片。"
2706
-
2707
- #. @context: Custom URL path help text
2708
- #: src/routes/dash/custom-urls.tsx
2709
- msgid "The custom URL path (without leading slash)"
2710
- msgstr "自定义 URL 路径(不含前导斜杠)"
2711
-
2712
- #. @context: Plain-text body fallback for the sample note post
2713
- #: src/ui/pages/ThemeSamplePage.tsx
2714
- msgid "The default accent should feel written, not branded."
2715
- msgstr "默认的强调应给人手写感,而非品牌化。"
2716
-
2717
- #. @context: Sample note summary prefix on the theme sample page
2718
- #: src/ui/pages/ThemeSamplePage.tsx
2719
- msgid "The default accent should support reading first. Start by comparing it against the"
2720
- msgstr "默认强调色应以可读性为先。先将其与"
2721
-
2722
- #. @context: Sample note post body prefix on the theme sample page
2723
- #: src/ui/pages/ThemeSamplePage.tsx
2724
- msgid "The default accent works best when it reads like a fountain-pen underline. Compare it against the"
2725
- msgstr "默认强调色在像钢笔下划线那样呈现时效果最佳。将其与"
2726
-
2727
- #. @context: Caption for the sample detail article image
2728
- #: src/ui/pages/ThemeSamplePage.tsx
2729
- msgid "The image should sit quietly inside the article instead of feeling like a card preview."
2730
- msgstr "图片应安静地置于文章中,而不是像卡片预览那样突出。"
2731
-
2732
- #. @context: Description for max visible nav links, explains overflow behavior
2733
- #: src/ui/dash/appearance/NavigationContent.tsx
2734
- msgid "The rest will be tucked into a ··· menu"
2735
- msgstr "其余项目将被收进 ··· 菜单"
2736
-
2737
- #. @context: Blockquote on the theme sample page
2738
- #: src/ui/pages/ThemeSamplePage.tsx
2739
- msgid "The right accent should disappear into the writing until you need it."
2740
- msgstr "恰到好处的点缀应该融入文字,直到你需要它时才显现"
2741
-
2742
- #. @context: Custom URL target slug help text
2743
- #: src/routes/dash/custom-urls.tsx
2744
- msgid "The slug of the target post or collection"
2745
- msgstr "目标文章或合集的 slug"
2746
-
2747
- #. @context: Section heading for theme picker pills
2748
- #: src/ui/pages/ThemeSamplePage.tsx
2749
- msgid "Theme"
2750
- msgstr "主题"
2751
-
2752
- #. @context: Browser page title for the public theme sample page
2753
- #. @context: Eyebrow on the public theme sample page
2754
- #: src/routes/pages/theme-sample.tsx
2755
- #: src/ui/pages/ThemeSamplePage.tsx
2756
- msgid "Theme sample"
2757
- msgstr "主题示例"
2758
-
2759
- #. @context: Fallback theme group description on color theme page
2760
- #: src/ui/dash/appearance/ColorThemeContent.tsx
2761
- msgid "Themes that have not been assigned to a named group yet."
2762
- msgstr "尚未归入已命名分组的主题。"
2763
-
2764
- #. @context: Link to theming documentation on Custom CSS page
2765
- #: src/ui/dash/appearance/AdvancedContent.tsx
2766
- msgid "Theming guide"
2767
- msgstr "主题指南"
2768
-
2769
- #. @context: Helper text for the real post component section on the theme sample page
2770
- #: src/ui/pages/ThemeSamplePage.tsx
2771
- msgid "These are actual feed components with real footers, summaries, and inline links. Use this section to judge whether the theme still feels calm once it is applied to realistic content."
2772
- msgstr "这些是真实的信息流组件,带有真实的页脚、摘要和内联链接。使用此部分来判断当主题应用到真实内容后是否仍然显得平静。"
2773
-
2774
- #. @context: Description for session management
2775
- #: src/ui/dash/settings/SessionsContent.tsx
2776
- msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
2777
- msgstr "这些设备当前已登录到您的账户。撤销任何您不认识的会话。"
2778
-
2779
- #. @context: Opening paragraph on the sample detail article
2780
- #: src/ui/pages/ThemeSamplePage.tsx
2781
- msgid "This article is here to answer a specific question: does the default accent still feel calm once it has to carry a full reading experience?"
2782
- msgstr "这篇文章想回答一个具体问题:当默认强调色要撑起一整段阅读体验时,它是否依然足够平静?"
2783
-
2784
- #. @context: Empty state message
2785
- #: src/ui/pages/CollectionPage.tsx
2786
- msgid "This collection is empty. Add posts from the editor."
2787
- msgstr "该合集为空。从编辑器添加文章。"
2788
-
2789
- #. @context: Help text for choosing whether /feed points to latest or featured posts
2790
- #: src/ui/dash/settings/GeneralContent.tsx
2791
- msgid "This controls what /feed returns."
2792
- msgstr "这会控制 /feed 返回哪一种 feed。"
2793
-
2794
- #. @context: Notice shown on hosted account settings explaining that password and hosted account controls live in the connected hosted auth provider
2795
- #: src/ui/dash/settings/AccountMenuContent.tsx
2796
- msgid "This hosted site signs in through {providerLabel}. Manage password and hosted access there."
2797
- msgstr "这个托管站点通过 {providerLabel} 登录。在那里管理密码和托管站点访问权限。"
2798
-
2799
- #. @context: Collection link help text
2800
- #: src/ui/shared/collection-management-labels.ts
2801
- msgid "This is the last part of the collection link."
2802
- msgstr "这是合集链接的最后一段。"
2803
-
2804
- #. @context: Help text for avatar upload
2805
- #: src/ui/dash/settings/AvatarContent.tsx
2806
- msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels."
2807
- msgstr "此图用于您的 favicon 和 apple-touch-icon。为获得最佳效果,请上传至少 512×512 像素、带纯色背景的方形 PNG 图像。"
2808
-
2809
- #. @context: Sample quote commentary prefix on the theme sample page
2810
- #: src/ui/pages/ThemeSamplePage.tsx
2811
- msgid "This is useful as a color check because it puts the accent next to quotation styling, metadata, and a quieter explanatory paragraph. Compare it back to the"
2812
- msgstr "这对于颜色检查很有用,因为它将强调色放在引用样式、元数据和较为低调的说明段落旁。 将其与"
2813
-
2814
- #. @context: Password reset error heading
2815
- #: src/routes/auth/reset.tsx
2816
- msgid "This Link Has Expired"
2817
- msgstr "此链接已过期"
2818
-
2819
- #. @context: Compose custom slug validation error when the entered slug is already taken
2820
- #: src/ui/compose/ComposeDialog.tsx
2821
- msgid "This link is already in use. Choose something else."
2822
- msgstr "这个链接已被占用。换一个试试。"
2823
-
2824
- #. @context: Collection slug validation error for reserved paths
2825
- #. @context: Compose custom slug validation error for reserved paths
2826
- #: src/ui/compose/ComposeDialog.tsx
2827
- #: src/ui/shared/collection-management-labels.ts
2828
- msgid "This link is reserved. Choose something else."
2829
- msgstr "这个链接是保留地址,请换一个。"
2830
-
2831
- #. @context: Sample link post body prefix on the theme sample page
2832
- #: src/ui/pages/ThemeSamplePage.tsx
2833
- msgid "This reference is useful because it treats links and citations as part of the reading rhythm. Keep that in mind while tuning the"
2834
- msgstr "此参考资料很有用,因为它将链接和引文视为阅读节奏的一部分。在调整时请记住这一点 the"
2835
-
2836
- #. @context: Password reset error description
2837
- #: src/routes/auth/reset.tsx
2838
- msgid "This reset link is no longer valid. Request a new one to continue."
2839
- msgstr "该重置链接已失效。请求一个新的以继续。"
2840
-
2841
- #. @context: Error shown when a hosted upload would exceed the shared account media limit
2842
- #. @context: Error shown when a hosted upload would exceed the shared account media limit
2843
- #: src/routes/api/upload-multipart.ts
2844
- #: src/routes/api/upload.ts
2845
- msgid "This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue."
2846
- msgstr ""
2847
-
2848
- #. @context: Helper text for the detail article sample on the theme sample page
2849
- #: src/ui/pages/ThemeSamplePage.tsx
2850
- msgid "This uses the real single-post detail rendering with a longer article, inline image, tables, lists, quotes, and code. The content column stays at the same width as the live site."
2851
- msgstr "此处使用真实的单篇文章详情渲染,示例包含较长文章、内嵌图片、表格、列表、引用和代码。内容栏的宽度与线上站点保持一致。"
2852
-
2853
- #. @context: Warning text on account deletion page
2854
- #: src/ui/dash/settings/DeleteAccountContent.tsx
2855
- msgid "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2856
- msgstr "这将永久删除您所有的数据 — 文章、媒体、合集、设置和您的账户。您的博客将被重置为初始设置状态。此操作不可撤销。"
2857
-
2858
- #. @context: Archive month header count unit for a single thread
2859
- #. @context: Archive page summary unit for a single matching thread
2860
- #. @context: Singular thread count label on collection detail page
2861
- #: src/ui/pages/ArchivePage.tsx
2862
- #: src/ui/pages/ArchivePage.tsx
2863
- #: src/ui/pages/CollectionPage.tsx
2864
- msgid "thread"
2865
- msgstr "个帖子串"
2866
-
2867
- #. @context: Table cell in the sample detail article
2868
- #: src/ui/pages/ThemeSamplePage.tsx
2869
- msgid "Thread accent"
2870
- msgstr "帖子串强调色"
2871
-
2872
- #. @context: Thread accents section heading on sample page
2873
- #: src/ui/pages/ThemeSamplePage.tsx
2874
- msgid "Thread accents"
2875
- msgstr "帖子串 强调色"
2876
-
2877
- #. @context: Archive month header count unit for multiple threads
2878
- #. @context: Archive page summary unit for multiple matching threads
2879
- #. @context: Plural thread count label on collection detail page
2880
- #: src/ui/pages/ArchivePage.tsx
2881
- #: src/ui/pages/ArchivePage.tsx
2882
- #: src/ui/pages/CollectionPage.tsx
2883
- msgid "threads"
2884
- msgstr "个帖子串"
2885
-
2886
- #. @context: Settings form field
2887
- #: src/ui/dash/settings/GeneralContent.tsx
2888
- msgid "Time Zone"
2889
- msgstr "时区"
2890
-
2891
- #. @context: Collection form field
2892
- #. @context: Compose note title placeholder
2893
- #. @context: Compose toolbar - title tooltip
2894
- #. @context: Input label on sample page
2895
- #: src/ui/compose/ComposeDialog.tsx
2896
- #: src/ui/compose/ComposeDialog.tsx
2897
- #: src/ui/pages/ThemeSamplePage.tsx
2898
- #: src/ui/shared/collection-management-labels.ts
2899
- msgid "Title"
2900
- msgstr "标题"
2901
-
2902
- #. @context: Archive filter - notes that have a title
2903
- #. @context: Archive filter - notes that have a title
2904
- #: src/ui/pages/ArchivePage.tsx
2905
- #: src/ui/pages/ArchivePage.tsx
2906
- msgid "Titled"
2907
- msgstr "有标题"
2908
-
2909
- #. @context: Sample quote commentary suffix on the theme sample page
2910
- #: src/ui/pages/ThemeSamplePage.tsx
2911
- msgid "to make sure both still feel like they belong to the same product."
2912
- msgstr "以确保两者仍然感觉属于同一产品。"
2913
-
2914
- #. @context: Description for system nav toggles
2915
- #: src/ui/dash/appearance/NavigationContent.tsx
2916
- msgid "Toggle built-in navigation items. Enabled items appear in your navigation alongside links."
2917
- msgstr "切换内置导航项。启用的项会与链接一起显示在您的导航中。"
2918
-
2919
- #. @context: Button to expand/collapse nav item edit
2920
- #: src/ui/dash/appearance/NavigationContent.tsx
2921
- msgid "Toggle edit panel"
2922
- msgstr "展开/收起编辑面板"
2923
-
2924
- #. @context: API token name field label
2925
- #: src/ui/dash/settings/ApiTokensContent.tsx
2926
- msgid "Token name"
2927
- msgstr "令牌名称"
2928
-
2929
- #. @context: API tokens description
2930
- #: src/ui/dash/settings/ApiTokensContent.tsx
2931
- msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
2932
- msgstr "令牌可让您在不登录的情况下从脚本、快捷方式和其他工具访问 API。"
2933
-
2934
- #. @context: Usage label for the square logo PNG asset card
2935
- #: src/ui/pages/BrandPage.tsx
2936
- msgid "Transparent square"
2937
- msgstr "透明正方形"
2938
-
2939
- #. @context: Title on the public theme sample page
2940
- #: src/ui/pages/ThemeSamplePage.tsx
2941
- msgid "Tune color in a real reading context"
2942
- msgstr "在真实阅读场景中调整颜色"
2943
-
2944
- #. @context: Intro text on the settings home page below the title
2945
- #: src/ui/dash/settings/SettingsRootContent.tsx
2946
- msgid "Tune how your site looks, reads, and runs."
2947
- msgstr "调整网站的外观、可读性和运行方式。"
2948
-
2949
- #. @context: Custom URL form field
2950
- #: src/routes/dash/custom-urls.tsx
2951
- msgid "Type"
2952
- msgstr "类型"
2953
-
2954
- #. @context: Instruction to type confirmation phrase before deletion
2955
- #: src/ui/dash/settings/DeleteAccountContent.tsx
2956
- msgid "Type the following phrase to confirm:"
2957
- msgstr "请输入以下短语以确认:"
2958
-
2959
- #. @context: Compose quote text placeholder
2960
- #: src/ui/compose/ComposeDialog.tsx
2961
- msgid "Type the quote..."
2962
- msgstr "输入引用..."
2963
-
2964
- #. @context: Settings item description for font theme
2965
- #: src/ui/dash/settings/SettingsRootContent.tsx
2966
- msgid "Typography choices and reading texture"
2967
- msgstr "排版选项与阅读体验"
2968
-
2969
- #. @context: Fallback label when session device can't be identified
2970
- #: src/ui/dash/settings/SessionsContent.tsx
2971
- msgid "Unknown device"
2972
- msgstr "未知设备"
2973
-
2974
- #. @context: Archive filter - notes without a title
2975
- #. @context: Archive filter - notes without a title
2976
- #: src/ui/pages/ArchivePage.tsx
2977
- #: src/ui/pages/ArchivePage.tsx
2978
- msgid "Untitled"
2979
- msgstr "无标题"
2980
-
2981
- #. @context: Settings item description for password change
2982
- #: src/ui/dash/settings/AccountMenuContent.tsx
2983
- msgid "Update the password you use to sign in"
2984
- msgstr "更新您用于登录的密码"
2985
-
2986
- #. @context: Button to upload avatar image
2987
- #: src/ui/dash/settings/AvatarContent.tsx
2988
- msgid "Upload Avatar"
2989
- msgstr "上传头像"
2990
-
2991
- #. @context: Error toast when avatar upload fails
2992
- #. @context: Error when file upload fails
2993
- #: src/routes/api/upload.ts
2994
- #: src/routes/dash/settings.tsx
2995
- msgid "Upload didn't go through. Try again in a moment."
2996
- msgstr "上传失败。请稍后再试。"
2997
-
2998
- #. @context: Error message when avatar upload fails
2999
- #: src/ui/dash/settings/AvatarContent.tsx
3000
- msgid "Upload failed. Please try again."
3001
- msgstr "上传失败。请重试。"
3002
-
3003
- #. @context: Avatar upload button text while uploading
3004
- #. @context: Toast shown during background upload
3005
- #: src/ui/compose/ComposeDialog.tsx
3006
- #: src/ui/dash/settings/AvatarContent.tsx
3007
- msgid "Uploading..."
3008
- msgstr "上传中..."
3009
-
3010
- #. @context: Nav item URL field
3011
- #: src/ui/dash/appearance/NavigationContent.tsx
3012
- msgid "URL"
3013
- msgstr "URL"
3014
-
3015
- #. @context: Heading for API token usage examples
3016
- #: src/ui/dash/settings/ApiTokensContent.tsx
3017
- msgid "Usage"
3018
- msgstr "用法"
3019
-
3020
- #. @context: Switch label for setting featured posts as default homepage
3021
- #: src/ui/dash/appearance/NavigationContent.tsx
3022
- msgid "Use Featured as the home feed"
3023
- msgstr "将精选设为首页视图"
3024
-
3025
- #. @context: Collection slug validation error for invalid characters
3026
- #. @context: Compose custom slug validation error for invalid characters
3027
- #: src/ui/compose/ComposeDialog.tsx
3028
- #: src/ui/shared/collection-management-labels.ts
3029
- msgid "Use lowercase letters, numbers, and hyphens only."
3030
- msgstr "只能使用小写字母、数字和连字符。"
3031
-
3032
- #. @context: Guidance title on the brand asset page
3033
- #: src/ui/pages/BrandPage.tsx
3034
- msgid "Use the logo on light backgrounds."
3035
- msgstr "在浅色背景上使用徽标。"
3036
-
3037
- #. @context: Guidance title on the brand asset page
3038
- #: src/ui/pages/BrandPage.tsx
3039
- msgid "Use the reverse logo on dark backgrounds."
3040
- msgstr "在深色背景上使用反白徽标。"
3041
-
3042
- #. @context: Body copy for the icon and preview downloads section
3043
- #: src/ui/pages/BrandPage.tsx
3044
- msgid "Use these when you need a transparent square logo, a shaped tile with a built-in background, a browser icon, or a default preview image."
3045
- msgstr "当您需要透明的方形徽标、有内置背景的带形状图块、浏览器图标或默认预览图像时,请使用这些。"
3046
-
3047
- #. @context: Help text for the explicit latest and featured feed URLs
3048
- #: src/ui/dash/settings/GeneralContent.tsx
3049
- msgid "Use these when you want a feed URL that never changes."
3050
- msgstr "当你需要一个不会变化的 feed 链接时,使用这些地址。"
3051
-
3052
- #. @context: Description for the default logo card
3053
- #: src/ui/pages/BrandPage.tsx
3054
- msgid "Use this for websites, docs, articles, and other light or neutral surfaces."
3055
- msgstr "用于网站、文档、文章和其他浅色或中性色背景."
3056
-
3057
- #. @context: Description for the reverse logo card
3058
- #: src/ui/pages/BrandPage.tsx
3059
- msgid "Use this on dark backgrounds, image-backed surfaces, and any placement where the green logo would lose contrast."
3060
- msgstr "在深色背景、有图像背景的表面,以及任何会让绿色标志失去对比度的位置使用此标志。"
3061
-
3062
- #. @context: Introductory description on the public theme sample page
3063
- #: src/ui/pages/ThemeSamplePage.tsx
3064
- msgid "Use this page to judge buttons, links, cards, forms, thread accents, and quiet surfaces before changing a theme globally."
3065
- msgstr "在全局更改主题之前,使用此页面来评估按钮、链接、卡片、表单、帖子串强调和低调表面。"
3066
-
3067
- #. @context: Description for choosing featured posts as the main RSS feed
3068
- #: src/ui/dash/settings/GeneralContent.tsx
3069
- msgid "Uses featured posts for /feed."
3070
- msgstr "将精选帖子用作 /feed 的内容。"
3071
-
3072
- #. @context: Description for choosing the latest posts as the main RSS feed
3073
- #: src/ui/dash/settings/GeneralContent.tsx
3074
- msgid "Uses the latest public posts for /feed."
3075
- msgstr "将最新公开帖子用作 /feed 的内容。"
3076
-
3077
- #. @context: Archive media filter - video
3078
- #: src/ui/pages/ArchivePage.tsx
3079
- msgid "Video"
3080
- msgstr "视频"
3081
-
3082
- #. @context: Button to view item on public site
3083
- #. @context: Toast action button to view the published post
3084
- #: src/ui/compose/ComposeDialog.tsx
3085
- #: src/ui/dash/ActionButtons.tsx
3086
- msgid "View"
3087
- msgstr "查看"
3088
-
3089
- #. @context: Thread link label on sample page
3090
- #: src/ui/pages/ThemeSamplePage.tsx
3091
- msgid "View earlier notes in this thread"
3092
- msgstr "查看这个帖子串里更早的笔记"
3093
-
3094
- #. @context: Compose publish settings section label
3095
- #: src/ui/compose/ComposeDialog.tsx
3096
- msgid "Visibility"
3097
- msgstr "可见性"
3098
-
3099
- #. @context: Prefix before Custom CSS link on color theme page
3100
- #: src/ui/dash/appearance/ColorThemeContent.tsx
3101
- msgid "Want more control?"
3102
- msgstr "想调得更细?"
3103
-
3104
- #. @context: Theme group heading on color theme settings page
3105
- #: src/ui/dash/appearance/ColorThemeContent.tsx
3106
- msgid "Warm Editorial"
3107
- msgstr "暖调编辑风"
3108
-
3109
- #. @context: Setup page welcome heading
3110
- #: src/routes/auth/setup.tsx
3111
- msgid "Welcome to Jant"
3112
- msgstr "欢迎使用 Jant"
3113
-
3114
- #. @context: Table header in the sample detail article
3115
- #: src/ui/pages/ThemeSamplePage.tsx
3116
- msgid "What the accent should do"
3117
- msgstr "强调色该承担什么"
3118
-
3119
- #. @context: Section heading in the sample detail article
3120
- #: src/ui/pages/ThemeSamplePage.tsx
3121
- msgid "What to look for while tuning it"
3122
- msgstr "调整时要注意什么"
3123
-
3124
- #. @context: Compose prompt placeholder text
3125
- #: src/ui/compose/ComposePrompt.tsx
3126
- msgid "What's on your mind?"
3127
- msgstr "在想什么?"
3128
-
3129
- #. @context: Compose body placeholder
3130
- #: src/ui/compose/ComposeDialog.tsx
3131
- msgid "What's on your mind..."
3132
- msgstr "在想些什么..."
3133
-
3134
- #. @context: Collection description placeholder
3135
- #: src/ui/shared/collection-management-labels.ts
3136
- msgid "What's this collection about?"
3137
- msgstr "这个合集是关于什么的?"
3138
-
3139
- #. @context: Description for featured default toggle, explains what happens when off
3140
- #: src/ui/dash/appearance/NavigationContent.tsx
3141
- msgid "When off, the homepage opens with your latest posts."
3142
- msgstr "关闭后,首页会先显示你的最新文章。"
3143
-
3144
- #. @context: Textarea value on sample page
3145
- #: src/ui/pages/ThemeSamplePage.tsx
3146
- msgid "When primary is too rigid, the whole page starts reading like product UI instead of writing space."
3147
- msgstr "当 primary 过于僵硬时,整个页面开始像产品界面,而不是写作空间。"
3148
-
3149
- #. @context: Sample note summary second paragraph on the theme sample page
3150
- #: src/ui/pages/ThemeSamplePage.tsx
3151
- msgid "When the accent is slightly warmer and less literal, the whole page feels more like a writing space and less like product UI."
3152
- msgstr "当强调色更温暖一点、也没那么直白时,整页会更像写作空间,而不是产品界面。"
3153
-
3154
- #. @context: Description for backup and restore documentation link in account settings
3155
- #: src/ui/dash/settings/AccountMenuContent.tsx
3156
- msgid "When to use site export, database backups, and recovery drills."
3157
- msgstr "何时该用站点导出、数据库备份和恢复演练。"
3158
-
3159
- #. @context: Description for the circle tile asset card
3160
- #: src/ui/pages/BrandPage.tsx
3161
- msgid "White logo on the Jant green circle for profile images, badges, and other round placements where you want a ready-made asset."
3162
- msgstr "白色标志置于 Jant 绿色圆形中,用于个人资料图片、徽章及其他需要现成素材的圆形场景。"
3163
-
3164
- #. @context: Description for the brand tile asset card
3165
- #: src/ui/pages/BrandPage.tsx
3166
- msgid "White logo on the Jant green rounded tile for app icon mockups, touch icons, directory listings, and other square placements that should feel softer."
3167
- msgstr "白色徽标置于 Jant 绿色圆角方块上,适用于应用图标原型、触控图标、目录列表以及其他需呈现更柔和感觉的方形位置。"
3168
-
3169
- #. @context: Description for the square tile asset card
3170
- #: src/ui/pages/BrandPage.tsx
3171
- msgid "White logo on the Jant green square tile for platforms and layouts that expect a true edge-to-edge square."
3172
- msgstr "白色标志位于 Jant 绿色方形图块上,适用于需要真正边到边正方形的平台和布局。"
3173
-
3174
- #. @context: Sample note post title on the theme sample page
3175
- #: src/ui/pages/ThemeSamplePage.tsx
3176
- msgid "Why the default accent should feel written, not branded"
3177
- msgstr "为什么默认强调色应该像书写,而不是品牌标识"
3178
-
3179
- #. @context: Error toast when sign-in credentials are wrong
3180
- #: src/routes/auth/signin.tsx
3181
- msgid "Wrong email or password. Check your credentials and try again."
3182
- msgstr "邮箱或密码错误。请检查您的凭证并重试。"
3183
-
3184
- #. @context: Confirm close action sheet title when editing a published post
3185
- #: src/ui/compose/ComposeDialog.tsx
3186
- msgid "You have unsaved changes"
3187
- msgstr "你有未保存的更改"
3188
-
3189
- #. @context: Compose thoughts placeholder
3190
- #: src/ui/compose/ComposeDialog.tsx
3191
- msgid "Your thoughts (optional)"
3192
- msgstr "你的想法 (可选)"
3193
-
3194
- #. @context: Compose publish settings slug input placeholder
3195
- #: src/ui/compose/ComposeDialog.tsx
3196
- msgid "your-post-link"
3197
- msgstr "my-post-link"