@jant/core 0.3.39 → 0.3.42

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 (1163) hide show
  1. package/README.md +21 -33
  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.js +53 -0
  10. package/bin/commands/settings.js +93 -0
  11. package/bin/commands/site/export.js +34 -33
  12. package/bin/commands/site/{localize-media.js → pull-media.js} +17 -17
  13. package/bin/lib/d1-query.js +15 -3
  14. package/bin/lib/http-api.js +223 -0
  15. package/bin/lib/media-upload.js +206 -0
  16. package/bin/lib/migration-runner.js +64 -0
  17. package/bin/lib/runtime-target.js +7 -2
  18. package/bin/lib/site-media-parser.js +71 -16
  19. package/bin/lib/site-pull-media.js +698 -0
  20. package/bin/lib/site-snapshot.js +0 -1
  21. package/dist/{app-BfoG98VD.js → app-Cu3lveYI.js} +24017 -23072
  22. package/dist/app-DzCB4yOp.js +5 -0
  23. package/dist/client/.vite/manifest.json +3485 -0
  24. package/dist/client/_assets/chunks/02611a045a7fe83a12014e3debc9f731-BqEDtwXC.woff2 +0 -0
  25. package/dist/client/_assets/chunks/033466ef683afe931f7f520cfb42d928-BluLHEh9.woff2 +0 -0
  26. package/dist/client/_assets/chunks/04b8bde59cff68eeee74fb1914eb09c7-D5j2CLTt.woff2 +0 -0
  27. package/dist/client/_assets/chunks/057a6a98bda7fe57105ddaa99ec82015-DY_AoijT.woff2 +0 -0
  28. package/dist/client/_assets/chunks/05ac821472e235943ed1435e4bb8ecad-CUm8GiH6.woff2 +0 -0
  29. package/dist/client/_assets/chunks/05da12edb9d52210581dc6ec4541031f-BXAOx2XP.woff2 +0 -0
  30. package/dist/client/_assets/chunks/074c1f8483d5a4d8c45c8c5f3e4cbb32-CDqdMQm8.woff2 +0 -0
  31. package/dist/client/_assets/chunks/0968e4861204b51f62a2f8e9f15dd5e0-D5tLgF_8.woff2 +0 -0
  32. package/dist/client/_assets/chunks/0acd1fe2b2ea1ad1bfee7ae1fa139d27-BKK1m412.woff2 +0 -0
  33. package/dist/client/_assets/chunks/0c2ab6b295e55f356f8020d4e7747522-CkCQjQw3.woff2 +0 -0
  34. package/dist/client/_assets/chunks/0c5f9492af03a4fa42c784de94649de1-CQlJqksa.woff2 +0 -0
  35. package/dist/client/_assets/chunks/0d5dec931dc885f07fe5cd5af8bed675-C74x-U_U.woff2 +0 -0
  36. package/dist/client/_assets/chunks/0d9a936885a4c39077438effd3779cbd-Bw0fYF4S.woff2 +0 -0
  37. package/dist/client/_assets/chunks/0e645da524f7cfc0e8c3c03fb2b08428-BVeI_5Th.woff2 +0 -0
  38. package/dist/client/_assets/chunks/0f5e1a18987dbc84ca05188c129e1936-B6_lZ6fE.woff2 +0 -0
  39. package/dist/client/_assets/chunks/1076f0f6f66d28d7a2f16427faad4413-ubiXnD1P.woff2 +0 -0
  40. package/dist/client/_assets/chunks/112743a4ab5fdd1498dfdf2b11336380-B5FzQxTK.woff2 +0 -0
  41. package/dist/client/_assets/chunks/1211f03d3ff5759a702631445793f60e-DDcSiyCt.woff2 +0 -0
  42. package/dist/client/_assets/chunks/12ef1ba76bd20b004b865266a1aa70b3-BwmaD87S.woff2 +0 -0
  43. package/dist/client/_assets/chunks/135e83b403475c5dc9e49b43501a5b84-C5mE_KZS.woff2 +0 -0
  44. package/dist/client/_assets/chunks/1380210a722ac9aeef54005ad7b015c9-CjA-MP82.woff2 +0 -0
  45. package/dist/client/_assets/chunks/13b2c53b30e6a3e4de7132dbc18dbdfc-B9WOB7kv.woff2 +0 -0
  46. package/dist/client/_assets/chunks/147b24c2f08d03bbed30887d4cb3311c-IeeFCJ13.woff2 +0 -0
  47. package/dist/client/_assets/chunks/152395634a207579552f8cb54db88599-C2y2JyNZ.woff2 +0 -0
  48. package/dist/client/_assets/chunks/15d95680dc31cc6ce20e0a5464106dc4-CpD8dqRm.woff2 +0 -0
  49. package/dist/client/_assets/chunks/16663e567f81f4725a1522f37e18f71f-BNoxS9pQ.woff2 +0 -0
  50. package/dist/client/_assets/chunks/1733f27476507ca68b68a803bc533cc2-DXL-14Ug.woff2 +0 -0
  51. package/dist/client/_assets/chunks/17c7f5d0a45e92ede0e5dec3a2c77efa-CNj3jQMl.woff2 +0 -0
  52. package/dist/client/_assets/chunks/1824321da801e6257b902f3d1d09054c-D4dgdyWB.woff2 +0 -0
  53. package/dist/client/_assets/chunks/188c2db794f3dd7a45889ddbc81da9bb-C9NbUBBO.woff2 +0 -0
  54. package/dist/client/_assets/chunks/1a08931435f885e707edb85978ea3bb6-BOiP2u7G.woff2 +0 -0
  55. package/dist/client/_assets/chunks/1a3a92c7c060a71a6c35819b9ebcdbb9-DFfonQfz.woff2 +0 -0
  56. package/dist/client/_assets/chunks/1be602ad456b0d75902d352116cb35fd-Bc-XQtQh.woff2 +0 -0
  57. package/dist/client/_assets/chunks/1cf737900dd49c2e88f1b3221a82a602-CfTmnns3.woff2 +0 -0
  58. package/dist/client/_assets/chunks/1fba7ec0e412e911bf31841de5a8a4e4-18ELMbFF.woff2 +0 -0
  59. package/dist/client/_assets/chunks/233d3a685ee18276b319363474599d47-BaFdJ0-G.woff2 +0 -0
  60. package/dist/client/_assets/chunks/2612c60f9dc5459ac42763591240a1d6-CTD69cq1.woff2 +0 -0
  61. package/dist/client/_assets/chunks/284b53bbefb06924cf236d24c8ed5641-CPDiuOv6.woff2 +0 -0
  62. package/dist/client/_assets/chunks/28a97af9ab9d38983d20f39ff09840e1-mFqcT3Jw.woff2 +0 -0
  63. package/dist/client/_assets/chunks/2a56eaf19d1d38a6b57e2a388f733676-CU52qBlE.woff2 +0 -0
  64. package/dist/client/_assets/chunks/2ab8cf1f23a5ac7939a7876054e711a7-B4T3dK7A.woff2 +0 -0
  65. package/dist/client/_assets/chunks/2abfbab82b6a7c04426afc054d2464da-D5PIIHde.woff2 +0 -0
  66. package/dist/client/_assets/chunks/2bfaadaf3479c72286248e6de0be0ec9-DEpU6O74.woff2 +0 -0
  67. package/dist/client/_assets/chunks/2c8c55e4cec85ce77e95cac9d330f5cf-BCTA96EZ.woff2 +0 -0
  68. package/dist/client/_assets/chunks/2e6f4bb71ef6b38765d51acc5a79f638-Mbs6PECD.woff2 +0 -0
  69. package/dist/client/_assets/chunks/2ed9981d2e8983365bd051159b976b6d-D8gg6NWM.woff2 +0 -0
  70. package/dist/client/_assets/chunks/2f4c633e923ba30c6ba376367379fc91-CIJCFztv.woff2 +0 -0
  71. package/dist/client/_assets/chunks/31194d303a67561926a544ed0e072aee-w3-eGYAi.woff2 +0 -0
  72. package/dist/client/_assets/chunks/31a197213ae61d7043c81013f52d10d6-DXZrrkJP.woff2 +0 -0
  73. package/dist/client/_assets/chunks/349965eee0a9b6c984a319ab96a4ece9-DByAVmXw.woff2 +0 -0
  74. package/dist/client/_assets/chunks/34e6750e00c3a911ef87dc66b336594d-DNbWesOu.woff2 +0 -0
  75. package/dist/client/_assets/chunks/3623d96698132c61e861f984ce11cc23-jqV9ErzX.woff2 +0 -0
  76. package/dist/client/_assets/chunks/36cda3eae13370b934bba4429fab9078-BPDcUlw9.woff2 +0 -0
  77. package/dist/client/_assets/chunks/36f3df4730cfca4fc77fe52b52e6a126-BwK10NC0.woff2 +0 -0
  78. package/dist/client/_assets/chunks/37887deb7a9c466cf2af6ee7ff372ea6-BrAerJB1.woff2 +0 -0
  79. package/dist/client/_assets/chunks/37dbd564820cce2f7b3331e442da0df3-Cql2kzIi.woff2 +0 -0
  80. package/dist/client/_assets/chunks/37dc8505b20b37a2477a9121b16d44a7-CoXw6XWV.woff2 +0 -0
  81. package/dist/client/_assets/chunks/39211b02f24c69cbd1b54f6d41b01933-4Xu7vvnq.woff2 +0 -0
  82. package/dist/client/_assets/chunks/3aa13f1843d7c8fa16109b6395a9a29d-BQFZUc3B.woff2 +0 -0
  83. package/dist/client/_assets/chunks/3aba89c4d4281553078de4622b498cbb-8QS1zDYk.woff2 +0 -0
  84. package/dist/client/_assets/chunks/3ac0a07878cacdc98bb889f40f5970d3-C-BaM6-y.woff2 +0 -0
  85. package/dist/client/_assets/chunks/3d88558097559d775231194d43745ba7-CR2aqGC7.woff2 +0 -0
  86. package/dist/client/_assets/chunks/3dc3e8c35524cad2d1236f3393104ccf-9sqBsF7B.woff2 +0 -0
  87. package/dist/client/_assets/chunks/3e24063b19abd2b051af986a6870046d-TlweM3SW.woff2 +0 -0
  88. package/dist/client/_assets/chunks/3e2c06bdd9dcab29aeaeb0cfb7fa608a-BaqU-dIt.woff2 +0 -0
  89. package/dist/client/_assets/chunks/424123f9371ba357087363263eeafcda-C8SVfEJi.woff2 +0 -0
  90. package/dist/client/_assets/chunks/43b3bbf43055c3e65db9cdf2c5b18c1c-CbHx6-Ki.woff2 +0 -0
  91. package/dist/client/_assets/chunks/4410f876d27c9821839474b6b1059fd7-ClYz91aY.woff2 +0 -0
  92. package/dist/client/_assets/chunks/44704471b60c18b3ecec5300a88f1102-DDmmy6-m.woff2 +0 -0
  93. package/dist/client/_assets/chunks/45140742dfa8686b58db2899ce89f89a-D5IMMzDM.woff2 +0 -0
  94. package/dist/client/_assets/chunks/46604090efbb99c2db1800928af0a239-JX2fpYX_.woff2 +0 -0
  95. package/dist/client/_assets/chunks/46998df85d31e629c0142f0556f5e7c5-BIkNG9Wh.woff2 +0 -0
  96. package/dist/client/_assets/chunks/469d2754e315e77270c12fa0ab28026c-D-y-vsfA.woff2 +0 -0
  97. package/dist/client/_assets/chunks/479329a39a3eb6c0047e6b0981919855-vZKCRx42.woff2 +0 -0
  98. package/dist/client/_assets/chunks/491bbba374093fff045f55803a22bfef-DSQXiDCd.woff2 +0 -0
  99. package/dist/client/_assets/chunks/49902f1c41b281f8eb3771abdd4dccb8-DxVxNg2W.woff2 +0 -0
  100. package/dist/client/_assets/chunks/4c0760284569b87d8f2290c324953973-Bqd-TKHH.woff2 +0 -0
  101. package/dist/client/_assets/chunks/4cba92c942694bdc479bc54101bb1aa4-BrfsrgrC.woff2 +0 -0
  102. package/dist/client/_assets/chunks/4d38e56738156625329d93bd5c8cc74a-DONkMP0y.woff2 +0 -0
  103. package/dist/client/_assets/chunks/4db4f31a16965baa42cb7dad667a8f04-Dt1Cy4gr.woff2 +0 -0
  104. package/dist/client/_assets/chunks/4e7d263c30bb48604069a3b4404d4eeb-DNPCkvKD.woff2 +0 -0
  105. package/dist/client/_assets/chunks/5279c7e465d9871edf51fd02e691eee7-CKhyhvVf.woff2 +0 -0
  106. package/dist/client/_assets/chunks/527ff336279465617aafbafe1a830632-CC3lv4pm.woff2 +0 -0
  107. package/dist/client/_assets/chunks/54bfdb6f21f9d6191e5100580239e14f-PGlqYvgl.woff2 +0 -0
  108. package/dist/client/_assets/chunks/56b40518ea0608e62826bd44ee27f5f9-BD9F9Oss.woff2 +0 -0
  109. package/dist/client/_assets/chunks/56be5e32fd01668fe5ba814d94905839-CSyFA-9l.woff2 +0 -0
  110. package/dist/client/_assets/chunks/572b9e28f1e6d89b765a16d809db84a1-BIYMjzEa.woff2 +0 -0
  111. package/dist/client/_assets/chunks/57e9a86651366c1ba299e47aa7e358c2-BHuZXB4W.woff2 +0 -0
  112. package/dist/client/_assets/chunks/57f89adeae55aa7fe2add3fc1801ce03-Cy3PNrfx.woff2 +0 -0
  113. package/dist/client/_assets/chunks/5921cef36750ff6092d94b83a802823b-hF-uymTh.woff2 +0 -0
  114. package/dist/client/_assets/chunks/59e95d8b5332dcdae894a19946ab767d-ClRfsjWZ.woff2 +0 -0
  115. package/dist/client/_assets/chunks/5acc7f736217259db79a42bf44241c48-FYQUuFOM.woff2 +0 -0
  116. package/dist/client/_assets/chunks/5c05f8b75c9d7f25b3c04ca711cf43b3-D-YWPkSq.woff2 +0 -0
  117. package/dist/client/_assets/chunks/5df9ce98c75f8c50fb4fff7f01a23925-DgoCENyW.woff2 +0 -0
  118. package/dist/client/_assets/chunks/5e0124c7265f1b4cf0fc797b94efbebc-BTBNHsSB.woff2 +0 -0
  119. package/dist/client/_assets/chunks/5ec349ff62b9ee5fe0c6dae867704dc4-B4dezhrz.woff2 +0 -0
  120. package/dist/client/_assets/chunks/60020a830d809c26970cf8e48ba1eeda-B6FDTSik.woff2 +0 -0
  121. package/dist/client/_assets/chunks/601f812e8b1eafecd5ba585a6a6d7962-gIVBlUU9.woff2 +0 -0
  122. package/dist/client/_assets/chunks/6025ddaf99d86cc8bfd781006b19fbd6-CS-ze337.woff2 +0 -0
  123. package/dist/client/_assets/chunks/60bcfa3ea7446eb42394aab02d28be40-C-PQfCu3.woff2 +0 -0
  124. package/dist/client/_assets/chunks/60f6e28b3f0400b0e8fe32c3c7116102-Dag9L2qU.woff2 +0 -0
  125. package/dist/client/_assets/chunks/615a7e0d63f257109d599b2a1977de68-D6Y93yoG.woff2 +0 -0
  126. package/dist/client/_assets/chunks/615b38e0b5bb3ea68426f44f47706e6f-B5yzIIer.woff2 +0 -0
  127. package/dist/client/_assets/chunks/61a2c80d0c924d5a6187c02e8d1d1642-BY3MmHbZ.woff2 +0 -0
  128. package/dist/client/_assets/chunks/62fc94f8d4c5a750b7f25e7387539910-3ql2_WDK.woff2 +0 -0
  129. package/dist/client/_assets/chunks/639c7c6b0b0c27c738702741cfa4b8c0-BCD3OGri.woff2 +0 -0
  130. package/dist/client/_assets/chunks/63fafcb069520613d0ea35ad3e6b1e42-DP0Rrj4o.woff2 +0 -0
  131. package/dist/client/_assets/chunks/64a404d675f1d726f0891b7a80794595-DU3L0I9s.woff2 +0 -0
  132. package/dist/client/_assets/chunks/65a60d87c64228d258a123cbe85f5f31-B4kbf-79.woff2 +0 -0
  133. package/dist/client/_assets/chunks/65e9c4585d71bf48a5c62f367010da16-CvzgzReN.woff2 +0 -0
  134. package/dist/client/_assets/chunks/68a3a4bf337f8a0722be76676e20b850-Dnaw8EPD.woff2 +0 -0
  135. package/dist/client/_assets/chunks/6968e889e18891d912809fe484c2e745-Bj1m5e0s.woff2 +0 -0
  136. package/dist/client/_assets/chunks/6abdd163d2c4b85698db8aa1ce149361-B5FVGJuo.woff2 +0 -0
  137. package/dist/client/_assets/chunks/6b75213eb0be40ce84241eb2bb438a2e-CqHmF-NR.woff2 +0 -0
  138. package/dist/client/_assets/chunks/70714891ad3fbfc3d5f10a8669dacc5a-BWk5nLFN.woff2 +0 -0
  139. package/dist/client/_assets/chunks/7158022889c6c177062ac85036e7af10-B3D4K22n.woff2 +0 -0
  140. package/dist/client/_assets/chunks/73b794d885b88f7befb7ea8ab1780a15-D0ZehnEI.woff2 +0 -0
  141. package/dist/client/_assets/chunks/743f290baf027d4626a86e22f3d44600-DDTDQdRC.woff2 +0 -0
  142. package/dist/client/_assets/chunks/7520ca6ca8c60eb1e62d50e71c8d30f1-CVRaGu2G.woff2 +0 -0
  143. package/dist/client/_assets/chunks/757019c01c5e2c2b0f54293cea3b5636-BTovUnoH.woff2 +0 -0
  144. package/dist/client/_assets/chunks/759a647b77791b1e98f99bc0ab5317a7-CrK6FIFz.woff2 +0 -0
  145. package/dist/client/_assets/chunks/761d84afca8d7f34eebefe538adba827-DRbiVuwX.woff2 +0 -0
  146. package/dist/client/_assets/chunks/76e07530323418ec723c5d7634c9bcca-DGtVJTTH.woff2 +0 -0
  147. package/dist/client/_assets/chunks/76e51630143b95b6322ef93ad330da7a-D-kV82C_.woff2 +0 -0
  148. package/dist/client/_assets/chunks/76f117a3baacda304a71965a17266a13-DFfvsFUm.woff2 +0 -0
  149. package/dist/client/_assets/chunks/773819b7b9b8fd404a929867c0fd677e-Bu1xCMZb.woff2 +0 -0
  150. package/dist/client/_assets/chunks/77747f17625a259fb405b7bbdd84ac4b-o_vNfh-6.woff2 +0 -0
  151. package/dist/client/_assets/chunks/7817dd16805145d8538ad57590f69f5a-DguSUP3O.woff2 +0 -0
  152. package/dist/client/_assets/chunks/788498548ddfb710d6ef3c7bff79fa97-3ffoQfRd.woff2 +0 -0
  153. package/dist/client/_assets/chunks/78ea6c40923ce95367e3517dd1e5a849-DvLDRhX9.woff2 +0 -0
  154. package/dist/client/_assets/chunks/79aa7c8c842c4a27cf57c0a3a1ffca5a-sDoCeoKI.woff2 +0 -0
  155. package/dist/client/_assets/chunks/7b59f0ec7792b18458dc5a361e37884c-DWvxkKmT.woff2 +0 -0
  156. package/dist/client/_assets/chunks/7c3945788a689a69356c1a622d69d48b-1JjIpss2.woff2 +0 -0
  157. package/dist/client/_assets/chunks/7cc72fd2c9105560422b6a67c6162945-Co3AF5_G.woff2 +0 -0
  158. package/dist/client/_assets/chunks/7d0ea0690e432462f4d05a23d720ec19-Dx7DK4C3.woff2 +0 -0
  159. package/dist/client/_assets/chunks/7dffa5c1bec57e0903fd62357401ff1a-DuQHmiiN.woff2 +0 -0
  160. package/dist/client/_assets/chunks/7e38ca789a9e76ac91d9256374e154f0-BtETgGRe.woff2 +0 -0
  161. package/dist/client/_assets/chunks/7f9a6c9286b68de9c72b0024f7beeb40-JpXdo4FC.woff2 +0 -0
  162. package/dist/client/_assets/chunks/815a0b797465190f60d8b1a04656c42e-Spzo94nU.woff2 +0 -0
  163. package/dist/client/_assets/chunks/823d1bb11097331238d103c7f72138dc-CGN6m2VF.woff2 +0 -0
  164. package/dist/client/_assets/chunks/82f6ccc063960eed1cdfd1d61ada8862-CsmAqx2a.woff2 +0 -0
  165. package/dist/client/_assets/chunks/835b6505bb9eea9678925a1fa885353d-C6mSBwUc.woff2 +0 -0
  166. package/dist/client/_assets/chunks/845b4b67564d62cf5cad242f7ac08ea5-DnvzrloJ.woff2 +0 -0
  167. package/dist/client/_assets/chunks/84c8e7bc0931008ed91f44ed12dfea94-C2Hvhh-b.woff2 +0 -0
  168. package/dist/client/_assets/chunks/8726558cf297cbda831cc19514897205-gSFV1vW0.woff2 +0 -0
  169. package/dist/client/_assets/chunks/8855472f3c02f6c7ebb3216617ebe4af-C1JsWVqq.woff2 +0 -0
  170. package/dist/client/_assets/chunks/887a11290ba78b1e66c6d2f67043005e-L_A1f5Fz.woff2 +0 -0
  171. package/dist/client/_assets/chunks/888ba53510213d5d1f6a7deb60e569b6-OP8E-ELN.woff2 +0 -0
  172. package/dist/client/_assets/chunks/88db1d042074fb6e66821ffc10941930-kZ6K3e62.woff2 +0 -0
  173. package/dist/client/_assets/chunks/892aa49b2529c89bb4076d4aa51fe30f-Bw0_Km2A.woff2 +0 -0
  174. package/dist/client/_assets/chunks/8b5c9ef81159f31d2ab35f45ca4373e0-Djw95sKC.woff2 +0 -0
  175. package/dist/client/_assets/chunks/8b91c7c2ed390f1278b9befa3aa87233-B2C3iFbQ.woff2 +0 -0
  176. package/dist/client/_assets/chunks/8dc18c0cebe6aa4bf4c45dbb831048ab-bUlANLit.woff2 +0 -0
  177. package/dist/client/_assets/chunks/8e231d707f0c4f8e3cde90a6b52a79aa-CvwbWlul.woff2 +0 -0
  178. package/dist/client/_assets/chunks/8fb45117a62d92dce44a80f0b729ead5-Djr4-o5-.woff2 +0 -0
  179. package/dist/client/_assets/chunks/9064c12fd72c7aba235d8c3881755b91-BnguxT-p.woff2 +0 -0
  180. package/dist/client/_assets/chunks/90b7848e9b1623b77bdcf155e90b839c-CFvPRnoM.woff2 +0 -0
  181. package/dist/client/_assets/chunks/911b9e53e9814de2998c60bf3115f560-DmPmj635.woff2 +0 -0
  182. package/dist/client/_assets/chunks/919a879bd2d580d8491a31a449390689-BY2w-8_Y.woff2 +0 -0
  183. package/dist/client/_assets/chunks/91da6cb174bebfb96976e2f1316be2fe-DztAJb6W.woff2 +0 -0
  184. package/dist/client/_assets/chunks/92fdc376bce277874e75db666f175b44-DJUnHEIN.woff2 +0 -0
  185. package/dist/client/_assets/chunks/930a23430f0eb64480d7fe5f82834e21-2VrDPT7E.woff2 +0 -0
  186. package/dist/client/_assets/chunks/934dfdbed2bb2c4b6129199d699a34fa-CtpHsjRD.woff2 +0 -0
  187. package/dist/client/_assets/chunks/93bed0e5f2dd5a21cf73304fcfbc149d-DJiaETX7.woff2 +0 -0
  188. package/dist/client/_assets/chunks/93f3ea6918533d96d9c252378b9a4af0-D-FJaGi-.woff2 +0 -0
  189. package/dist/client/_assets/chunks/95a0951d2a2722ff773a1a45e8c474d6-DuZg-BpP.woff2 +0 -0
  190. package/dist/client/_assets/chunks/95ff41191c76ef893ac70a1043e95e44-C08QDbJO.woff2 +0 -0
  191. package/dist/client/_assets/chunks/96c75862c8cec51a7c05ff025fea86cd-DBnRwCuW.woff2 +0 -0
  192. package/dist/client/_assets/chunks/97d7a17234f2b5030ae9697ae00aded2-CkUSaB-p.woff2 +0 -0
  193. package/dist/client/_assets/chunks/982cd1765ca6bbb3e6547e47834d5148-DkIybx1r.woff2 +0 -0
  194. package/dist/client/_assets/chunks/985d4d41afa0934a4eb2de35473fb9a2-CF7rgJMw.woff2 +0 -0
  195. package/dist/client/_assets/chunks/995c4fda62d25c3b79dd5987737df6ae-CY5ri8HW.woff2 +0 -0
  196. package/dist/client/_assets/chunks/9b0c3caac458c7bc9c9133e40405ddea-DhPrYOcz.woff2 +0 -0
  197. package/dist/client/_assets/chunks/9b21e8244f5930c48ad5073f83777b6c-CuE9-r-r.woff2 +0 -0
  198. package/dist/client/_assets/chunks/9bb38fd05201de666b88b82d56a386f7-nMl6lB8X.woff2 +0 -0
  199. package/dist/client/_assets/chunks/9d0afa53dc2f92ba42024f55f11f6779-Bozpx8bL.woff2 +0 -0
  200. package/dist/client/_assets/chunks/9e13a47242926f1cd7d68c08d9ef8889-DwKQjc8M.woff2 +0 -0
  201. package/dist/client/_assets/chunks/9eff2ab2a9d2ced47ab761bf6fdb11ec-D86-Zm1H.woff2 +0 -0
  202. package/dist/client/_assets/chunks/9f1963fe8d4d6878d717d872a8f3fdb5-DxjITUFq.woff2 +0 -0
  203. package/dist/client/_assets/chunks/9f3bdab4025dc7c5ba1a5871e62e8918-BqxDEFLJ.woff2 +0 -0
  204. package/dist/client/_assets/chunks/9fce02d1a09f464c36c9fcfb14a354c5-F2tMAB_j.woff2 +0 -0
  205. package/dist/client/_assets/chunks/a00e94d4f04df6aa659db9c4954c7efe-CRBKCj_3.woff2 +0 -0
  206. package/dist/client/_assets/chunks/a0a6755c7e3f9e4cf03387027dd9f16c-BAyRqF2w.woff2 +0 -0
  207. package/dist/client/_assets/chunks/a0d00fe4816c95a8c7dffd445ef00b03-CxcTiRLJ.woff2 +0 -0
  208. package/dist/client/_assets/chunks/a0f199077fa1a33bc2a1e01c64de7fe6-IdgVJmZD.woff2 +0 -0
  209. package/dist/client/_assets/chunks/a2b0597837e382aca19919c4b74e58c8-7iVOBjzI.woff2 +0 -0
  210. package/dist/client/_assets/chunks/a373e85c96aa0dc303092429fb837e51-Dvmw8mbX.woff2 +0 -0
  211. package/dist/client/_assets/chunks/a379ada89abd750c587ded29f77e731c-CgPBsEsv.woff2 +0 -0
  212. package/dist/client/_assets/chunks/a4475c442c6b259354c9eda62e64e7df-TZ0c8vK-.woff2 +0 -0
  213. package/dist/client/_assets/chunks/a48be56ce5d3a99dc8f8331398004412-BR_ixH1W.woff2 +0 -0
  214. package/dist/client/_assets/chunks/a4a39b5f048671aa37c2b2a9581ab08a-EDfDYsUd.woff2 +0 -0
  215. package/dist/client/_assets/chunks/a534449d67561ac9b06489f64e57ad98-C355TCrD.woff2 +0 -0
  216. package/dist/client/_assets/chunks/a6e044424780a57610833cc856c15bf5-x1b8FE4H.woff2 +0 -0
  217. package/dist/client/_assets/chunks/a7c35e42a659347e490c3cb7983b2e7f-BWpA0-oz.woff2 +0 -0
  218. package/dist/client/_assets/chunks/a7c58070d68dc1724e9d4e781afb78db-ql27pT-6.woff2 +0 -0
  219. package/dist/client/_assets/chunks/a806759e72987951d6d08b7cbdf36a1b-TvLDwB_u.woff2 +0 -0
  220. package/dist/client/_assets/chunks/a88481ec8bc7be11cb66e46781a79bb9-Ck-r_sGx.woff2 +0 -0
  221. package/dist/client/_assets/chunks/a919a8c6fec6d7e8bb21177965f2e9d7-CC5uWzwd.woff2 +0 -0
  222. package/dist/client/_assets/chunks/a9a016d4a93409f65278327e8a8bb38d-dylrNwF8.woff2 +0 -0
  223. package/dist/client/_assets/chunks/aa662092cf249707123ca4d575e2764b-CSxNsTUL.woff2 +0 -0
  224. package/dist/client/_assets/chunks/aae1eda193285ab817a2d1b408440326-CjyjBoRm.woff2 +0 -0
  225. package/dist/client/_assets/chunks/ab92d41062a7644faa45f50bf384454a-Cq0X8a9H.woff2 +0 -0
  226. package/dist/client/_assets/chunks/accc43762ad05edfbff66ba1380d192a-B5jIykaZ.woff2 +0 -0
  227. package/dist/client/_assets/chunks/ad47bcd6d4663026d648c132d969318d-BYdIbDge.woff2 +0 -0
  228. package/dist/client/_assets/chunks/ad67113f88b59582991cb0c5d33ea19f-DOH1vcIZ.woff2 +0 -0
  229. package/dist/client/_assets/chunks/adb6e613fb99c6dd660b727101f554a8-DJDw_ZZK.woff2 +0 -0
  230. package/dist/client/_assets/chunks/adc4a98a89870ef984ee8f4b57c8a3a5-D30vw26R.woff2 +0 -0
  231. package/dist/client/_assets/chunks/af57a2e8c72f9ba0efb1af771d32c124-D5Zwq9pS.woff2 +0 -0
  232. package/dist/client/_assets/chunks/b0ae5f374e43dac992a4a5d334cebc0b-Ccoi4dPt.woff2 +0 -0
  233. package/dist/client/_assets/chunks/b0cb664cb2e1371efda8943c0b7dcd1c-YzGFnelF.woff2 +0 -0
  234. package/dist/client/_assets/chunks/b0d1cdced482352cf0d3ae58638aacb9-IunWfc6R.woff2 +0 -0
  235. package/dist/client/_assets/chunks/b12379ab782468d725519cd07a7d15bc-IjbydKs2.woff2 +0 -0
  236. package/dist/client/_assets/chunks/b320f5d185b2cff933ac549c184031c5-IYnPrIz4.woff2 +0 -0
  237. package/dist/client/_assets/chunks/b326a8a9c33b554db570da94f60bc380-B6dzaCQg.woff2 +0 -0
  238. package/dist/client/_assets/chunks/b55486f8a459c838fe329d4e79a8c211-DW8q7oGV.woff2 +0 -0
  239. package/dist/client/_assets/chunks/b6117ff2993b11bb1fdc7ea3588a010c-JoMYL5W_.woff2 +0 -0
  240. package/dist/client/_assets/chunks/b61982951bd51b724143c30dfaaa9fe9-D3KhBKl6.woff2 +0 -0
  241. package/dist/client/_assets/chunks/b91234c10fd8b8c8abc88e03afe66a1f-BABNh2la.woff2 +0 -0
  242. package/dist/client/_assets/chunks/b9317198f118a1dfd8ddf2b82ec028f3-CiMecxeH.woff2 +0 -0
  243. package/dist/client/_assets/chunks/ba825ae79b1a6f7e0cce5215fcb5c96f-B6EWU_D5.woff2 +0 -0
  244. package/dist/client/_assets/chunks/ba9c59d7dfa4494db1bb764ada81467d-D0yPcC1m.woff2 +0 -0
  245. package/dist/client/_assets/chunks/bab547459d514f46206e340c4bb2dc88-YnBqlGhw.woff2 +0 -0
  246. package/dist/client/_assets/chunks/bb0b15492b8cdbbec57c0bcfa0aa9241-BjIFbEsN.woff2 +0 -0
  247. package/dist/client/_assets/chunks/bc6183ac08f0fac78c46f80c10cf7c92-B81nbRb3.woff2 +0 -0
  248. package/dist/client/_assets/chunks/bc8ccea5abf6598cf3cfa97eb59804bb-B_7IbluG.woff2 +0 -0
  249. package/dist/client/_assets/chunks/bc95a792cbca6639214c9b0da13392ff-CHQe0E-D.woff2 +0 -0
  250. package/dist/client/_assets/chunks/bcc39eda837bb7a7a3d37c8c60fffb81-CGd1Zk6S.woff2 +0 -0
  251. package/dist/client/_assets/chunks/bcfa62f35731856246c146d3a6932bf3-DMDq6w4v.woff2 +0 -0
  252. package/dist/client/_assets/chunks/bd73264d7f98776708d5d6f3c9b78fcc-d9QWWMym.woff2 +0 -0
  253. package/dist/client/_assets/chunks/bed610b217d500f5975cfc9fe6157570-B5t7s1bw.woff2 +0 -0
  254. package/dist/client/_assets/chunks/bedc74b423b7293b6ad0bdecc61c42cc-4Nnh7peP.woff2 +0 -0
  255. package/dist/client/_assets/chunks/bf8901f8f11d4f433ea17dabc9370ea6-B8dkfvGn.woff2 +0 -0
  256. package/dist/client/_assets/chunks/bfb00d4a4c48661bd0be99f300a0faae-OxsWZ7l-.woff2 +0 -0
  257. package/dist/client/_assets/chunks/c0098958e20db68cab90097b5e62516f-VpjQo3vV.woff2 +0 -0
  258. package/dist/client/_assets/chunks/c063897793f593eb26d6ff7b7baaba18-BWeJJ1sH.woff2 +0 -0
  259. package/dist/client/_assets/chunks/c1b0df29ae41d764904df84e9ac83d1e-D1N934vs.woff2 +0 -0
  260. package/dist/client/_assets/chunks/c4143bb9f2fe77b6ccf20088a8904650-nHfYM24e.woff2 +0 -0
  261. package/dist/client/_assets/chunks/c42c67070cfe99cf823df92d81c7fa6e-B_a405Ez.woff2 +0 -0
  262. package/dist/client/_assets/chunks/c4bfaa5e50798246e3770718b7a7c84a-B-r6Y_o0.woff2 +0 -0
  263. package/dist/client/_assets/chunks/c4d749e45ecd5a5aed5a0bb3ebfd355d-CkqE1fRi.woff2 +0 -0
  264. package/dist/client/_assets/chunks/c6c2971ad1f3221f6cf84028aa0f477e-D7BZGIcY.woff2 +0 -0
  265. package/dist/client/_assets/chunks/c7ff3f6bbdcd5f604b7343602ab904df-Bq7UjVrZ.woff2 +0 -0
  266. package/dist/client/_assets/chunks/c84598999133455503042e06f4ab79cb-DIXndJX3.woff2 +0 -0
  267. package/dist/client/_assets/chunks/c945c62368357d05a53206620460fb30-82gFEf6n.woff2 +0 -0
  268. package/dist/client/_assets/chunks/c96d83978add28b356c22c4c84916733-BL4VaPIE.woff2 +0 -0
  269. package/dist/client/_assets/chunks/c97f41eef722121d86f55d553c056a39-CjejgQO2.woff2 +0 -0
  270. package/dist/client/_assets/chunks/ca62704509932d3232d62918de97af3f-CKWF-3mX.woff2 +0 -0
  271. package/dist/client/_assets/chunks/ca9a533988d7019597a60d4e17127e0c-ClZ6ygZM.woff2 +0 -0
  272. package/dist/client/_assets/chunks/cb7ccd6494256f7a2977b7c2b0225592-Cxp8XObm.woff2 +0 -0
  273. package/dist/client/_assets/chunks/ce022e18a1377ac509443c3c3790b431-DpH0t6Tn.woff2 +0 -0
  274. package/dist/client/_assets/chunks/ce41d70ce6a069a498525c9e15c45cf2-DGtgv-_b.woff2 +0 -0
  275. package/dist/client/_assets/chunks/cf2b28f90f47276f7e2688a65e88a101-LVbNkXHj.woff2 +0 -0
  276. package/dist/client/_assets/chunks/cf9cffe56636322f62b40d61130fbc5e-DNCBMqAo.woff2 +0 -0
  277. package/dist/client/_assets/chunks/d1f064825fa5784b5c930652bd831cce-BU6qwjp8.woff2 +0 -0
  278. package/dist/client/_assets/chunks/d20d8944bc0b85f5b2aae4b24f343516-oY9l-NmC.woff2 +0 -0
  279. package/dist/client/_assets/chunks/d2faabcedd19f016e7b21bce073c0ec8-Dv6eFCf5.woff2 +0 -0
  280. package/dist/client/_assets/chunks/d320171e57480510f87dbbc7d5264b0a-CcCfjaFX.woff2 +0 -0
  281. package/dist/client/_assets/chunks/d36644d6502527e1fff205d0c7eca434-kVBj8zy_.woff2 +0 -0
  282. package/dist/client/_assets/chunks/d3a72a99d365dddfbca8d017a8011368-Bgdmhl3M.woff2 +0 -0
  283. package/dist/client/_assets/chunks/d40ab99c7a38026f411c8f112f742b48-D7Nm7fg6.woff2 +0 -0
  284. package/dist/client/_assets/chunks/d42aafa0f246ad3b4c16fe96d3a3a432-CRxTqZXU.woff2 +0 -0
  285. package/dist/client/_assets/chunks/d4aaf23c13ae808a4bed617afd13aa07-d_T1SKe9.woff2 +0 -0
  286. package/dist/client/_assets/chunks/d509ee5c8241bc7c3de2039d75564fa5-BpNFD9JE.woff2 +0 -0
  287. package/dist/client/_assets/chunks/d675d717cd329bfd4c0524f76ae1579c-Bd5_ctoQ.woff2 +0 -0
  288. package/dist/client/_assets/chunks/d689b1861d7e4377dd72ad3013482612-jPsVOU3F.woff2 +0 -0
  289. package/dist/client/_assets/chunks/d6bb686bddfbe8f38a36a68e609a8667-C_QduS-X.woff2 +0 -0
  290. package/dist/client/_assets/chunks/d9020ff69a83b2a6ee1f42ae480f7db0-DLBUPMCe.woff2 +0 -0
  291. package/dist/client/_assets/chunks/d9047070d72a816b3dba9d40c2d85e69-LTQ42vEp.woff2 +0 -0
  292. package/dist/client/_assets/chunks/da04549f3f4ed28076b01b8cd710d313-CDXOeduw.woff2 +0 -0
  293. package/dist/client/_assets/chunks/da7af303f8c645f9a9dbae0e6e32dd35-DCkS2jqi.woff2 +0 -0
  294. package/dist/client/_assets/chunks/da90a9012ab2d98f759e3fa0820ef502-D0D9d1zg.woff2 +0 -0
  295. package/dist/client/_assets/chunks/dc6e234ded795e91f76d6647f628fbf0-IkooXcRh.woff2 +0 -0
  296. package/dist/client/_assets/chunks/dc8f6256445e68199540be9ade33529f-umb5tWbZ.woff2 +0 -0
  297. package/dist/client/_assets/chunks/dd0cfdfdac0866e66d587e2b5a9e9961-bl4ozE0c.woff2 +0 -0
  298. package/dist/client/_assets/chunks/de304c8a02e45ded4f8dcc479d167198-ClRu89-4.woff2 +0 -0
  299. package/dist/client/_assets/chunks/df10d94bea357a43313e20da5d84bd30-CmAgh2oA.woff2 +0 -0
  300. package/dist/client/_assets/chunks/df9568257eb29b156449fdd4bec5ec76-BMz6aLRr.woff2 +0 -0
  301. package/dist/client/_assets/chunks/e067cd0ed76c90cd0a93c9339253f20b-6RxCQ4jy.woff2 +0 -0
  302. package/dist/client/_assets/chunks/e08b07772e7bed3cec2832d43f7fd339-CQCkeKsr.woff2 +0 -0
  303. package/dist/client/_assets/chunks/e12150d5a39b30be8f567968c7a527b0-DjdoWzeQ.woff2 +0 -0
  304. package/dist/client/_assets/chunks/e34b2b141e472dc776c86fdf8eea23b0-Cjk7H-Ev.woff2 +0 -0
  305. package/dist/client/_assets/chunks/e444fd88f1390636e603d0d681538ac8-Bx7CPOZh.woff2 +0 -0
  306. package/dist/client/_assets/chunks/e53fcb2381eee345db4f6f973dd95a3e-DmkkCUWz.woff2 +0 -0
  307. package/dist/client/_assets/chunks/e5bd313ef81f687d398aacb11cec3069-CwBEbcji.woff2 +0 -0
  308. package/dist/client/_assets/chunks/e79898628283edc27180fc39d0d769c1-By2pplQz.woff2 +0 -0
  309. package/dist/client/_assets/chunks/e8c15be62faf978d208925e79ea6a10d-Ct5M9lTP.woff2 +0 -0
  310. package/dist/client/_assets/chunks/e8c364c16daa04835bf32d293d2598db-3v4Tut_d.woff2 +0 -0
  311. package/dist/client/_assets/chunks/e91c4d941ed9f5c2f3e27f205a3a225e-BwOJ2Lst.woff2 +0 -0
  312. package/dist/client/_assets/chunks/e9c566be7a5d38a9085225f7372bc82b-BCtnCVML.woff2 +0 -0
  313. package/dist/client/_assets/chunks/e9ebc567a711eeb29019ddae3e0ce7fe-CnNhV49O.woff2 +0 -0
  314. package/dist/client/_assets/chunks/eaf332445a40942928e5f5750c1c3116-qZ5LSRrj.woff2 +0 -0
  315. package/dist/client/_assets/chunks/eb5afb3d952b8593782caec6026514b6-BXugZF2T.woff2 +0 -0
  316. package/dist/client/_assets/chunks/ec86e23683052da5cfdc3b77641bd15a-BeLcbcRc.woff2 +0 -0
  317. package/dist/client/_assets/chunks/ecb8875a56c7b038b35432fda41ae128-BVqgNf1o.woff2 +0 -0
  318. package/dist/client/_assets/chunks/eda1b0cb6d1719dd9bedcf3216a9e8de-BJTfLL5z.woff2 +0 -0
  319. package/dist/client/_assets/chunks/edd6a4f608d04fc0351d7688cfc321e4-d3V4U40c.woff2 +0 -0
  320. package/dist/client/_assets/chunks/ee6fce20b420a480714607c66d7f97e5-DEtC-G5G.woff2 +0 -0
  321. package/dist/client/_assets/chunks/eee3836d6ac17ebb2c450bbcbc9db121-C5a2TZjQ.woff2 +0 -0
  322. package/dist/client/_assets/chunks/et-book-bold-line-figures-BFJr2_zv.woff +0 -0
  323. package/dist/client/_assets/chunks/et-book-display-italic-old-style-figures-CoeRJAe8.woff +0 -0
  324. package/dist/client/_assets/chunks/et-book-roman-line-figures-CaA40oOf.woff +0 -0
  325. package/dist/client/_assets/chunks/f1661731474b78bdf81114daf10b254f-KnMKX_U3.woff2 +0 -0
  326. package/dist/client/_assets/chunks/f2c58dee206ba9355046fc23d05491f7-Cm4tCWav.woff2 +0 -0
  327. package/dist/client/_assets/chunks/f50ac27ea4358d67fdda403c2bb52467-WCfYHde1.woff2 +0 -0
  328. package/dist/client/_assets/chunks/f55334112f8e8be82d65db29887a663f-vDq1zH8k.woff2 +0 -0
  329. package/dist/client/_assets/chunks/f5738255e92d8dd34a46d1bcdf4c4074-tpghTzL1.woff2 +0 -0
  330. package/dist/client/_assets/chunks/f740e93f3c0277ecc616594103bca683-C4BgW_ko.woff2 +0 -0
  331. package/dist/client/_assets/chunks/f7633b5af033d76ff2fb3c3c266d77c5-BCkrZxwO.woff2 +0 -0
  332. package/dist/client/_assets/chunks/f7d8468cba2335a83ee414ea68291bab-CVnotkZU.woff2 +0 -0
  333. package/dist/client/_assets/chunks/f91cd722855f4269256eae1187df64ec-DJlAx1A_.woff2 +0 -0
  334. package/dist/client/_assets/chunks/f9695c6c4df2bf6bc03045ff79d4f01f-DDaYGYHT.woff2 +0 -0
  335. package/dist/client/_assets/chunks/fa6e58ce4b52695e7ae19bbea6336ec8-B30jEpze.woff2 +0 -0
  336. package/dist/client/_assets/chunks/fada6eaa68ff8816afe43d2a36c5423e-DlGAWNPb.woff2 +0 -0
  337. package/dist/client/_assets/chunks/fbcc4bf5367218951172bdee6f77d7a6-Dax2VSCd.woff2 +0 -0
  338. package/dist/client/_assets/chunks/fc895f5ce66b656f4a933097bf2a8775-DjjysNdf.woff2 +0 -0
  339. package/dist/client/_assets/chunks/fc9ae5b600fb711f2d67e93ce768cba4-D1lx7LBz.woff2 +0 -0
  340. package/dist/client/_assets/chunks/fca6720fd14c467d29a90f18ef3859b9-B3btrwq3.woff2 +0 -0
  341. package/dist/client/_assets/chunks/fd1bb507bcbf04856eeb7f7fd47ea579-NR1nGJTt.woff2 +0 -0
  342. package/dist/client/_assets/chunks/fd1bceb55d3e0183ac2454b8532fec7d-D3t-v6nn.woff2 +0 -0
  343. package/dist/client/_assets/chunks/fd2069e6e8588c70b4f11364093b81f2-BoXhYVgw.woff2 +0 -0
  344. package/dist/client/_assets/chunks/{url-CG0eolsk.js → url-pLre2DM_.js} +1 -1
  345. package/dist/client/_assets/client-C_kImWZj.css +2 -0
  346. package/dist/client/_assets/client-D95FNDg5.js +272 -0
  347. package/dist/client/_assets/client-auth-BRFl5zQA.js +4547 -0
  348. package/dist/client/_assets/client-cjk-jp-DZwrTzQC.css +1 -0
  349. package/dist/client/_assets/client-cjk-kr-_3ZNI2ZP.css +1 -0
  350. package/dist/env-wCpMcNXs.js +252 -0
  351. package/dist/github-api-CficQztC.js +176 -0
  352. package/dist/github-app-F4qZ05xk.js +275 -0
  353. package/dist/github-sync-zohnA9qv.js +4696 -0
  354. package/dist/index.js +88 -2
  355. package/dist/node.js +71 -30
  356. package/dist/url-FvvgARU9.js +305 -0
  357. package/package.json +16 -12
  358. package/src/__tests__/bin/content-cli.test.ts +179 -0
  359. package/src/__tests__/bin/media-cli.test.ts +192 -0
  360. package/src/__tests__/export-hugo-build.test.ts +178 -0
  361. package/src/__tests__/export-import-roundtrip.test.ts +265 -0
  362. package/src/__tests__/export-service.test.ts +763 -510
  363. package/src/__tests__/helpers/export-fixtures.ts +108 -0
  364. package/src/__tests__/import-site-command.test.ts +358 -350
  365. package/src/__tests__/site-pull-media.test.ts +256 -0
  366. package/src/app.tsx +65 -13
  367. package/src/client/__tests__/collection-form-bridge.test.ts +87 -7
  368. package/src/client/__tests__/collection-page-actions.test.ts +4 -4
  369. package/src/client/__tests__/collection-picker-order.test.ts +53 -0
  370. package/src/client/__tests__/collection-sort-menu.test.ts +2 -2
  371. package/src/client/__tests__/compose-bridge.test.ts +305 -13
  372. package/src/client/__tests__/compose-launch.test.ts +120 -0
  373. package/src/client/__tests__/compose-shortcuts.test.ts +141 -0
  374. package/src/client/__tests__/feed-video-player.test.ts +44 -0
  375. package/src/client/__tests__/site-header-nav.test.ts +250 -0
  376. package/src/client/__tests__/sortable-list.test.ts +6 -2
  377. package/src/client/__tests__/thread-context.test.ts +117 -0
  378. package/src/client/collection-form-bridge.ts +109 -4
  379. package/src/client/collection-page-actions.ts +3 -1
  380. package/src/client/collection-picker-order.ts +104 -0
  381. package/src/client/components/__tests__/{jant-collection-sidebar.test.ts → jant-collection-directory.test.ts} +145 -8
  382. package/src/client/components/__tests__/jant-collection-form.test.ts +40 -18
  383. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1285 -66
  384. package/src/client/components/__tests__/jant-compose-editor.test.ts +254 -19
  385. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +127 -1
  386. package/src/client/components/__tests__/jant-media-lightbox.test.ts +237 -0
  387. package/src/client/components/__tests__/jant-nav-manager.test.ts +326 -0
  388. package/src/client/components/__tests__/jant-post-menu.test.ts +372 -2
  389. package/src/client/components/__tests__/jant-settings-avatar.test.ts +61 -5
  390. package/src/client/components/__tests__/jant-settings-general.test.ts +29 -28
  391. package/src/client/components/__tests__/jant-text-preview.test.ts +206 -0
  392. package/src/client/components/collection-manager-types.ts +18 -1
  393. package/src/client/components/compose-types.ts +48 -0
  394. package/src/client/components/jant-collection-directory.ts +1448 -0
  395. package/src/client/components/jant-collection-form.ts +65 -15
  396. package/src/client/components/jant-command-palette.ts +544 -0
  397. package/src/client/components/jant-compose-dialog.ts +2490 -375
  398. package/src/client/components/jant-compose-editor.ts +420 -75
  399. package/src/client/components/jant-compose-fullscreen.ts +59 -8
  400. package/src/client/components/jant-media-lightbox.ts +373 -18
  401. package/src/client/components/jant-nav-manager.ts +624 -286
  402. package/src/client/components/jant-post-menu.ts +451 -126
  403. package/src/client/components/jant-repo-picker-types.ts +39 -0
  404. package/src/client/components/jant-repo-picker.ts +799 -0
  405. package/src/client/components/jant-settings-avatar.ts +16 -2
  406. package/src/client/components/jant-settings-general.ts +137 -35
  407. package/src/client/components/jant-text-preview.ts +239 -55
  408. package/src/client/components/nav-manager-types.ts +25 -9
  409. package/src/client/components/settings-types.ts +13 -2
  410. package/src/client/compose-bridge.ts +428 -68
  411. package/src/client/compose-launch.ts +41 -4
  412. package/src/client/compose-shortcuts.ts +77 -5
  413. package/src/client/feed-video-player.ts +374 -0
  414. package/src/client/image-processor.ts +53 -127
  415. package/src/client/media-lightbox-events.ts +1 -0
  416. package/src/client/media-scroll-hint.ts +66 -0
  417. package/src/client/multipart-upload.ts +4 -1
  418. package/src/client/palette-shortcuts.ts +35 -0
  419. package/src/client/search-rank.ts +74 -0
  420. package/src/client/settings-bridge.ts +7 -0
  421. package/src/client/site-header-nav.d.ts +1 -0
  422. package/src/client/site-header-nav.js +139 -51
  423. package/src/client/sortable-list.ts +2 -0
  424. package/src/client/thread-context.ts +54 -11
  425. package/src/client/tiptap/__tests__/block-insertion.test.ts +65 -0
  426. package/src/client/tiptap/__tests__/footnotes.test.ts +692 -0
  427. package/src/client/tiptap/__tests__/link-toolbar.test.ts +120 -4
  428. package/src/client/tiptap/__tests__/markdown-clipboard.test.ts +48 -0
  429. package/src/client/tiptap/block-insertion.ts +36 -0
  430. package/src/client/tiptap/bubble-menu.ts +34 -4
  431. package/src/client/tiptap/create-editor.ts +49 -30
  432. package/src/client/tiptap/embed-dialog.ts +301 -0
  433. package/src/client/tiptap/embed-node.ts +373 -0
  434. package/src/client/tiptap/embed-paste.ts +91 -0
  435. package/src/client/tiptap/extensions.ts +77 -28
  436. package/src/client/tiptap/footnotes.ts +718 -0
  437. package/src/client/tiptap/html-block-node.ts +222 -0
  438. package/src/client/tiptap/image-node.ts +49 -6
  439. package/src/client/tiptap/inline-image-upload.ts +200 -40
  440. package/src/client/tiptap/link-input-rules.ts +50 -16
  441. package/src/client/tiptap/link-toolbar.ts +156 -133
  442. package/src/client/tiptap/markdown-clipboard.ts +120 -0
  443. package/src/client/tiptap/more-break.ts +36 -3
  444. package/src/client/tiptap/paste-media.ts +6 -0
  445. package/src/client/tiptap/slash-commands.ts +167 -14
  446. package/src/client/tiptap/tab-indent.ts +184 -0
  447. package/src/client/tiptap/toolbar-mode.ts +15 -2
  448. package/src/client/tiptap/wrapping-input-rules.ts +102 -0
  449. package/src/client/types/sortablejs.d.ts +9 -1
  450. package/src/client/upload-session.ts +2 -1
  451. package/src/client/video-processor.ts +177 -20
  452. package/src/client-auth.ts +9 -1
  453. package/src/client-site.ts +15 -0
  454. package/src/client.ts +2 -0
  455. package/src/db/__tests__/demo-canonical-snapshot.test.ts +1 -1
  456. package/src/db/__tests__/migration-rehearsal.test.ts +5 -1
  457. package/src/db/__tests__/migrations.test.ts +25 -2
  458. package/src/db/backfills/0001_strip_collection_path_c_prefix.sql +11 -0
  459. package/src/db/backfills/0002_strip_collection_path_c_prefix_fix.sql +12 -0
  460. package/src/db/backfills/0003_clear_system_nav_default_labels.sql +15 -0
  461. package/src/db/dialect.ts +40 -0
  462. package/src/db/migrations/0005_busy_the_phantom.sql +39 -0
  463. package/src/db/migrations/0006_adorable_magdalene.sql +3 -0
  464. package/src/db/migrations/0007_unusual_warstar.sql +1 -0
  465. package/src/db/migrations/0008_nasty_lockheed.sql +1 -0
  466. package/src/db/migrations/0009_clear_fixer.sql +31 -0
  467. package/src/db/migrations/0010_futuristic_preak.sql +31 -0
  468. package/src/db/migrations/0011_bizarre_smasher.sql +30 -0
  469. package/src/db/migrations/0012_furry_thena.sql +52 -0
  470. package/src/db/migrations/0013_mixed_lightspeed.sql +39 -0
  471. package/src/db/migrations/0014_high_the_santerians.sql +41 -0
  472. package/src/db/migrations/0015_skinny_shinobi_shaw.sql +1 -0
  473. package/src/db/migrations/0016_remarkable_nicolaos.sql +17 -0
  474. package/src/db/migrations/0017_powerful_moonstone.sql +14 -0
  475. package/src/db/migrations/meta/0005_snapshot.json +1904 -0
  476. package/src/db/migrations/meta/0006_snapshot.json +1925 -0
  477. package/src/db/migrations/meta/0007_snapshot.json +1933 -0
  478. package/src/db/migrations/meta/0008_snapshot.json +1940 -0
  479. package/src/db/migrations/meta/0009_snapshot.json +1952 -0
  480. package/src/db/migrations/meta/0010_snapshot.json +1952 -0
  481. package/src/db/migrations/meta/0011_snapshot.json +1948 -0
  482. package/src/db/migrations/meta/0012_snapshot.json +1955 -0
  483. package/src/db/migrations/meta/0013_snapshot.json +1977 -0
  484. package/src/db/migrations/meta/0014_snapshot.json +1988 -0
  485. package/src/db/migrations/meta/0015_snapshot.json +1995 -0
  486. package/src/db/migrations/meta/0016_snapshot.json +2104 -0
  487. package/src/db/migrations/meta/0017_snapshot.json +2188 -0
  488. package/src/db/migrations/meta/_journal.json +92 -1
  489. package/src/db/migrations/pg/0003_motionless_norrin_radd.sql +21 -0
  490. package/src/db/migrations/pg/0004_nervous_captain_midlands.sql +3 -0
  491. package/src/db/migrations/pg/0005_romantic_mesmero.sql +1 -0
  492. package/src/db/migrations/pg/0006_perpetual_bruce_banner.sql +1 -0
  493. package/src/db/migrations/pg/0007_nav_item_placement.sql +1 -0
  494. package/src/db/migrations/pg/0008_yielding_frightful_four.sql +3 -0
  495. package/src/db/migrations/pg/0009_outstanding_ogun.sql +1 -0
  496. package/src/db/migrations/pg/0010_overjoyed_gertrude_yorkes.sql +28 -0
  497. package/src/db/migrations/pg/0011_fixed_hulk.sql +19 -0
  498. package/src/db/migrations/pg/0012_cute_shockwave.sql +2 -0
  499. package/src/db/migrations/pg/0013_bizarre_obadiah_stane.sql +1 -0
  500. package/src/db/migrations/pg/0014_tearful_grim_reaper.sql +16 -0
  501. package/src/db/migrations/pg/0015_daffy_mikhail_rasputin.sql +14 -0
  502. package/src/db/migrations/pg/meta/0003_snapshot.json +2482 -0
  503. package/src/db/migrations/pg/meta/0004_snapshot.json +2500 -0
  504. package/src/db/migrations/pg/meta/0005_snapshot.json +2507 -0
  505. package/src/db/migrations/pg/meta/0006_snapshot.json +2513 -0
  506. package/src/db/migrations/pg/meta/0008_snapshot.json +2524 -0
  507. package/src/db/migrations/pg/meta/0009_snapshot.json +2520 -0
  508. package/src/db/migrations/pg/meta/0010_snapshot.json +2526 -0
  509. package/src/db/migrations/pg/meta/0011_snapshot.json +2563 -0
  510. package/src/db/migrations/pg/meta/0012_snapshot.json +2573 -0
  511. package/src/db/migrations/pg/meta/0013_snapshot.json +2579 -0
  512. package/src/db/migrations/pg/meta/0014_snapshot.json +2702 -0
  513. package/src/db/migrations/pg/meta/0015_snapshot.json +2803 -0
  514. package/src/db/migrations/pg/meta/_journal.json +92 -1
  515. package/src/db/pg/__tests__/node.test.ts +38 -0
  516. package/src/db/pg/node.ts +149 -0
  517. package/src/db/pg/schema.ts +130 -12
  518. package/src/db/rehearsal-fixtures/demo-current.sql +47 -3
  519. package/src/db/schema.ts +139 -12
  520. package/src/i18n/Trans.tsx +3 -3
  521. package/src/i18n/__tests__/context.test.tsx +9 -6
  522. package/src/i18n/__tests__/detect.test.ts +65 -48
  523. package/src/i18n/__tests__/fallback.test.ts +40 -0
  524. package/src/i18n/__tests__/message-placeholders.test.ts +43 -0
  525. package/src/i18n/__tests__/middleware.test.ts +83 -0
  526. package/src/i18n/context.tsx +9 -44
  527. package/src/i18n/detect.ts +95 -28
  528. package/src/i18n/i18n.ts +41 -17
  529. package/src/i18n/index.ts +7 -5
  530. package/src/i18n/locales/{en.po → public/en.po} +298 -1151
  531. package/src/i18n/locales/public/en.ts +1 -0
  532. package/src/i18n/locales/public/zh-Hans.po +2327 -0
  533. package/src/i18n/locales/public/zh-Hans.ts +1 -0
  534. package/src/i18n/locales/public/zh-Hant.po +2327 -0
  535. package/src/i18n/locales/public/zh-Hant.ts +1 -0
  536. package/src/i18n/locales/settings/en.po +1622 -0
  537. package/src/i18n/locales/settings/en.ts +1 -0
  538. package/src/i18n/locales/settings/zh-Hans.po +1622 -0
  539. package/src/i18n/locales/settings/zh-Hans.ts +1 -0
  540. package/src/i18n/locales/settings/zh-Hant.po +1622 -0
  541. package/src/i18n/locales/settings/zh-Hant.ts +1 -0
  542. package/src/i18n/middleware.ts +37 -24
  543. package/src/index.ts +4 -5
  544. package/src/lib/__tests__/collection-groups.test.ts +80 -0
  545. package/src/lib/__tests__/constants.test.ts +1 -1
  546. package/src/lib/__tests__/csp-builder.test.ts +68 -0
  547. package/src/lib/__tests__/display-text.test.ts +27 -0
  548. package/src/lib/__tests__/embed-providers.test.ts +104 -0
  549. package/src/lib/__tests__/embed-render.test.ts +60 -0
  550. package/src/lib/__tests__/feed.test.ts +125 -63
  551. package/src/lib/__tests__/hosted-signin.test.ts +11 -2
  552. package/src/lib/__tests__/markdown-roundtrip-embed.test.ts +88 -0
  553. package/src/lib/__tests__/markdown-to-tiptap.test.ts +59 -0
  554. package/src/lib/__tests__/markdown.test.ts +47 -5
  555. package/src/lib/__tests__/navigation.test.ts +148 -0
  556. package/src/lib/__tests__/post-display.test.ts +3 -2
  557. package/src/lib/__tests__/post-meta.test.ts +3 -0
  558. package/src/lib/__tests__/resolve-config.test.ts +30 -25
  559. package/src/lib/__tests__/schemas.test.ts +35 -0
  560. package/src/lib/__tests__/slug-format.test.ts +8 -0
  561. package/src/lib/__tests__/summary.test.ts +400 -1
  562. package/src/lib/__tests__/theme.test.ts +41 -2
  563. package/src/lib/__tests__/timeline.test.ts +114 -26
  564. package/src/lib/__tests__/tiptap-render.test.ts +224 -0
  565. package/src/lib/__tests__/tiptap-to-markdown.test.ts +51 -0
  566. package/src/lib/__tests__/video-playback.test.ts +48 -0
  567. package/src/lib/__tests__/view.test.ts +115 -8
  568. package/src/lib/__tests__/worker-response-cache.test.ts +311 -0
  569. package/src/lib/__tests__/youtube.test.ts +99 -0
  570. package/src/lib/api-media.ts +55 -0
  571. package/src/lib/api-posts.ts +99 -0
  572. package/src/lib/api-search.ts +47 -0
  573. package/src/lib/api-settings.ts +122 -0
  574. package/src/lib/asset-path.ts +20 -2
  575. package/src/lib/collection-groups.ts +70 -0
  576. package/src/lib/collection-paths.ts +40 -0
  577. package/src/lib/constants.ts +3 -4
  578. package/src/lib/csp-builder.ts +99 -0
  579. package/src/lib/decorative-quote-mark.ts +11 -0
  580. package/src/lib/display-text.ts +56 -0
  581. package/src/lib/embed-providers.ts +289 -0
  582. package/src/lib/embed-render.ts +151 -0
  583. package/src/lib/env.ts +70 -1
  584. package/src/lib/excerpt.ts +11 -2
  585. package/src/lib/feed.ts +89 -66
  586. package/src/lib/footnotes.ts +146 -0
  587. package/src/lib/github-api.ts +423 -0
  588. package/src/lib/github-app-state.ts +135 -0
  589. package/src/lib/github-app.ts +487 -0
  590. package/src/lib/github-sync-queue-handler.ts +69 -0
  591. package/src/lib/github-sync-site-config.ts +57 -0
  592. package/src/lib/github-sync-status.tsx +87 -0
  593. package/src/lib/github-sync-trigger.ts +199 -0
  594. package/src/lib/github-sync-worker.ts +72 -0
  595. package/src/lib/hosted-signin.ts +1 -1
  596. package/src/lib/hugo-markdown.ts +255 -0
  597. package/src/lib/job-queue-cf.ts +18 -0
  598. package/src/lib/job-queue-db.ts +149 -0
  599. package/src/lib/job-queue.ts +35 -0
  600. package/src/lib/markdown-manager.ts +864 -0
  601. package/src/lib/markdown-to-tiptap.ts +4 -323
  602. package/src/lib/markdown.ts +16 -24
  603. package/src/lib/media-helpers.ts +1 -0
  604. package/src/lib/navigation.ts +40 -8
  605. package/src/lib/post-display.ts +10 -22
  606. package/src/lib/public-storage.ts +6 -1
  607. package/src/lib/render.tsx +5 -2
  608. package/src/lib/resolve-config.ts +23 -11
  609. package/src/lib/rich-image.ts +89 -0
  610. package/src/lib/schemas.ts +186 -12
  611. package/src/lib/slug-format.ts +8 -0
  612. package/src/lib/summary.ts +125 -18
  613. package/src/lib/theme.ts +119 -0
  614. package/src/lib/timeline.ts +91 -63
  615. package/src/lib/tiptap-render.ts +265 -126
  616. package/src/lib/tiptap-to-markdown.ts +6 -329
  617. package/src/lib/upload.ts +97 -6
  618. package/src/lib/version.ts +18 -0
  619. package/src/lib/video-playback.ts +73 -0
  620. package/src/lib/view.ts +130 -90
  621. package/src/lib/webhook-signature.ts +65 -0
  622. package/src/lib/worker-response-cache.ts +220 -0
  623. package/src/lib/youtube.ts +119 -0
  624. package/src/middleware/__tests__/onboarding.test.ts +3 -3
  625. package/src/middleware/__tests__/secure-headers.test.ts +28 -1
  626. package/src/middleware/config.ts +7 -10
  627. package/src/middleware/cors.ts +49 -0
  628. package/src/middleware/secure-headers.ts +45 -55
  629. package/src/node/__tests__/cli-migrate.test.ts +111 -0
  630. package/src/node/__tests__/cli-runtime-target.test.ts +1 -1
  631. package/src/node/__tests__/cli-site-token-env.test.ts +2 -2
  632. package/src/preset.css +316 -12
  633. package/src/routes/__tests__/compose.test.ts +3 -1
  634. package/src/routes/api/__tests__/collections.test.ts +81 -27
  635. package/src/routes/api/__tests__/mcp.test.ts +389 -0
  636. package/src/routes/api/__tests__/nav-items.test.ts +163 -2
  637. package/src/routes/api/__tests__/posts.test.ts +190 -0
  638. package/src/routes/api/__tests__/settings.test.ts +99 -3
  639. package/src/routes/api/__tests__/upload-multipart.test.ts +10 -2
  640. package/src/routes/api/__tests__/upload.test.ts +132 -0
  641. package/src/routes/api/__tests__/uploads.test.ts +5 -3
  642. package/src/routes/api/collections.ts +67 -26
  643. package/src/routes/api/custom-urls.ts +1 -0
  644. package/src/routes/api/export.ts +8 -4
  645. package/src/routes/api/github-sync.tsx +380 -0
  646. package/src/routes/api/internal/__tests__/sites.test.ts +45 -2
  647. package/src/routes/api/internal/sites.ts +2 -0
  648. package/src/routes/api/internal/text-attachments.ts +60 -0
  649. package/src/routes/api/internal/uploads.ts +5 -1
  650. package/src/routes/api/mcp.ts +30 -0
  651. package/src/routes/api/nav-items.ts +30 -11
  652. package/src/routes/api/palette.ts +17 -0
  653. package/src/routes/api/posts.ts +37 -106
  654. package/src/routes/api/public/__tests__/posts.test.ts +372 -0
  655. package/src/routes/api/public/posts.ts +302 -0
  656. package/src/routes/api/search.ts +1 -47
  657. package/src/routes/api/settings.ts +44 -58
  658. package/src/routes/api/upload-multipart.ts +15 -5
  659. package/src/routes/api/upload.ts +62 -49
  660. package/src/routes/api/uploads.ts +1 -0
  661. package/src/routes/auth/__tests__/hosted-sso.test.ts +33 -0
  662. package/src/routes/auth/__tests__/setup.test.ts +29 -4
  663. package/src/routes/auth/hosted-sso-expired-page.tsx +89 -0
  664. package/src/routes/auth/hosted-sso.ts +42 -1
  665. package/src/routes/auth/reset.tsx +46 -32
  666. package/src/routes/auth/setup.tsx +53 -43
  667. package/src/routes/auth/signin.tsx +34 -24
  668. package/src/routes/compose.tsx +114 -1
  669. package/src/routes/dash/__tests__/font-theme.test.ts +6 -27
  670. package/src/routes/dash/__tests__/settings-avatar.test.ts +2 -3
  671. package/src/routes/dash/custom-urls.tsx +250 -112
  672. package/src/routes/dash/settings.tsx +1179 -70
  673. package/src/routes/feed/__tests__/{rss.test.ts → feed.test.ts} +62 -123
  674. package/src/routes/feed/feed.ts +386 -0
  675. package/src/routes/feed/manifest.ts +67 -0
  676. package/src/routes/feed/sitemap.ts +11 -2
  677. package/src/routes/pages/__tests__/collection-routing.test.ts +176 -0
  678. package/src/routes/pages/__tests__/collections.test.ts +2 -3
  679. package/src/routes/pages/__tests__/featured.test.ts +2 -3
  680. package/src/routes/pages/archive.tsx +523 -127
  681. package/src/routes/pages/collection.tsx +265 -59
  682. package/src/routes/pages/collections.tsx +5 -1
  683. package/src/routes/pages/home.tsx +2 -2
  684. package/src/routes/pages/latest.tsx +3 -3
  685. package/src/routes/pages/page.tsx +221 -3
  686. package/src/routes/pages/partials.tsx +5 -0
  687. package/src/routes/pages/search.tsx +17 -1
  688. package/src/routes/pages/theme-sample.tsx +1 -2
  689. package/src/runtime/__tests__/node.test.ts +1 -1
  690. package/src/runtime/__tests__/readiness.test.ts +89 -0
  691. package/src/runtime/readiness.ts +129 -0
  692. package/src/runtime/site.ts +9 -1
  693. package/src/services/__tests__/collection.test.ts +181 -53
  694. package/src/services/__tests__/github-app-installations.test.ts +181 -0
  695. package/src/services/__tests__/github-sync-classify.test.ts +189 -0
  696. package/src/services/__tests__/github-sync-push.test.ts +159 -0
  697. package/src/services/__tests__/media.test.ts +444 -7
  698. package/src/services/__tests__/navigation.test.ts +271 -14
  699. package/src/services/__tests__/post-timeline.test.ts +85 -17
  700. package/src/services/__tests__/post.test.ts +118 -10
  701. package/src/services/__tests__/settings.test.ts +43 -21
  702. package/src/services/auth.ts +2 -2
  703. package/src/services/bootstrap.ts +10 -7
  704. package/src/services/collection.ts +644 -191
  705. package/src/services/custom-url.ts +34 -7
  706. package/src/services/export-theme/assets/client-site.css +2 -0
  707. package/src/services/export-theme/assets/client-site.js +145 -0
  708. package/src/services/export-theme/layouts/_default/alias.html +49 -0
  709. package/src/services/export-theme/layouts/_default/baseof.html +21 -0
  710. package/src/services/export-theme/layouts/_default/list.html +104 -0
  711. package/src/services/export-theme/layouts/_default/rss.xml +160 -0
  712. package/src/services/export-theme/layouts/_default/single.html +15 -0
  713. package/src/services/export-theme/layouts/archive/list.html +31 -0
  714. package/src/services/export-theme/layouts/collection/single.html +19 -0
  715. package/src/services/export-theme/layouts/collections/list.html +111 -0
  716. package/src/services/export-theme/layouts/featured/list.html +28 -0
  717. package/src/services/export-theme/layouts/index.html +41 -0
  718. package/src/services/export-theme/layouts/partials/feed-post-content.xml +107 -0
  719. package/src/services/export-theme/layouts/partials/footer.html +32 -0
  720. package/src/services/export-theme/layouts/partials/head.html +52 -0
  721. package/src/services/export-theme/layouts/partials/header.html +115 -0
  722. package/src/services/export-theme/layouts/partials/media-gallery.html +246 -0
  723. package/src/services/export-theme/layouts/partials/pagination.html +55 -0
  724. package/src/services/export-theme/layouts/partials/post-card.html +127 -0
  725. package/src/services/export-theme/layouts/partials/reply.html +91 -0
  726. package/src/services/export-theme/layouts/partials/thread-preview.html +82 -0
  727. package/src/services/export-theme/layouts/post/list.html +129 -0
  728. package/src/services/export-theme/styles/main.css +1981 -0
  729. package/src/services/export-theme/theme.toml +12 -0
  730. package/src/services/export.ts +1365 -2412
  731. package/src/services/github-app-installations.ts +302 -0
  732. package/src/services/github-sync.ts +769 -0
  733. package/src/services/index.ts +15 -0
  734. package/src/services/mcp.ts +1324 -0
  735. package/src/services/media.ts +336 -25
  736. package/src/services/navigation.ts +115 -23
  737. package/src/services/path.ts +129 -28
  738. package/src/services/post.ts +779 -207
  739. package/src/services/search.ts +3 -0
  740. package/src/services/settings.ts +29 -15
  741. package/src/services/site-admin.ts +26 -6
  742. package/src/services/upload-session.ts +69 -34
  743. package/src/style-cjk-jp.css +3 -0
  744. package/src/style-cjk-kr.css +3 -0
  745. package/src/styles/components.css +160 -59
  746. package/src/styles/fonts/et-book/et-book-bold-line-figures.woff +0 -0
  747. package/src/styles/fonts/et-book/et-book-display-italic-old-style-figures.woff +0 -0
  748. package/src/styles/fonts/et-book/et-book-roman-line-figures.woff +0 -0
  749. package/src/styles/fonts/et-book.css +31 -0
  750. package/src/styles/fonts/latin.css +1 -0
  751. package/src/styles/fonts/noto-serif-jp/400/057a6a98bda7fe57105ddaa99ec82015.woff2 +0 -0
  752. package/src/styles/fonts/noto-serif-jp/400/0acd1fe2b2ea1ad1bfee7ae1fa139d27.woff2 +0 -0
  753. package/src/styles/fonts/noto-serif-jp/400/0c2ab6b295e55f356f8020d4e7747522.woff2 +0 -0
  754. package/src/styles/fonts/noto-serif-jp/400/0c5f9492af03a4fa42c784de94649de1.woff2 +0 -0
  755. package/src/styles/fonts/noto-serif-jp/400/0d9a936885a4c39077438effd3779cbd.woff2 +0 -0
  756. package/src/styles/fonts/noto-serif-jp/400/0e645da524f7cfc0e8c3c03fb2b08428.woff2 +0 -0
  757. package/src/styles/fonts/noto-serif-jp/400/135e83b403475c5dc9e49b43501a5b84.woff2 +0 -0
  758. package/src/styles/fonts/noto-serif-jp/400/13b2c53b30e6a3e4de7132dbc18dbdfc.woff2 +0 -0
  759. package/src/styles/fonts/noto-serif-jp/400/15d95680dc31cc6ce20e0a5464106dc4.woff2 +0 -0
  760. package/src/styles/fonts/noto-serif-jp/400/1733f27476507ca68b68a803bc533cc2.woff2 +0 -0
  761. package/src/styles/fonts/noto-serif-jp/400/188c2db794f3dd7a45889ddbc81da9bb.woff2 +0 -0
  762. package/src/styles/fonts/noto-serif-jp/400/1cf737900dd49c2e88f1b3221a82a602.woff2 +0 -0
  763. package/src/styles/fonts/noto-serif-jp/400/233d3a685ee18276b319363474599d47.woff2 +0 -0
  764. package/src/styles/fonts/noto-serif-jp/400/284b53bbefb06924cf236d24c8ed5641.woff2 +0 -0
  765. package/src/styles/fonts/noto-serif-jp/400/2a56eaf19d1d38a6b57e2a388f733676.woff2 +0 -0
  766. package/src/styles/fonts/noto-serif-jp/400/2abfbab82b6a7c04426afc054d2464da.woff2 +0 -0
  767. package/src/styles/fonts/noto-serif-jp/400/2e6f4bb71ef6b38765d51acc5a79f638.woff2 +0 -0
  768. package/src/styles/fonts/noto-serif-jp/400/31194d303a67561926a544ed0e072aee.woff2 +0 -0
  769. package/src/styles/fonts/noto-serif-jp/400/3623d96698132c61e861f984ce11cc23.woff2 +0 -0
  770. package/src/styles/fonts/noto-serif-jp/400/39211b02f24c69cbd1b54f6d41b01933.woff2 +0 -0
  771. package/src/styles/fonts/noto-serif-jp/400/3e24063b19abd2b051af986a6870046d.woff2 +0 -0
  772. package/src/styles/fonts/noto-serif-jp/400/4410f876d27c9821839474b6b1059fd7.woff2 +0 -0
  773. package/src/styles/fonts/noto-serif-jp/400/479329a39a3eb6c0047e6b0981919855.woff2 +0 -0
  774. package/src/styles/fonts/noto-serif-jp/400/527ff336279465617aafbafe1a830632.woff2 +0 -0
  775. package/src/styles/fonts/noto-serif-jp/400/56b40518ea0608e62826bd44ee27f5f9.woff2 +0 -0
  776. package/src/styles/fonts/noto-serif-jp/400/5acc7f736217259db79a42bf44241c48.woff2 +0 -0
  777. package/src/styles/fonts/noto-serif-jp/400/5c05f8b75c9d7f25b3c04ca711cf43b3.woff2 +0 -0
  778. package/src/styles/fonts/noto-serif-jp/400/5e0124c7265f1b4cf0fc797b94efbebc.woff2 +0 -0
  779. package/src/styles/fonts/noto-serif-jp/400/615a7e0d63f257109d599b2a1977de68.woff2 +0 -0
  780. package/src/styles/fonts/noto-serif-jp/400/61a2c80d0c924d5a6187c02e8d1d1642.woff2 +0 -0
  781. package/src/styles/fonts/noto-serif-jp/400/62fc94f8d4c5a750b7f25e7387539910.woff2 +0 -0
  782. package/src/styles/fonts/noto-serif-jp/400/639c7c6b0b0c27c738702741cfa4b8c0.woff2 +0 -0
  783. package/src/styles/fonts/noto-serif-jp/400/68a3a4bf337f8a0722be76676e20b850.woff2 +0 -0
  784. package/src/styles/fonts/noto-serif-jp/400/6abdd163d2c4b85698db8aa1ce149361.woff2 +0 -0
  785. package/src/styles/fonts/noto-serif-jp/400/73b794d885b88f7befb7ea8ab1780a15.woff2 +0 -0
  786. package/src/styles/fonts/noto-serif-jp/400/743f290baf027d4626a86e22f3d44600.woff2 +0 -0
  787. package/src/styles/fonts/noto-serif-jp/400/757019c01c5e2c2b0f54293cea3b5636.woff2 +0 -0
  788. package/src/styles/fonts/noto-serif-jp/400/76f117a3baacda304a71965a17266a13.woff2 +0 -0
  789. package/src/styles/fonts/noto-serif-jp/400/77747f17625a259fb405b7bbdd84ac4b.woff2 +0 -0
  790. package/src/styles/fonts/noto-serif-jp/400/788498548ddfb710d6ef3c7bff79fa97.woff2 +0 -0
  791. package/src/styles/fonts/noto-serif-jp/400/78ea6c40923ce95367e3517dd1e5a849.woff2 +0 -0
  792. package/src/styles/fonts/noto-serif-jp/400/7f9a6c9286b68de9c72b0024f7beeb40.woff2 +0 -0
  793. package/src/styles/fonts/noto-serif-jp/400/823d1bb11097331238d103c7f72138dc.woff2 +0 -0
  794. package/src/styles/fonts/noto-serif-jp/400/888ba53510213d5d1f6a7deb60e569b6.woff2 +0 -0
  795. package/src/styles/fonts/noto-serif-jp/400/892aa49b2529c89bb4076d4aa51fe30f.woff2 +0 -0
  796. package/src/styles/fonts/noto-serif-jp/400/95ff41191c76ef893ac70a1043e95e44.woff2 +0 -0
  797. package/src/styles/fonts/noto-serif-jp/400/96c75862c8cec51a7c05ff025fea86cd.woff2 +0 -0
  798. package/src/styles/fonts/noto-serif-jp/400/9b21e8244f5930c48ad5073f83777b6c.woff2 +0 -0
  799. package/src/styles/fonts/noto-serif-jp/400/9fce02d1a09f464c36c9fcfb14a354c5.woff2 +0 -0
  800. package/src/styles/fonts/noto-serif-jp/400/a0a6755c7e3f9e4cf03387027dd9f16c.woff2 +0 -0
  801. package/src/styles/fonts/noto-serif-jp/400/a4475c442c6b259354c9eda62e64e7df.woff2 +0 -0
  802. package/src/styles/fonts/noto-serif-jp/400/a4a39b5f048671aa37c2b2a9581ab08a.woff2 +0 -0
  803. package/src/styles/fonts/noto-serif-jp/400/a534449d67561ac9b06489f64e57ad98.woff2 +0 -0
  804. package/src/styles/fonts/noto-serif-jp/400/a919a8c6fec6d7e8bb21177965f2e9d7.woff2 +0 -0
  805. package/src/styles/fonts/noto-serif-jp/400/ad67113f88b59582991cb0c5d33ea19f.woff2 +0 -0
  806. package/src/styles/fonts/noto-serif-jp/400/adb6e613fb99c6dd660b727101f554a8.woff2 +0 -0
  807. package/src/styles/fonts/noto-serif-jp/400/adc4a98a89870ef984ee8f4b57c8a3a5.woff2 +0 -0
  808. package/src/styles/fonts/noto-serif-jp/400/b12379ab782468d725519cd07a7d15bc.woff2 +0 -0
  809. package/src/styles/fonts/noto-serif-jp/400/b55486f8a459c838fe329d4e79a8c211.woff2 +0 -0
  810. package/src/styles/fonts/noto-serif-jp/400/bb0b15492b8cdbbec57c0bcfa0aa9241.woff2 +0 -0
  811. package/src/styles/fonts/noto-serif-jp/400/bedc74b423b7293b6ad0bdecc61c42cc.woff2 +0 -0
  812. package/src/styles/fonts/noto-serif-jp/400/bfb00d4a4c48661bd0be99f300a0faae.woff2 +0 -0
  813. package/src/styles/fonts/noto-serif-jp/400/c1b0df29ae41d764904df84e9ac83d1e.woff2 +0 -0
  814. package/src/styles/fonts/noto-serif-jp/400/c42c67070cfe99cf823df92d81c7fa6e.woff2 +0 -0
  815. package/src/styles/fonts/noto-serif-jp/400/c4d749e45ecd5a5aed5a0bb3ebfd355d.woff2 +0 -0
  816. package/src/styles/fonts/noto-serif-jp/400/c96d83978add28b356c22c4c84916733.woff2 +0 -0
  817. package/src/styles/fonts/noto-serif-jp/400/cb7ccd6494256f7a2977b7c2b0225592.woff2 +0 -0
  818. package/src/styles/fonts/noto-serif-jp/400/ce41d70ce6a069a498525c9e15c45cf2.woff2 +0 -0
  819. package/src/styles/fonts/noto-serif-jp/400/d509ee5c8241bc7c3de2039d75564fa5.woff2 +0 -0
  820. package/src/styles/fonts/noto-serif-jp/400/d675d717cd329bfd4c0524f76ae1579c.woff2 +0 -0
  821. package/src/styles/fonts/noto-serif-jp/400/dc8f6256445e68199540be9ade33529f.woff2 +0 -0
  822. package/src/styles/fonts/noto-serif-jp/400/e8c15be62faf978d208925e79ea6a10d.woff2 +0 -0
  823. package/src/styles/fonts/noto-serif-jp/400/e91c4d941ed9f5c2f3e27f205a3a225e.woff2 +0 -0
  824. package/src/styles/fonts/noto-serif-jp/400/e9c566be7a5d38a9085225f7372bc82b.woff2 +0 -0
  825. package/src/styles/fonts/noto-serif-jp/400/e9ebc567a711eeb29019ddae3e0ce7fe.woff2 +0 -0
  826. package/src/styles/fonts/noto-serif-jp/400/ecb8875a56c7b038b35432fda41ae128.woff2 +0 -0
  827. package/src/styles/fonts/noto-serif-jp/400/f1661731474b78bdf81114daf10b254f.woff2 +0 -0
  828. package/src/styles/fonts/noto-serif-jp/400/f2c58dee206ba9355046fc23d05491f7.woff2 +0 -0
  829. package/src/styles/fonts/noto-serif-jp/400/f50ac27ea4358d67fdda403c2bb52467.woff2 +0 -0
  830. package/src/styles/fonts/noto-serif-jp/400/f55334112f8e8be82d65db29887a663f.woff2 +0 -0
  831. package/src/styles/fonts/noto-serif-jp/400/f740e93f3c0277ecc616594103bca683.woff2 +0 -0
  832. package/src/styles/fonts/noto-serif-jp/400/f7633b5af033d76ff2fb3c3c266d77c5.woff2 +0 -0
  833. package/src/styles/fonts/noto-serif-jp/400/f7d8468cba2335a83ee414ea68291bab.woff2 +0 -0
  834. package/src/styles/fonts/noto-serif-jp/400/fc9ae5b600fb711f2d67e93ce768cba4.woff2 +0 -0
  835. package/src/styles/fonts/noto-serif-jp/400/fd1bceb55d3e0183ac2454b8532fec7d.woff2 +0 -0
  836. package/src/styles/fonts/noto-serif-jp/700/02611a045a7fe83a12014e3debc9f731.woff2 +0 -0
  837. package/src/styles/fonts/noto-serif-jp/700/0f5e1a18987dbc84ca05188c129e1936.woff2 +0 -0
  838. package/src/styles/fonts/noto-serif-jp/700/112743a4ab5fdd1498dfdf2b11336380.woff2 +0 -0
  839. package/src/styles/fonts/noto-serif-jp/700/1211f03d3ff5759a702631445793f60e.woff2 +0 -0
  840. package/src/styles/fonts/noto-serif-jp/700/147b24c2f08d03bbed30887d4cb3311c.woff2 +0 -0
  841. package/src/styles/fonts/noto-serif-jp/700/16663e567f81f4725a1522f37e18f71f.woff2 +0 -0
  842. package/src/styles/fonts/noto-serif-jp/700/1824321da801e6257b902f3d1d09054c.woff2 +0 -0
  843. package/src/styles/fonts/noto-serif-jp/700/1a3a92c7c060a71a6c35819b9ebcdbb9.woff2 +0 -0
  844. package/src/styles/fonts/noto-serif-jp/700/1fba7ec0e412e911bf31841de5a8a4e4.woff2 +0 -0
  845. package/src/styles/fonts/noto-serif-jp/700/28a97af9ab9d38983d20f39ff09840e1.woff2 +0 -0
  846. package/src/styles/fonts/noto-serif-jp/700/2bfaadaf3479c72286248e6de0be0ec9.woff2 +0 -0
  847. package/src/styles/fonts/noto-serif-jp/700/2c8c55e4cec85ce77e95cac9d330f5cf.woff2 +0 -0
  848. package/src/styles/fonts/noto-serif-jp/700/2ed9981d2e8983365bd051159b976b6d.woff2 +0 -0
  849. package/src/styles/fonts/noto-serif-jp/700/2f4c633e923ba30c6ba376367379fc91.woff2 +0 -0
  850. package/src/styles/fonts/noto-serif-jp/700/349965eee0a9b6c984a319ab96a4ece9.woff2 +0 -0
  851. package/src/styles/fonts/noto-serif-jp/700/36cda3eae13370b934bba4429fab9078.woff2 +0 -0
  852. package/src/styles/fonts/noto-serif-jp/700/3aa13f1843d7c8fa16109b6395a9a29d.woff2 +0 -0
  853. package/src/styles/fonts/noto-serif-jp/700/3e2c06bdd9dcab29aeaeb0cfb7fa608a.woff2 +0 -0
  854. package/src/styles/fonts/noto-serif-jp/700/424123f9371ba357087363263eeafcda.woff2 +0 -0
  855. package/src/styles/fonts/noto-serif-jp/700/43b3bbf43055c3e65db9cdf2c5b18c1c.woff2 +0 -0
  856. package/src/styles/fonts/noto-serif-jp/700/44704471b60c18b3ecec5300a88f1102.woff2 +0 -0
  857. package/src/styles/fonts/noto-serif-jp/700/46604090efbb99c2db1800928af0a239.woff2 +0 -0
  858. package/src/styles/fonts/noto-serif-jp/700/46998df85d31e629c0142f0556f5e7c5.woff2 +0 -0
  859. package/src/styles/fonts/noto-serif-jp/700/49902f1c41b281f8eb3771abdd4dccb8.woff2 +0 -0
  860. package/src/styles/fonts/noto-serif-jp/700/4db4f31a16965baa42cb7dad667a8f04.woff2 +0 -0
  861. package/src/styles/fonts/noto-serif-jp/700/572b9e28f1e6d89b765a16d809db84a1.woff2 +0 -0
  862. package/src/styles/fonts/noto-serif-jp/700/5921cef36750ff6092d94b83a802823b.woff2 +0 -0
  863. package/src/styles/fonts/noto-serif-jp/700/59e95d8b5332dcdae894a19946ab767d.woff2 +0 -0
  864. package/src/styles/fonts/noto-serif-jp/700/5ec349ff62b9ee5fe0c6dae867704dc4.woff2 +0 -0
  865. package/src/styles/fonts/noto-serif-jp/700/601f812e8b1eafecd5ba585a6a6d7962.woff2 +0 -0
  866. package/src/styles/fonts/noto-serif-jp/700/6025ddaf99d86cc8bfd781006b19fbd6.woff2 +0 -0
  867. package/src/styles/fonts/noto-serif-jp/700/60f6e28b3f0400b0e8fe32c3c7116102.woff2 +0 -0
  868. package/src/styles/fonts/noto-serif-jp/700/64a404d675f1d726f0891b7a80794595.woff2 +0 -0
  869. package/src/styles/fonts/noto-serif-jp/700/7158022889c6c177062ac85036e7af10.woff2 +0 -0
  870. package/src/styles/fonts/noto-serif-jp/700/7e38ca789a9e76ac91d9256374e154f0.woff2 +0 -0
  871. package/src/styles/fonts/noto-serif-jp/700/815a0b797465190f60d8b1a04656c42e.woff2 +0 -0
  872. package/src/styles/fonts/noto-serif-jp/700/8726558cf297cbda831cc19514897205.woff2 +0 -0
  873. package/src/styles/fonts/noto-serif-jp/700/8855472f3c02f6c7ebb3216617ebe4af.woff2 +0 -0
  874. package/src/styles/fonts/noto-serif-jp/700/8e231d707f0c4f8e3cde90a6b52a79aa.woff2 +0 -0
  875. package/src/styles/fonts/noto-serif-jp/700/9064c12fd72c7aba235d8c3881755b91.woff2 +0 -0
  876. package/src/styles/fonts/noto-serif-jp/700/911b9e53e9814de2998c60bf3115f560.woff2 +0 -0
  877. package/src/styles/fonts/noto-serif-jp/700/92fdc376bce277874e75db666f175b44.woff2 +0 -0
  878. package/src/styles/fonts/noto-serif-jp/700/930a23430f0eb64480d7fe5f82834e21.woff2 +0 -0
  879. package/src/styles/fonts/noto-serif-jp/700/93bed0e5f2dd5a21cf73304fcfbc149d.woff2 +0 -0
  880. package/src/styles/fonts/noto-serif-jp/700/93f3ea6918533d96d9c252378b9a4af0.woff2 +0 -0
  881. package/src/styles/fonts/noto-serif-jp/700/95a0951d2a2722ff773a1a45e8c474d6.woff2 +0 -0
  882. package/src/styles/fonts/noto-serif-jp/700/982cd1765ca6bbb3e6547e47834d5148.woff2 +0 -0
  883. package/src/styles/fonts/noto-serif-jp/700/9b0c3caac458c7bc9c9133e40405ddea.woff2 +0 -0
  884. package/src/styles/fonts/noto-serif-jp/700/9f3bdab4025dc7c5ba1a5871e62e8918.woff2 +0 -0
  885. package/src/styles/fonts/noto-serif-jp/700/a00e94d4f04df6aa659db9c4954c7efe.woff2 +0 -0
  886. package/src/styles/fonts/noto-serif-jp/700/a2b0597837e382aca19919c4b74e58c8.woff2 +0 -0
  887. package/src/styles/fonts/noto-serif-jp/700/a373e85c96aa0dc303092429fb837e51.woff2 +0 -0
  888. package/src/styles/fonts/noto-serif-jp/700/a6e044424780a57610833cc856c15bf5.woff2 +0 -0
  889. package/src/styles/fonts/noto-serif-jp/700/a7c58070d68dc1724e9d4e781afb78db.woff2 +0 -0
  890. package/src/styles/fonts/noto-serif-jp/700/accc43762ad05edfbff66ba1380d192a.woff2 +0 -0
  891. package/src/styles/fonts/noto-serif-jp/700/ad47bcd6d4663026d648c132d969318d.woff2 +0 -0
  892. package/src/styles/fonts/noto-serif-jp/700/af57a2e8c72f9ba0efb1af771d32c124.woff2 +0 -0
  893. package/src/styles/fonts/noto-serif-jp/700/b0ae5f374e43dac992a4a5d334cebc0b.woff2 +0 -0
  894. package/src/styles/fonts/noto-serif-jp/700/b91234c10fd8b8c8abc88e03afe66a1f.woff2 +0 -0
  895. package/src/styles/fonts/noto-serif-jp/700/b9317198f118a1dfd8ddf2b82ec028f3.woff2 +0 -0
  896. package/src/styles/fonts/noto-serif-jp/700/ba825ae79b1a6f7e0cce5215fcb5c96f.woff2 +0 -0
  897. package/src/styles/fonts/noto-serif-jp/700/bc6183ac08f0fac78c46f80c10cf7c92.woff2 +0 -0
  898. package/src/styles/fonts/noto-serif-jp/700/bc8ccea5abf6598cf3cfa97eb59804bb.woff2 +0 -0
  899. package/src/styles/fonts/noto-serif-jp/700/bc95a792cbca6639214c9b0da13392ff.woff2 +0 -0
  900. package/src/styles/fonts/noto-serif-jp/700/bcfa62f35731856246c146d3a6932bf3.woff2 +0 -0
  901. package/src/styles/fonts/noto-serif-jp/700/c063897793f593eb26d6ff7b7baaba18.woff2 +0 -0
  902. package/src/styles/fonts/noto-serif-jp/700/c6c2971ad1f3221f6cf84028aa0f477e.woff2 +0 -0
  903. package/src/styles/fonts/noto-serif-jp/700/c97f41eef722121d86f55d553c056a39.woff2 +0 -0
  904. package/src/styles/fonts/noto-serif-jp/700/ca62704509932d3232d62918de97af3f.woff2 +0 -0
  905. package/src/styles/fonts/noto-serif-jp/700/d1f064825fa5784b5c930652bd831cce.woff2 +0 -0
  906. package/src/styles/fonts/noto-serif-jp/700/d2faabcedd19f016e7b21bce073c0ec8.woff2 +0 -0
  907. package/src/styles/fonts/noto-serif-jp/700/d320171e57480510f87dbbc7d5264b0a.woff2 +0 -0
  908. package/src/styles/fonts/noto-serif-jp/700/d3a72a99d365dddfbca8d017a8011368.woff2 +0 -0
  909. package/src/styles/fonts/noto-serif-jp/700/d42aafa0f246ad3b4c16fe96d3a3a432.woff2 +0 -0
  910. package/src/styles/fonts/noto-serif-jp/700/d4aaf23c13ae808a4bed617afd13aa07.woff2 +0 -0
  911. package/src/styles/fonts/noto-serif-jp/700/d6bb686bddfbe8f38a36a68e609a8667.woff2 +0 -0
  912. package/src/styles/fonts/noto-serif-jp/700/d9020ff69a83b2a6ee1f42ae480f7db0.woff2 +0 -0
  913. package/src/styles/fonts/noto-serif-jp/700/da90a9012ab2d98f759e3fa0820ef502.woff2 +0 -0
  914. package/src/styles/fonts/noto-serif-jp/700/df10d94bea357a43313e20da5d84bd30.woff2 +0 -0
  915. package/src/styles/fonts/noto-serif-jp/700/e34b2b141e472dc776c86fdf8eea23b0.woff2 +0 -0
  916. package/src/styles/fonts/noto-serif-jp/700/e444fd88f1390636e603d0d681538ac8.woff2 +0 -0
  917. package/src/styles/fonts/noto-serif-jp/700/e79898628283edc27180fc39d0d769c1.woff2 +0 -0
  918. package/src/styles/fonts/noto-serif-jp/700/eaf332445a40942928e5f5750c1c3116.woff2 +0 -0
  919. package/src/styles/fonts/noto-serif-jp/700/f91cd722855f4269256eae1187df64ec.woff2 +0 -0
  920. package/src/styles/fonts/noto-serif-jp/700/fc895f5ce66b656f4a933097bf2a8775.woff2 +0 -0
  921. package/src/styles/fonts/noto-serif-jp/700/fca6720fd14c467d29a90f18ef3859b9.woff2 +0 -0
  922. package/src/styles/fonts/noto-serif-jp/700/fd1bb507bcbf04856eeb7f7fd47ea579.woff2 +0 -0
  923. package/src/styles/fonts/noto-serif-jp/noto-serif-jp.css +3349 -0
  924. package/src/styles/fonts/noto-serif-kr/400/033466ef683afe931f7f520cfb42d928.woff2 +0 -0
  925. package/src/styles/fonts/noto-serif-kr/400/05da12edb9d52210581dc6ec4541031f.woff2 +0 -0
  926. package/src/styles/fonts/noto-serif-kr/400/0968e4861204b51f62a2f8e9f15dd5e0.woff2 +0 -0
  927. package/src/styles/fonts/noto-serif-kr/400/0d5dec931dc885f07fe5cd5af8bed675.woff2 +0 -0
  928. package/src/styles/fonts/noto-serif-kr/400/1076f0f6f66d28d7a2f16427faad4413.woff2 +0 -0
  929. package/src/styles/fonts/noto-serif-kr/400/12ef1ba76bd20b004b865266a1aa70b3.woff2 +0 -0
  930. package/src/styles/fonts/noto-serif-kr/400/152395634a207579552f8cb54db88599.woff2 +0 -0
  931. package/src/styles/fonts/noto-serif-kr/400/1a08931435f885e707edb85978ea3bb6.woff2 +0 -0
  932. package/src/styles/fonts/noto-serif-kr/400/31a197213ae61d7043c81013f52d10d6.woff2 +0 -0
  933. package/src/styles/fonts/noto-serif-kr/400/37dbd564820cce2f7b3331e442da0df3.woff2 +0 -0
  934. package/src/styles/fonts/noto-serif-kr/400/37dc8505b20b37a2477a9121b16d44a7.woff2 +0 -0
  935. package/src/styles/fonts/noto-serif-kr/400/3ac0a07878cacdc98bb889f40f5970d3.woff2 +0 -0
  936. package/src/styles/fonts/noto-serif-kr/400/491bbba374093fff045f55803a22bfef.woff2 +0 -0
  937. package/src/styles/fonts/noto-serif-kr/400/4d38e56738156625329d93bd5c8cc74a.woff2 +0 -0
  938. package/src/styles/fonts/noto-serif-kr/400/57e9a86651366c1ba299e47aa7e358c2.woff2 +0 -0
  939. package/src/styles/fonts/noto-serif-kr/400/57f89adeae55aa7fe2add3fc1801ce03.woff2 +0 -0
  940. package/src/styles/fonts/noto-serif-kr/400/5df9ce98c75f8c50fb4fff7f01a23925.woff2 +0 -0
  941. package/src/styles/fonts/noto-serif-kr/400/60020a830d809c26970cf8e48ba1eeda.woff2 +0 -0
  942. package/src/styles/fonts/noto-serif-kr/400/60bcfa3ea7446eb42394aab02d28be40.woff2 +0 -0
  943. package/src/styles/fonts/noto-serif-kr/400/63fafcb069520613d0ea35ad3e6b1e42.woff2 +0 -0
  944. package/src/styles/fonts/noto-serif-kr/400/65a60d87c64228d258a123cbe85f5f31.woff2 +0 -0
  945. package/src/styles/fonts/noto-serif-kr/400/6968e889e18891d912809fe484c2e745.woff2 +0 -0
  946. package/src/styles/fonts/noto-serif-kr/400/70714891ad3fbfc3d5f10a8669dacc5a.woff2 +0 -0
  947. package/src/styles/fonts/noto-serif-kr/400/761d84afca8d7f34eebefe538adba827.woff2 +0 -0
  948. package/src/styles/fonts/noto-serif-kr/400/76e07530323418ec723c5d7634c9bcca.woff2 +0 -0
  949. package/src/styles/fonts/noto-serif-kr/400/773819b7b9b8fd404a929867c0fd677e.woff2 +0 -0
  950. package/src/styles/fonts/noto-serif-kr/400/7817dd16805145d8538ad57590f69f5a.woff2 +0 -0
  951. package/src/styles/fonts/noto-serif-kr/400/7b59f0ec7792b18458dc5a361e37884c.woff2 +0 -0
  952. package/src/styles/fonts/noto-serif-kr/400/7c3945788a689a69356c1a622d69d48b.woff2 +0 -0
  953. package/src/styles/fonts/noto-serif-kr/400/835b6505bb9eea9678925a1fa885353d.woff2 +0 -0
  954. package/src/styles/fonts/noto-serif-kr/400/8b5c9ef81159f31d2ab35f45ca4373e0.woff2 +0 -0
  955. package/src/styles/fonts/noto-serif-kr/400/8b91c7c2ed390f1278b9befa3aa87233.woff2 +0 -0
  956. package/src/styles/fonts/noto-serif-kr/400/8fb45117a62d92dce44a80f0b729ead5.woff2 +0 -0
  957. package/src/styles/fonts/noto-serif-kr/400/90b7848e9b1623b77bdcf155e90b839c.woff2 +0 -0
  958. package/src/styles/fonts/noto-serif-kr/400/985d4d41afa0934a4eb2de35473fb9a2.woff2 +0 -0
  959. package/src/styles/fonts/noto-serif-kr/400/9bb38fd05201de666b88b82d56a386f7.woff2 +0 -0
  960. package/src/styles/fonts/noto-serif-kr/400/9eff2ab2a9d2ced47ab761bf6fdb11ec.woff2 +0 -0
  961. package/src/styles/fonts/noto-serif-kr/400/9f1963fe8d4d6878d717d872a8f3fdb5.woff2 +0 -0
  962. package/src/styles/fonts/noto-serif-kr/400/a0d00fe4816c95a8c7dffd445ef00b03.woff2 +0 -0
  963. package/src/styles/fonts/noto-serif-kr/400/a0f199077fa1a33bc2a1e01c64de7fe6.woff2 +0 -0
  964. package/src/styles/fonts/noto-serif-kr/400/a7c35e42a659347e490c3cb7983b2e7f.woff2 +0 -0
  965. package/src/styles/fonts/noto-serif-kr/400/aa662092cf249707123ca4d575e2764b.woff2 +0 -0
  966. package/src/styles/fonts/noto-serif-kr/400/aae1eda193285ab817a2d1b408440326.woff2 +0 -0
  967. package/src/styles/fonts/noto-serif-kr/400/b0cb664cb2e1371efda8943c0b7dcd1c.woff2 +0 -0
  968. package/src/styles/fonts/noto-serif-kr/400/b0d1cdced482352cf0d3ae58638aacb9.woff2 +0 -0
  969. package/src/styles/fonts/noto-serif-kr/400/b320f5d185b2cff933ac549c184031c5.woff2 +0 -0
  970. package/src/styles/fonts/noto-serif-kr/400/ba9c59d7dfa4494db1bb764ada81467d.woff2 +0 -0
  971. package/src/styles/fonts/noto-serif-kr/400/bab547459d514f46206e340c4bb2dc88.woff2 +0 -0
  972. package/src/styles/fonts/noto-serif-kr/400/bcc39eda837bb7a7a3d37c8c60fffb81.woff2 +0 -0
  973. package/src/styles/fonts/noto-serif-kr/400/bd73264d7f98776708d5d6f3c9b78fcc.woff2 +0 -0
  974. package/src/styles/fonts/noto-serif-kr/400/bed610b217d500f5975cfc9fe6157570.woff2 +0 -0
  975. package/src/styles/fonts/noto-serif-kr/400/bf8901f8f11d4f433ea17dabc9370ea6.woff2 +0 -0
  976. package/src/styles/fonts/noto-serif-kr/400/c4143bb9f2fe77b6ccf20088a8904650.woff2 +0 -0
  977. package/src/styles/fonts/noto-serif-kr/400/c7ff3f6bbdcd5f604b7343602ab904df.woff2 +0 -0
  978. package/src/styles/fonts/noto-serif-kr/400/c945c62368357d05a53206620460fb30.woff2 +0 -0
  979. package/src/styles/fonts/noto-serif-kr/400/ce022e18a1377ac509443c3c3790b431.woff2 +0 -0
  980. package/src/styles/fonts/noto-serif-kr/400/cf9cffe56636322f62b40d61130fbc5e.woff2 +0 -0
  981. package/src/styles/fonts/noto-serif-kr/400/d20d8944bc0b85f5b2aae4b24f343516.woff2 +0 -0
  982. package/src/styles/fonts/noto-serif-kr/400/d36644d6502527e1fff205d0c7eca434.woff2 +0 -0
  983. package/src/styles/fonts/noto-serif-kr/400/d40ab99c7a38026f411c8f112f742b48.woff2 +0 -0
  984. package/src/styles/fonts/noto-serif-kr/400/dc6e234ded795e91f76d6647f628fbf0.woff2 +0 -0
  985. package/src/styles/fonts/noto-serif-kr/400/dd0cfdfdac0866e66d587e2b5a9e9961.woff2 +0 -0
  986. package/src/styles/fonts/noto-serif-kr/400/de304c8a02e45ded4f8dcc479d167198.woff2 +0 -0
  987. package/src/styles/fonts/noto-serif-kr/400/e8c364c16daa04835bf32d293d2598db.woff2 +0 -0
  988. package/src/styles/fonts/noto-serif-kr/400/ec86e23683052da5cfdc3b77641bd15a.woff2 +0 -0
  989. package/src/styles/fonts/noto-serif-kr/400/eda1b0cb6d1719dd9bedcf3216a9e8de.woff2 +0 -0
  990. package/src/styles/fonts/noto-serif-kr/400/ee6fce20b420a480714607c66d7f97e5.woff2 +0 -0
  991. package/src/styles/fonts/noto-serif-kr/400/eee3836d6ac17ebb2c450bbcbc9db121.woff2 +0 -0
  992. package/src/styles/fonts/noto-serif-kr/400/f5738255e92d8dd34a46d1bcdf4c4074.woff2 +0 -0
  993. package/src/styles/fonts/noto-serif-kr/400/fa6e58ce4b52695e7ae19bbea6336ec8.woff2 +0 -0
  994. package/src/styles/fonts/noto-serif-kr/400/fd2069e6e8588c70b4f11364093b81f2.woff2 +0 -0
  995. package/src/styles/fonts/noto-serif-kr/700/04b8bde59cff68eeee74fb1914eb09c7.woff2 +0 -0
  996. package/src/styles/fonts/noto-serif-kr/700/05ac821472e235943ed1435e4bb8ecad.woff2 +0 -0
  997. package/src/styles/fonts/noto-serif-kr/700/074c1f8483d5a4d8c45c8c5f3e4cbb32.woff2 +0 -0
  998. package/src/styles/fonts/noto-serif-kr/700/1380210a722ac9aeef54005ad7b015c9.woff2 +0 -0
  999. package/src/styles/fonts/noto-serif-kr/700/17c7f5d0a45e92ede0e5dec3a2c77efa.woff2 +0 -0
  1000. package/src/styles/fonts/noto-serif-kr/700/1be602ad456b0d75902d352116cb35fd.woff2 +0 -0
  1001. package/src/styles/fonts/noto-serif-kr/700/2612c60f9dc5459ac42763591240a1d6.woff2 +0 -0
  1002. package/src/styles/fonts/noto-serif-kr/700/2ab8cf1f23a5ac7939a7876054e711a7.woff2 +0 -0
  1003. package/src/styles/fonts/noto-serif-kr/700/34e6750e00c3a911ef87dc66b336594d.woff2 +0 -0
  1004. package/src/styles/fonts/noto-serif-kr/700/36f3df4730cfca4fc77fe52b52e6a126.woff2 +0 -0
  1005. package/src/styles/fonts/noto-serif-kr/700/37887deb7a9c466cf2af6ee7ff372ea6.woff2 +0 -0
  1006. package/src/styles/fonts/noto-serif-kr/700/3aba89c4d4281553078de4622b498cbb.woff2 +0 -0
  1007. package/src/styles/fonts/noto-serif-kr/700/3d88558097559d775231194d43745ba7.woff2 +0 -0
  1008. package/src/styles/fonts/noto-serif-kr/700/3dc3e8c35524cad2d1236f3393104ccf.woff2 +0 -0
  1009. package/src/styles/fonts/noto-serif-kr/700/45140742dfa8686b58db2899ce89f89a.woff2 +0 -0
  1010. package/src/styles/fonts/noto-serif-kr/700/469d2754e315e77270c12fa0ab28026c.woff2 +0 -0
  1011. package/src/styles/fonts/noto-serif-kr/700/4c0760284569b87d8f2290c324953973.woff2 +0 -0
  1012. package/src/styles/fonts/noto-serif-kr/700/4cba92c942694bdc479bc54101bb1aa4.woff2 +0 -0
  1013. package/src/styles/fonts/noto-serif-kr/700/4e7d263c30bb48604069a3b4404d4eeb.woff2 +0 -0
  1014. package/src/styles/fonts/noto-serif-kr/700/5279c7e465d9871edf51fd02e691eee7.woff2 +0 -0
  1015. package/src/styles/fonts/noto-serif-kr/700/54bfdb6f21f9d6191e5100580239e14f.woff2 +0 -0
  1016. package/src/styles/fonts/noto-serif-kr/700/56be5e32fd01668fe5ba814d94905839.woff2 +0 -0
  1017. package/src/styles/fonts/noto-serif-kr/700/615b38e0b5bb3ea68426f44f47706e6f.woff2 +0 -0
  1018. package/src/styles/fonts/noto-serif-kr/700/65e9c4585d71bf48a5c62f367010da16.woff2 +0 -0
  1019. package/src/styles/fonts/noto-serif-kr/700/6b75213eb0be40ce84241eb2bb438a2e.woff2 +0 -0
  1020. package/src/styles/fonts/noto-serif-kr/700/7520ca6ca8c60eb1e62d50e71c8d30f1.woff2 +0 -0
  1021. package/src/styles/fonts/noto-serif-kr/700/759a647b77791b1e98f99bc0ab5317a7.woff2 +0 -0
  1022. package/src/styles/fonts/noto-serif-kr/700/76e51630143b95b6322ef93ad330da7a.woff2 +0 -0
  1023. package/src/styles/fonts/noto-serif-kr/700/79aa7c8c842c4a27cf57c0a3a1ffca5a.woff2 +0 -0
  1024. package/src/styles/fonts/noto-serif-kr/700/7cc72fd2c9105560422b6a67c6162945.woff2 +0 -0
  1025. package/src/styles/fonts/noto-serif-kr/700/7d0ea0690e432462f4d05a23d720ec19.woff2 +0 -0
  1026. package/src/styles/fonts/noto-serif-kr/700/7dffa5c1bec57e0903fd62357401ff1a.woff2 +0 -0
  1027. package/src/styles/fonts/noto-serif-kr/700/82f6ccc063960eed1cdfd1d61ada8862.woff2 +0 -0
  1028. package/src/styles/fonts/noto-serif-kr/700/845b4b67564d62cf5cad242f7ac08ea5.woff2 +0 -0
  1029. package/src/styles/fonts/noto-serif-kr/700/84c8e7bc0931008ed91f44ed12dfea94.woff2 +0 -0
  1030. package/src/styles/fonts/noto-serif-kr/700/887a11290ba78b1e66c6d2f67043005e.woff2 +0 -0
  1031. package/src/styles/fonts/noto-serif-kr/700/88db1d042074fb6e66821ffc10941930.woff2 +0 -0
  1032. package/src/styles/fonts/noto-serif-kr/700/8dc18c0cebe6aa4bf4c45dbb831048ab.woff2 +0 -0
  1033. package/src/styles/fonts/noto-serif-kr/700/919a879bd2d580d8491a31a449390689.woff2 +0 -0
  1034. package/src/styles/fonts/noto-serif-kr/700/91da6cb174bebfb96976e2f1316be2fe.woff2 +0 -0
  1035. package/src/styles/fonts/noto-serif-kr/700/934dfdbed2bb2c4b6129199d699a34fa.woff2 +0 -0
  1036. package/src/styles/fonts/noto-serif-kr/700/97d7a17234f2b5030ae9697ae00aded2.woff2 +0 -0
  1037. package/src/styles/fonts/noto-serif-kr/700/995c4fda62d25c3b79dd5987737df6ae.woff2 +0 -0
  1038. package/src/styles/fonts/noto-serif-kr/700/9d0afa53dc2f92ba42024f55f11f6779.woff2 +0 -0
  1039. package/src/styles/fonts/noto-serif-kr/700/9e13a47242926f1cd7d68c08d9ef8889.woff2 +0 -0
  1040. package/src/styles/fonts/noto-serif-kr/700/a379ada89abd750c587ded29f77e731c.woff2 +0 -0
  1041. package/src/styles/fonts/noto-serif-kr/700/a48be56ce5d3a99dc8f8331398004412.woff2 +0 -0
  1042. package/src/styles/fonts/noto-serif-kr/700/a806759e72987951d6d08b7cbdf36a1b.woff2 +0 -0
  1043. package/src/styles/fonts/noto-serif-kr/700/a88481ec8bc7be11cb66e46781a79bb9.woff2 +0 -0
  1044. package/src/styles/fonts/noto-serif-kr/700/a9a016d4a93409f65278327e8a8bb38d.woff2 +0 -0
  1045. package/src/styles/fonts/noto-serif-kr/700/ab92d41062a7644faa45f50bf384454a.woff2 +0 -0
  1046. package/src/styles/fonts/noto-serif-kr/700/b326a8a9c33b554db570da94f60bc380.woff2 +0 -0
  1047. package/src/styles/fonts/noto-serif-kr/700/b6117ff2993b11bb1fdc7ea3588a010c.woff2 +0 -0
  1048. package/src/styles/fonts/noto-serif-kr/700/b61982951bd51b724143c30dfaaa9fe9.woff2 +0 -0
  1049. package/src/styles/fonts/noto-serif-kr/700/c0098958e20db68cab90097b5e62516f.woff2 +0 -0
  1050. package/src/styles/fonts/noto-serif-kr/700/c4bfaa5e50798246e3770718b7a7c84a.woff2 +0 -0
  1051. package/src/styles/fonts/noto-serif-kr/700/c84598999133455503042e06f4ab79cb.woff2 +0 -0
  1052. package/src/styles/fonts/noto-serif-kr/700/ca9a533988d7019597a60d4e17127e0c.woff2 +0 -0
  1053. package/src/styles/fonts/noto-serif-kr/700/cf2b28f90f47276f7e2688a65e88a101.woff2 +0 -0
  1054. package/src/styles/fonts/noto-serif-kr/700/d689b1861d7e4377dd72ad3013482612.woff2 +0 -0
  1055. package/src/styles/fonts/noto-serif-kr/700/d9047070d72a816b3dba9d40c2d85e69.woff2 +0 -0
  1056. package/src/styles/fonts/noto-serif-kr/700/da04549f3f4ed28076b01b8cd710d313.woff2 +0 -0
  1057. package/src/styles/fonts/noto-serif-kr/700/da7af303f8c645f9a9dbae0e6e32dd35.woff2 +0 -0
  1058. package/src/styles/fonts/noto-serif-kr/700/df9568257eb29b156449fdd4bec5ec76.woff2 +0 -0
  1059. package/src/styles/fonts/noto-serif-kr/700/e067cd0ed76c90cd0a93c9339253f20b.woff2 +0 -0
  1060. package/src/styles/fonts/noto-serif-kr/700/e08b07772e7bed3cec2832d43f7fd339.woff2 +0 -0
  1061. package/src/styles/fonts/noto-serif-kr/700/e12150d5a39b30be8f567968c7a527b0.woff2 +0 -0
  1062. package/src/styles/fonts/noto-serif-kr/700/e53fcb2381eee345db4f6f973dd95a3e.woff2 +0 -0
  1063. package/src/styles/fonts/noto-serif-kr/700/e5bd313ef81f687d398aacb11cec3069.woff2 +0 -0
  1064. package/src/styles/fonts/noto-serif-kr/700/eb5afb3d952b8593782caec6026514b6.woff2 +0 -0
  1065. package/src/styles/fonts/noto-serif-kr/700/edd6a4f608d04fc0351d7688cfc321e4.woff2 +0 -0
  1066. package/src/styles/fonts/noto-serif-kr/700/f9695c6c4df2bf6bc03045ff79d4f01f.woff2 +0 -0
  1067. package/src/styles/fonts/noto-serif-kr/700/fada6eaa68ff8816afe43d2a36c5423e.woff2 +0 -0
  1068. package/src/styles/fonts/noto-serif-kr/700/fbcc4bf5367218951172bdee6f77d7a6.woff2 +0 -0
  1069. package/src/styles/fonts/noto-serif-kr/noto-serif-kr.css +2601 -0
  1070. package/src/styles/site-media.css +823 -0
  1071. package/src/styles/tokens.css +292 -21
  1072. package/src/styles/ui.css +4217 -1869
  1073. package/src/types/bindings.ts +3 -1
  1074. package/src/types/config.ts +139 -9
  1075. package/src/types/constants.ts +46 -11
  1076. package/src/types/entities.ts +24 -8
  1077. package/src/types/operations.ts +80 -1
  1078. package/src/types/props.ts +12 -3
  1079. package/src/types/raw-assets.d.ts +39 -0
  1080. package/src/types/views.ts +28 -7
  1081. package/src/ui/__tests__/color-themes.test.ts +7 -40
  1082. package/src/ui/__tests__/font-themes.test.ts +30 -11
  1083. package/src/ui/color-themes.ts +311 -270
  1084. package/src/ui/compose/ComposeDialog.tsx +712 -394
  1085. package/src/ui/compose/ComposePrompt.tsx +15 -10
  1086. package/src/ui/dash/ActionButtons.tsx +27 -18
  1087. package/src/ui/dash/DangerZone.tsx +15 -10
  1088. package/src/ui/dash/FormatBadge.tsx +21 -8
  1089. package/src/ui/dash/StatusBadge.tsx +33 -22
  1090. package/src/ui/dash/appearance/AdvancedContent.tsx +44 -30
  1091. package/src/ui/dash/appearance/CodeInjectionContent.tsx +164 -0
  1092. package/src/ui/dash/appearance/ColorThemeContent.tsx +127 -160
  1093. package/src/ui/dash/appearance/FontThemeContent.tsx +20 -15
  1094. package/src/ui/dash/appearance/NavigationContent.tsx +368 -225
  1095. package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +54 -0
  1096. package/src/ui/dash/settings/AccountContent.tsx +34 -23
  1097. package/src/ui/dash/settings/AccountMenuContent.tsx +226 -137
  1098. package/src/ui/dash/settings/ApiTokensContent.tsx +122 -79
  1099. package/src/ui/dash/settings/AvatarContent.tsx +73 -45
  1100. package/src/ui/dash/settings/DeleteAccountContent.tsx +106 -66
  1101. package/src/ui/dash/settings/GeneralContent.tsx +274 -157
  1102. package/src/ui/dash/settings/GitHubSyncContent.tsx +558 -0
  1103. package/src/ui/dash/settings/SessionsContent.tsx +79 -38
  1104. package/src/ui/dash/settings/SettingsRootContent.tsx +209 -109
  1105. package/src/ui/dash/settings/__tests__/AccountMenuContent.test.tsx +67 -0
  1106. package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +75 -0
  1107. package/src/ui/feed/CuratedThreadPreview.tsx +24 -14
  1108. package/src/ui/feed/LinkCard.tsx +116 -84
  1109. package/src/ui/feed/LinkPreview.tsx +75 -0
  1110. package/src/ui/feed/NoteCard.tsx +60 -16
  1111. package/src/ui/feed/PostStatusBadges.tsx +15 -0
  1112. package/src/ui/feed/QuoteCard.tsx +10 -3
  1113. package/src/ui/feed/ThreadPreview.tsx +62 -36
  1114. package/src/ui/feed/TimelineFeed.tsx +2 -1
  1115. package/src/ui/feed/__tests__/thread-preview.test.ts +220 -11
  1116. package/src/ui/feed/__tests__/timeline-cards.test.ts +186 -5
  1117. package/src/ui/feed/thread-preview-state.ts +23 -10
  1118. package/src/ui/font-themes.ts +57 -97
  1119. package/src/ui/layouts/BaseLayout.tsx +221 -136
  1120. package/src/ui/layouts/SiteLayout.tsx +431 -143
  1121. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +76 -6
  1122. package/src/ui/layouts/__tests__/SiteLayout.test.tsx +76 -0
  1123. package/src/ui/pages/ArchivePage.tsx +320 -207
  1124. package/src/ui/pages/BrandPage.tsx +499 -341
  1125. package/src/ui/pages/CollectionEditorPage.tsx +50 -30
  1126. package/src/ui/pages/CollectionPage.tsx +201 -61
  1127. package/src/ui/pages/CollectionsPage.tsx +27 -18
  1128. package/src/ui/pages/ComposePage.tsx +15 -10
  1129. package/src/ui/pages/FeaturedPage.tsx +16 -11
  1130. package/src/ui/pages/HomePage.tsx +15 -10
  1131. package/src/ui/pages/PostPage.tsx +5 -1
  1132. package/src/ui/pages/SearchPage.tsx +93 -43
  1133. package/src/ui/pages/ThemeSamplePage.tsx +758 -520
  1134. package/src/ui/pages/__tests__/ArchivePage.test.tsx +72 -0
  1135. package/src/ui/shared/CollectionDirectory.tsx +232 -37
  1136. package/src/ui/shared/CollectionsManager.tsx +155 -75
  1137. package/src/ui/shared/DecorativeQuoteMark.tsx +12 -9
  1138. package/src/ui/shared/MediaGallery.tsx +350 -256
  1139. package/src/ui/shared/Pagination.tsx +36 -25
  1140. package/src/ui/shared/PostFooter.tsx +139 -96
  1141. package/src/ui/shared/__tests__/media-gallery.test.ts +27 -0
  1142. package/src/ui/shared/__tests__/navigation-labels.test.ts +79 -28
  1143. package/src/ui/shared/__tests__/post-footer.test.ts +42 -17
  1144. package/src/ui/shared/collection-management-labels.ts +109 -33
  1145. package/src/ui/shared/navigation-labels.ts +78 -8
  1146. package/bin/lib/site-localize-media.js +0 -427
  1147. package/dist/client/_assets/client-auth.js +0 -3251
  1148. package/dist/client/_assets/client.css +0 -2
  1149. package/dist/client/_assets/client.js +0 -380
  1150. package/src/__tests__/site-localize-media.test.ts +0 -150
  1151. package/src/client/components/jant-collection-sidebar.ts +0 -803
  1152. package/src/i18n/locales/en.ts +0 -1
  1153. package/src/i18n/locales/zh-Hans.po +0 -3183
  1154. package/src/i18n/locales/zh-Hans.ts +0 -1
  1155. package/src/i18n/locales/zh-Hant.po +0 -3183
  1156. package/src/i18n/locales/zh-Hant.ts +0 -1
  1157. package/src/routes/feed/rss.ts +0 -216
  1158. package/src/types/lingui-react-macro.d.ts +0 -34
  1159. /package/dist/client/_assets/chunks/{heic-to-XcUDQvtx.js → heic-to-DUUaO23q.js} +0 -0
  1160. /package/dist/client/_assets/chunks/{module-ChVQstFd.js → module-DcsAZQZ_.js} +0 -0
  1161. /package/dist/client/_assets/chunks/{native-CR5HLOyf.js → native-DpcrFAPh.js} +0 -0
  1162. /package/dist/client/_assets/{client-cjk.css → client-cjk-B7Z0snDu.css} +0 -0
  1163. /package/dist/client/_assets/{client-cjk-tc.css → client-cjk-tc-BesJYrb2.css} +0 -0
@@ -0,0 +1,1622 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "POT-Creation-Date: 2026-04-15 21:58+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: Custom CSS textarea placeholder
17
+ #: src/ui/dash/appearance/AdvancedContent.tsx
18
+ msgid "/* Your custom CSS here */"
19
+ msgstr "/* 在此填写您的自定义 CSS */"
20
+
21
+ #. @context: GitHub sync picker — entry at the bottom of the owner dropdown that starts a new install flow
22
+ #: src/routes/dash/settings.tsx
23
+ msgid "+ Install on another account"
24
+ msgstr "+ 在其他帐户上安装"
25
+
26
+ #. @context: Redirect type option
27
+ #: src/routes/dash/custom-urls.tsx
28
+ msgid "301 (Permanent)"
29
+ msgstr "301 (永久)"
30
+
31
+ #. @context: Redirect type option
32
+ #: src/routes/dash/custom-urls.tsx
33
+ msgid "302 (Temporary)"
34
+ msgstr "302 (临时)"
35
+
36
+ #. @context: Help text for site description field
37
+ #: src/ui/dash/settings/GeneralContent.tsx
38
+ msgid "A short intro shown on your home page."
39
+ msgstr "在您的主页上显示的简短介绍."
40
+
41
+ #. @context: Settings form field for site description
42
+ #: src/ui/dash/settings/GeneralContent.tsx
43
+ msgid "About this blog"
44
+ msgstr "关于本博客"
45
+
46
+ #. @context: Breadcrumb label
47
+ #. @context: GitHub sync picker — owner dropdown label
48
+ #. @context: Page title for the account settings menu
49
+ #. @context: Settings group label for account settings
50
+ #. @context: Settings item — account settings
51
+ #: src/routes/dash/settings.tsx
52
+ #: src/routes/dash/settings.tsx
53
+ #: src/ui/dash/settings/AccountMenuContent.tsx
54
+ #: src/ui/dash/settings/SettingsRootContent.tsx
55
+ #: src/ui/dash/settings/SettingsRootContent.tsx
56
+ msgid "Account"
57
+ msgstr "账户"
58
+
59
+ #. @context: Error shown when account deletion is blocked in demo mode
60
+ #: src/routes/dash/settings.tsx
61
+ msgid "Account deletion is off in demo mode. The shared demo resets separately."
62
+ msgstr "演示模式下已禁用账号删除。共享演示会单独重置。"
63
+
64
+ #. @context: Settings section heading for active sessions
65
+ #: src/ui/dash/settings/SessionsContent.tsx
66
+ msgid "Active Sessions"
67
+ msgstr "活动会话"
68
+
69
+ #. @context: Heading for list of active API tokens
70
+ #: src/ui/dash/settings/ApiTokensContent.tsx
71
+ msgid "Active Tokens"
72
+ msgstr "活动令牌"
73
+
74
+ #. @context: Description in link popover form
75
+ #: src/ui/dash/appearance/NavigationContent.tsx
76
+ msgid "Add a custom link to any URL"
77
+ msgstr "向任意 URL 添加自定义链接"
78
+
79
+ #. @context: Button for adding a collection to nav
80
+ #: src/ui/dash/appearance/NavigationContent.tsx
81
+ msgid "Add Collection"
82
+ msgstr "添加合集"
83
+
84
+ #. @context: Section heading for adding a collection to nav
85
+ #: src/ui/dash/appearance/NavigationContent.tsx
86
+ msgid "Add collection to navigation"
87
+ msgstr "向导航添加合集"
88
+
89
+ #. @context: Custom CSS settings description
90
+ #: src/ui/dash/appearance/AdvancedContent.tsx
91
+ msgid "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
92
+ msgstr "添加自定义 CSS 以覆盖任何样式. 使用数据属性如 [data-page], [data-post], [data-format] 来定位特定元素."
93
+
94
+ #. @context: Section heading for adding custom link to nav
95
+ #: src/ui/dash/appearance/NavigationContent.tsx
96
+ msgid "Add custom link to navigation"
97
+ msgstr "向导航添加自定义链接"
98
+
99
+ #. @context: Button and heading for adding custom link
100
+ #: src/ui/dash/appearance/NavigationContent.tsx
101
+ msgid "Add Link"
102
+ msgstr "添加链接"
103
+
104
+ #. @context: Settings group label for advanced settings
105
+ #: src/ui/dash/settings/SettingsRootContent.tsx
106
+ msgid "Advanced"
107
+ msgstr "高级"
108
+
109
+ #. @context: Description after API reference link
110
+ #: src/ui/dash/settings/ApiTokensContent.tsx
111
+ msgid "all available endpoints and request formats."
112
+ msgstr "所有可用的端点和请求格式。"
113
+
114
+ #. @context: Message when every collection is already added to nav
115
+ #: src/ui/dash/appearance/NavigationContent.tsx
116
+ msgid "All collections are already in your navigation."
117
+ msgstr "所有合集已在您的导航中。"
118
+
119
+ #. @context: Checkbox for allowing search engine indexing
120
+ #: src/ui/dash/settings/GeneralContent.tsx
121
+ msgid "Allow search engines to index my site"
122
+ msgstr "允许搜索引擎索引我的网站"
123
+
124
+ #. @context: Theme mode option description
125
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
126
+ msgid "Always show the dark version of the theme."
127
+ msgstr "始终显示暗色主题."
128
+
129
+ #. @context: Theme mode option description
130
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
131
+ msgid "Always show the light version of the theme."
132
+ msgstr "始终显示浅色主题。"
133
+
134
+ #. @context: Code Injection security warning body
135
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
136
+ msgid "Anything you paste here has full access to your visitors' browsers. Only use code from sources you trust."
137
+ msgstr "你在此处粘贴的任何内容都将完全访问访客的浏览器。仅使用来自你信任的来源的代码。"
138
+
139
+ #. @context: Link to API documentation
140
+ #: src/ui/dash/settings/ApiTokensContent.tsx
141
+ msgid "API reference"
142
+ msgstr "API 参考"
143
+
144
+ #. @context: Breadcrumb label
145
+ #. @context: Settings item — API token settings
146
+ #. @context: Settings section heading
147
+ #: src/routes/dash/settings.tsx
148
+ #: src/ui/dash/settings/ApiTokensContent.tsx
149
+ #: src/ui/dash/settings/SettingsRootContent.tsx
150
+ msgid "API Tokens"
151
+ msgstr "API 令牌"
152
+
153
+ #. @context: Settings group label for design settings
154
+ #: src/ui/dash/settings/SettingsRootContent.tsx
155
+ msgid "Appearance"
156
+ msgstr "外观"
157
+
158
+ #. @context: Appearance settings description
159
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
160
+ msgid "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
161
+ msgstr "应用于整个站点,包括管理页面。选择一个调色板,然后选择它是随系统变化还是保持固定。"
162
+
163
+ #. @context: Custom URL target type badge for an archive view
164
+ #. @context: Custom URL type option for filtered archive view
165
+ #: src/routes/dash/custom-urls.tsx
166
+ #: src/routes/dash/custom-urls.tsx
167
+ msgid "Archive"
168
+ msgstr "归档"
169
+
170
+ #. @context: Help text for archive custom URL query params
171
+ #: src/routes/dash/custom-urls.tsx
172
+ msgid "Archive filter parameters (e.g. format=note&view=list)"
173
+ msgstr "归档 筛选参数 (例如 format=笔记&view=list)"
174
+
175
+ #. @context: Theme mode option label
176
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
177
+ msgid "Auto"
178
+ msgstr "自动"
179
+
180
+ #. @context: Description after theming guide link on Custom CSS page
181
+ #: src/ui/dash/appearance/AdvancedContent.tsx
182
+ msgid "available CSS variables, data attributes, and examples."
183
+ msgstr "可用的 CSS 变量, 数据属性, 和 示例."
184
+
185
+ #. @context: Breadcrumb label
186
+ #. @context: Settings item — avatar settings
187
+ #: src/routes/dash/settings.tsx
188
+ #: src/ui/dash/settings/SettingsRootContent.tsx
189
+ msgid "Avatar"
190
+ msgstr "头像"
191
+
192
+ #. @context: Toast after saving avatar display preference
193
+ #. @context: Toast after saving avatar display preference
194
+ #: src/routes/dash/settings.tsx
195
+ #: src/routes/dash/settings.tsx
196
+ msgid "Avatar display updated."
197
+ msgstr "头像显示已更新."
198
+
199
+ #. @context: Settings item description for GitHub sync
200
+ #: src/ui/dash/settings/SettingsRootContent.tsx
201
+ msgid "Back up and sync content with a GitHub repository"
202
+ msgstr "将内容备份并与 GitHub 仓库同步"
203
+
204
+ #. @context: Link to backup and restore documentation from account settings
205
+ #: src/ui/dash/settings/AccountMenuContent.tsx
206
+ msgid "Backup & Restore Guide"
207
+ msgstr "备份与恢复指南"
208
+
209
+ #. @context: Settings item description for API tokens
210
+ #: src/ui/dash/settings/SettingsRootContent.tsx
211
+ msgid "Bearer tokens for scripts and automation"
212
+ msgstr "用于脚本和自动化的 Bearer 令牌"
213
+
214
+ #. @context: Step 1 description for site export before account deletion
215
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
216
+ msgid "Before deleting, download a site export. You won't be able to recover this account after deletion."
217
+ msgstr "在删除之前,请下载站点导出。删除后将无法恢复此账户。"
218
+
219
+ #. @context: Settings section heading for avatar
220
+ #: src/ui/dash/settings/AvatarContent.tsx
221
+ msgid "Blog Avatar"
222
+ msgstr "博客头像"
223
+
224
+ #. @context: Section heading for built-in nav items
225
+ #: src/ui/dash/appearance/NavigationContent.tsx
226
+ msgid "Built-in links"
227
+ msgstr "内置链接"
228
+
229
+ #. @context: Button label to dismiss a dialog or action
230
+ #. @context: Button label to dismiss a dialog or action
231
+ #. @context: Button label to dismiss a dialog or action
232
+ #. @context: Button label to dismiss a dialog or action
233
+ #. @context: Button label to dismiss a dialog or action
234
+ #. @context: Button label to dismiss a dialog or action
235
+ #. @context: Button label to dismiss a dialog or action
236
+ #. @context: Button label to dismiss a dialog or action
237
+ #. @context: Button to cancel form
238
+ #. @context: Button to cancel settings changes
239
+ #. @context: Button to cancel unsaved changes and revert to original values
240
+ #. @context: GitHub sync picker — cancel action
241
+ #: src/routes/dash/custom-urls.tsx
242
+ #: src/routes/dash/custom-urls.tsx
243
+ #: src/routes/dash/settings.tsx
244
+ #: src/ui/dash/ActionButtons.tsx
245
+ #: src/ui/dash/appearance/NavigationContent.tsx
246
+ #: src/ui/dash/DangerZone.tsx
247
+ #: src/ui/dash/settings/ApiTokensContent.tsx
248
+ #: src/ui/dash/settings/AvatarContent.tsx
249
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
250
+ #: src/ui/dash/settings/GeneralContent.tsx
251
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
252
+ #: src/ui/dash/settings/SessionsContent.tsx
253
+ msgid "Cancel"
254
+ msgstr "取消"
255
+
256
+ #. @context: Button to change password
257
+ #. @context: Settings section heading
258
+ #: src/ui/dash/settings/AccountContent.tsx
259
+ #: src/ui/dash/settings/AccountContent.tsx
260
+ msgid "Change Password"
261
+ msgstr "更改密码"
262
+
263
+ #. @context: Warning shown when changing the canonical RSS feed selection
264
+ #: src/ui/dash/settings/GeneralContent.tsx
265
+ msgid "Changing this updates what subscribers get from /feed."
266
+ msgstr "更改此项会更新订阅者从 /feed 获取的内容。"
267
+
268
+ #. @context: GitHub sync picker — status text while classifying the picked repo
269
+ #: src/routes/dash/settings.tsx
270
+ msgid "Checking repository…"
271
+ msgstr "正在检查仓库…"
272
+
273
+ #. @context: Font theme settings description
274
+ #: src/ui/dash/appearance/FontThemeContent.tsx
275
+ msgid "Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm."
276
+ msgstr "为您的网站选择一种排版方向。每个主题都会同时改变字体搭配和阅读节奏。"
277
+
278
+ #. @context: GitHub sync picker — page subtitle
279
+ #: src/routes/dash/settings.tsx
280
+ msgid "Choose the GitHub account and repository to sync with this site."
281
+ msgstr "选择要与此站点同步的 GitHub 账户和仓库。"
282
+
283
+ #. @context: Settings form field for CJK serif font selection
284
+ #: src/ui/dash/settings/GeneralContent.tsx
285
+ msgid "CJK Font"
286
+ msgstr "CJK 字体"
287
+
288
+ #. @context: Breadcrumb label
289
+ #. @context: Settings item — code injection settings
290
+ #: src/routes/dash/settings.tsx
291
+ #: src/ui/dash/settings/SettingsRootContent.tsx
292
+ msgid "Code Injection"
293
+ msgstr "代码注入"
294
+
295
+ #. @context: Toast after saving Code Injection settings
296
+ #: src/routes/dash/settings.tsx
297
+ msgid "Code injection updated."
298
+ msgstr "代码注入已更新。"
299
+
300
+ #. @context: Nav item type badge for collection items
301
+ #: src/ui/dash/appearance/NavigationContent.tsx
302
+ msgid "collection"
303
+ msgstr "合集"
304
+
305
+ #. @context: Custom URL target type badge for a collection
306
+ #. @context: Custom URL type option
307
+ #: src/routes/dash/custom-urls.tsx
308
+ #: src/routes/dash/custom-urls.tsx
309
+ msgid "Collection"
310
+ msgstr "合集"
311
+
312
+ #. @context: Appearance settings heading
313
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
314
+ msgid "Color theme"
315
+ msgstr "配色主题"
316
+
317
+ #. @context: Breadcrumb label
318
+ #. @context: Settings item — color theme settings
319
+ #: src/routes/dash/settings.tsx
320
+ #: src/ui/dash/settings/SettingsRootContent.tsx
321
+ msgid "Color Theme"
322
+ msgstr "颜色主题"
323
+
324
+ #. @context: Step 2 heading — user must type confirmation phrase
325
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
326
+ msgid "Confirm account deletion"
327
+ msgstr "确认删除账户"
328
+
329
+ #. @context: Password form field
330
+ #: src/ui/dash/settings/AccountContent.tsx
331
+ msgid "Confirm New Password"
332
+ msgstr "确认新密码"
333
+
334
+ #. @context: Button label to connect GitHub repository on GitHub Sync settings
335
+ #. @context: GitHub sync picker — primary action button
336
+ #: src/routes/dash/settings.tsx
337
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
338
+ msgid "Connect"
339
+ msgstr "连接"
340
+
341
+ #. @context: Intro text on GitHub Sync settings page when not connected
342
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
343
+ msgid "Connect a GitHub repository to automatically back up your posts as Markdown files. Edits on GitHub sync back to your site."
344
+ msgstr "将 GitHub 仓库连接以自动将您的文章备份为 Markdown 文件。您在 GitHub 上的编辑会同步回您的网站。"
345
+
346
+ #. @context: Heading for the GitHub App connect option on GitHub Sync setup
347
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
348
+ msgid "Connect with GitHub App"
349
+ msgstr "使用 GitHub 应用连接"
350
+
351
+ #. @context: Status label when GitHub Sync is active using the GitHub App
352
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
353
+ msgid "Connected via GitHub App"
354
+ msgstr "已通过 GitHub App 连接"
355
+
356
+ #. @context: Status label when GitHub Sync is active using a PAT
357
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
358
+ msgid "Connected via Personal Access Token"
359
+ msgstr "通过个人访问令牌连接"
360
+
361
+ #. @context: GitHub sync picker — explanatory body for foreign-repo confirmation. Placeholder {repo} is the owner/repo slug.
362
+ #: src/routes/dash/settings.tsx
363
+ msgid "Connecting will sync your site onto {repo}'s default branch on top of its existing history. Existing files outside Jant's managed paths are kept. This can't be undone."
364
+ msgstr "连接后会将你的网站同步到 {repo} 的默认分支,并追加到其现有历史之上。Jant 管理路径之外的现有文件会被保留。此操作无法撤销。"
365
+
366
+ #. @context: GitHub sync picker — primary action button while a request is in flight
367
+ #: src/routes/dash/settings.tsx
368
+ msgid "Connecting…"
369
+ msgstr "连接中…"
370
+
371
+ #. @context: Help text under the site language select
372
+ #: src/ui/dash/settings/GeneralContent.tsx
373
+ msgid "Controls the language of the dashboard and settings. Public pages stay in English."
374
+ msgstr "控制仪表板和设置所用的语言。公共页面保持英文。"
375
+
376
+ #. @context: Feedback after copying API token
377
+ #: src/ui/dash/settings/ApiTokensContent.tsx
378
+ msgid "Copied"
379
+ msgstr "已复制"
380
+
381
+ #. @context: Button to copy a URL to the clipboard
382
+ #: src/ui/dash/settings/GeneralContent.tsx
383
+ msgid "Copy"
384
+ msgstr "复制"
385
+
386
+ #. @context: Button to copy API token to clipboard
387
+ #. @context: Button to copy API token to clipboard
388
+ #: src/ui/dash/settings/ApiTokensContent.tsx
389
+ #: src/ui/dash/settings/ApiTokensContent.tsx
390
+ msgid "Copy Token"
391
+ msgstr "复制令牌"
392
+
393
+ #. @context: Warning to copy newly created API token
394
+ #: src/ui/dash/settings/ApiTokensContent.tsx
395
+ msgid "Copy your token now — it won't be shown again."
396
+ msgstr "现在复制您的令牌 — 它不会再次显示。"
397
+
398
+ #. @context: Error toast when copying text to the clipboard fails
399
+ #: src/ui/dash/settings/GeneralContent.tsx
400
+ msgid "Could not copy. Try again."
401
+ msgstr "无法复制。请再试一次。"
402
+
403
+ #. @context: GitHub sync picker — generic failure message for Connect
404
+ #: src/routes/dash/settings.tsx
405
+ msgid "Couldn't connect. Check the error and try again."
406
+ msgstr "无法连接。检查错误并重试。"
407
+
408
+ #. @context: Error toast when nav delete fails
409
+ #: src/ui/dash/appearance/NavigationContent.tsx
410
+ msgid "Couldn't delete. Try again in a moment."
411
+ msgstr "删除失败。请稍后再试。"
412
+
413
+ #. @context: Error toast when nav save fails
414
+ #: src/ui/dash/appearance/NavigationContent.tsx
415
+ msgid "Couldn't save. Try again in a moment."
416
+ msgstr "保存失败。请稍后再试。"
417
+
418
+ #. @context: GitHub sync picker — entry that opens github.com/new in a new tab
419
+ #: src/routes/dash/settings.tsx
420
+ msgid "Create a new repository on GitHub"
421
+ msgstr "在 GitHub 上创建新仓库"
422
+
423
+ #. @context: Label for curl example
424
+ #: src/ui/dash/settings/ApiTokensContent.tsx
425
+ msgid "Create a post with curl:"
426
+ msgstr "使用 curl 创建帖子:"
427
+
428
+ #. @context: Button to save new custom URL
429
+ #: src/routes/dash/custom-urls.tsx
430
+ msgid "Create Custom URL"
431
+ msgstr "创建自定义 URL"
432
+
433
+ #. @context: Link text pointing to GitHub's fine-grained PAT creation page
434
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
435
+ msgid "Create one on GitHub"
436
+ msgstr "在 GitHub 上创建一个"
437
+
438
+ #. @context: Token creation date
439
+ #: src/ui/dash/settings/ApiTokensContent.tsx
440
+ msgid "Created {date}"
441
+ msgstr "创建于 {date}"
442
+
443
+ #. @context: Badge indicating the current active session
444
+ #: src/ui/dash/settings/SessionsContent.tsx
445
+ msgid "Current"
446
+ msgstr "当前"
447
+
448
+ #. @context: Password form field
449
+ #: src/ui/dash/settings/AccountContent.tsx
450
+ msgid "Current Password"
451
+ msgstr "当前密码"
452
+
453
+ #. @context: Error toast when current password verification fails
454
+ #: src/routes/dash/settings.tsx
455
+ msgid "Current password doesn't match. Try again."
456
+ msgstr "当前密码不正确。请重试。"
457
+
458
+ #. @context: Appearance settings heading for custom CSS
459
+ #. @context: Breadcrumb label
460
+ #. @context: Link to Custom CSS settings from color theme page
461
+ #. @context: Settings item — custom CSS settings
462
+ #: src/routes/dash/settings.tsx
463
+ #: src/ui/dash/appearance/AdvancedContent.tsx
464
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
465
+ #: src/ui/dash/settings/SettingsRootContent.tsx
466
+ msgid "Custom CSS"
467
+ msgstr "自定义 CSS"
468
+
469
+ #. @context: Toast after saving custom CSS
470
+ #: src/routes/dash/settings.tsx
471
+ msgid "Custom CSS updated."
472
+ msgstr "自定义 CSS 已更新."
473
+
474
+ #. @context: Settings item — custom URL settings
475
+ #. @context: Settings section heading
476
+ #: src/routes/dash/custom-urls.tsx
477
+ #: src/ui/dash/settings/SettingsRootContent.tsx
478
+ msgid "Custom URLs"
479
+ msgstr "自定义 URL"
480
+
481
+ #. @context: Section heading for dangerous/destructive actions
482
+ #. @context: Settings group label for destructive account actions
483
+ #. @context: Settings group label for destructive account actions
484
+ #: src/ui/dash/DangerZone.tsx
485
+ #: src/ui/dash/settings/AccountMenuContent.tsx
486
+ #: src/ui/dash/settings/AccountMenuContent.tsx
487
+ msgid "Danger Zone"
488
+ msgstr "危险操作"
489
+
490
+ #. @context: Theme mode option label
491
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
492
+ msgid "Dark"
493
+ msgstr "深色"
494
+
495
+ #. @context: Settings group label for data export/import
496
+ #: src/ui/dash/settings/AccountMenuContent.tsx
497
+ msgid "Data"
498
+ msgstr "数据"
499
+
500
+ #. @context: Button to delete custom URL
501
+ #. @context: Button to delete item
502
+ #. @context: Delete nav item
503
+ #: src/routes/dash/custom-urls.tsx
504
+ #: src/ui/dash/ActionButtons.tsx
505
+ #: src/ui/dash/appearance/NavigationContent.tsx
506
+ msgid "Delete"
507
+ msgstr "删除"
508
+
509
+ #. @context: Breadcrumb label
510
+ #. @context: Page title for account deletion
511
+ #. @context: Settings item — delete account and all data
512
+ #: src/routes/dash/settings.tsx
513
+ #: src/ui/dash/settings/AccountMenuContent.tsx
514
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
515
+ msgid "Delete Account"
516
+ msgstr "删除账号"
517
+
518
+ #. @context: Final destructive button to delete account and all data
519
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
520
+ msgid "Delete Account Permanently"
521
+ msgstr "永久删除账号"
522
+
523
+ #. @context: Settings item — open the hosted site danger zone in the control plane
524
+ #: src/ui/dash/settings/AccountMenuContent.tsx
525
+ msgid "Delete Hosted Site"
526
+ msgstr "删除托管站点"
527
+
528
+ #. @context: Final browser confirm dialog before account deletion
529
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
530
+ msgid "Delete this blog permanently? This cannot be undone."
531
+ msgstr "永久删除此博客?此操作不可撤销。"
532
+
533
+ #. @context: Confirm dialog for deleting a custom URL
534
+ #: src/routes/dash/custom-urls.tsx
535
+ msgid "Delete this custom URL? Visitors using it won't be redirected anymore."
536
+ msgstr "要删除此自定义 URL 吗?使用它的访问者将不再被重定向。"
537
+
538
+ #. @context: Confirm dialog for deleting a custom navigation link
539
+ #: src/ui/dash/appearance/NavigationContent.tsx
540
+ msgid "Delete this navigation link? Visitors won't see it in your site header anymore."
541
+ msgstr "删除此导航链接? 访客将不再在您网站的页眉中看到它。"
542
+
543
+ #. @context: Settings item description for account settings on the settings home page when demo restrictions are enabled
544
+ #: src/ui/dash/settings/SettingsRootContent.tsx
545
+ msgid "Demo limits"
546
+ msgstr "演示限制"
547
+
548
+ #. @context: Notice shown on the account page when demo restrictions are enabled
549
+ #: src/ui/dash/settings/AccountMenuContent.tsx
550
+ msgid "Demo mode hides sessions, password changes, and account deletion. Export still works."
551
+ msgstr "演示模式会隐藏会话、密码更改和账号删除。导出仍然可用."
552
+
553
+ #. @context: Help text explaining that SEO indexing is locked in demo mode
554
+ #: src/ui/dash/settings/GeneralContent.tsx
555
+ msgid "Demo sites always stay hidden from search engines."
556
+ msgstr "演示站点始终对搜索引擎隐藏。"
557
+
558
+ #. @context: Color theme preview collection label
559
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
560
+ msgid "Design"
561
+ msgstr "设计"
562
+
563
+ #. @context: Redirect destination field
564
+ #: src/routes/dash/custom-urls.tsx
565
+ msgid "Destination"
566
+ msgstr "目标地址"
567
+
568
+ #. @context: Button to disconnect GitHub repository on GitHub Sync settings
569
+ #. @context: Section heading for disconnect action on GitHub Sync settings
570
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
571
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
572
+ msgid "Disconnect"
573
+ msgstr "断开连接"
574
+
575
+ #. @context: Confirmation message when disconnecting GitHub Sync
576
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
577
+ msgid "Disconnect from GitHub? The webhook will be removed. Your repository content will not be deleted."
578
+ msgstr "要与 GitHub 断开连接吗?该 webhook 将被移除。您的仓库内容不会被删除。"
579
+
580
+ #. @context: Checkbox to show avatar in the site header
581
+ #: src/ui/dash/settings/AvatarContent.tsx
582
+ msgid "Display avatar in my site header"
583
+ msgstr "在我的站点页眉显示头像"
584
+
585
+ #. @context: Help text for site footer field
586
+ #: src/ui/dash/settings/GeneralContent.tsx
587
+ msgid "Displayed at the bottom of all posts and pages."
588
+ msgstr "显示在所有文章和页面的底部。"
589
+
590
+ #. @context: Settings item description for static site export
591
+ #: src/ui/dash/settings/AccountMenuContent.tsx
592
+ msgid "Download a Hugo-compatible archive — host it statically or move to another Jant."
593
+ msgstr "下载一个与 Hugo 兼容的归档 — 将其静态托管或迁移到另一个 Jant。"
594
+
595
+ #. @context: Step 1 heading — user must download a site export before deleting
596
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
597
+ msgid "Download a site export"
598
+ msgstr "下载网站导出"
599
+
600
+ #. @context: Button to download the site export ZIP before deletion
601
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
602
+ msgid "Download Export ZIP"
603
+ msgstr "下载导出 ZIP"
604
+
605
+ #. @context: Alert when site export download fails during account deletion
606
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
607
+ msgid "Download failed. Please try again."
608
+ msgstr "下载失败。请重试。"
609
+
610
+ #. @context: Post status badge - draft
611
+ #: src/ui/dash/StatusBadge.tsx
612
+ msgid "Draft"
613
+ msgstr "草稿"
614
+
615
+ #. @context: Hint text shown in empty More section of nav settings
616
+ #: src/ui/dash/appearance/NavigationContent.tsx
617
+ msgid "Drag links here to show them under the More menu"
618
+ msgstr "将链接拖到此处以在更多菜单下显示它们"
619
+
620
+ #. @context: Placeholder for API token name input
621
+ #: src/ui/dash/settings/ApiTokensContent.tsx
622
+ msgid "e.g. iOS Shortcuts"
623
+ msgstr "例如 iOS Shortcuts"
624
+
625
+ #. @context: Button to edit item
626
+ #: src/ui/dash/ActionButtons.tsx
627
+ msgid "Edit"
628
+ msgstr "编辑"
629
+
630
+ #. @context: GitHub sync picker — shown when the selected repo has no commits
631
+ #: src/routes/dash/settings.tsx
632
+ msgid "Empty repository. Ready to connect."
633
+ msgstr "仓库为空。准备连接。"
634
+
635
+ #. @context: Confirmation text after downloading the site export in delete flow
636
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
637
+ msgid "Export downloaded."
638
+ msgstr "导出文件已下载."
639
+
640
+ #. @context: Settings item — export the site as a Hugo archive
641
+ #: src/ui/dash/settings/AccountMenuContent.tsx
642
+ msgid "Export Site"
643
+ msgstr "导出站点"
644
+
645
+ #. @context: Settings item description for avatar
646
+ #: src/ui/dash/settings/SettingsRootContent.tsx
647
+ msgid "Favicon and the profile mark in your header"
648
+ msgstr "Favicon 和页眉中的个人标识"
649
+
650
+ #. @context: Browse filter label for featured posts
651
+ #. @context: Post badge - featured
652
+ #. @context: Select option for using featured posts as the main RSS feed
653
+ #: src/ui/dash/appearance/NavigationContent.tsx
654
+ #: src/ui/dash/settings/GeneralContent.tsx
655
+ #: src/ui/dash/StatusBadge.tsx
656
+ msgid "Featured"
657
+ msgstr "精选"
658
+
659
+ #. @context: Label for the explicit featured RSS feed URL
660
+ #: src/ui/dash/settings/GeneralContent.tsx
661
+ msgid "Featured feed"
662
+ msgstr "精选订阅源"
663
+
664
+ #. @context: Toast after saving feed settings
665
+ #: src/routes/dash/settings.tsx
666
+ msgid "Feed settings updated."
667
+ msgstr "订阅源设置已更新。"
668
+
669
+ #. @context: Toast after copying a feed URL to the clipboard
670
+ #: src/ui/dash/settings/GeneralContent.tsx
671
+ msgid "Feed URL copied."
672
+ msgstr "订阅源 URL 已复制。"
673
+
674
+ #. @context: Settings section heading for RSS feed configuration
675
+ #: src/ui/dash/settings/GeneralContent.tsx
676
+ msgid "Feeds"
677
+ msgstr "订阅源"
678
+
679
+ #. @context: Color theme preview card title
680
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
681
+ msgid "Field notes on quiet design"
682
+ msgstr "关于静谧设计的笔记"
683
+
684
+ #. @context: Error toast when file storage is not set up
685
+ #: src/routes/dash/settings.tsx
686
+ msgid "File storage isn't set up. Check your server config."
687
+ msgstr "文件存储尚未设置。请检查服务器配置。"
688
+
689
+ #. @context: Settings item description for custom CSS
690
+ #: src/ui/dash/settings/SettingsRootContent.tsx
691
+ msgid "Fine-grained styling overrides"
692
+ msgstr "细粒度样式覆盖"
693
+
694
+ #. @context: Label for the list of stable RSS feed URLs
695
+ #: src/ui/dash/settings/GeneralContent.tsx
696
+ msgid "Fixed feed URLs"
697
+ msgstr "固定订阅源 URL"
698
+
699
+ #. @context: Theme mode option description
700
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
701
+ msgid "Follow each visitor's system preference."
702
+ msgstr "遵循每位访客的系统偏好。"
703
+
704
+ #. @context: Appearance settings heading for font theme
705
+ #: src/ui/dash/appearance/FontThemeContent.tsx
706
+ msgid "Font theme"
707
+ msgstr "字体主题"
708
+
709
+ #. @context: Breadcrumb label
710
+ #. @context: Settings item — font theme settings
711
+ #: src/routes/dash/settings.tsx
712
+ #: src/ui/dash/settings/SettingsRootContent.tsx
713
+ msgid "Font Theme"
714
+ msgstr "字体主题"
715
+
716
+ #. @context: Breadcrumb label
717
+ #. @context: Settings item — general settings
718
+ #. @context: Settings section heading
719
+ #: src/routes/dash/settings.tsx
720
+ #: src/ui/dash/settings/GeneralContent.tsx
721
+ #: src/ui/dash/settings/SettingsRootContent.tsx
722
+ msgid "General"
723
+ msgstr "常规"
724
+
725
+ #. @context: Button to create new API token
726
+ #: src/ui/dash/settings/ApiTokensContent.tsx
727
+ msgid "Generate Token"
728
+ msgstr "生成令牌"
729
+
730
+ #. @context: Breadcrumb label
731
+ #. @context: Settings item — GitHub sync settings
732
+ #. @context: Settings section heading for GitHub Sync setup
733
+ #: src/routes/dash/settings.tsx
734
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
735
+ #: src/ui/dash/settings/SettingsRootContent.tsx
736
+ msgid "GitHub Sync"
737
+ msgstr "GitHub 同步"
738
+
739
+ #. @context: Section label for nav items shown in header
740
+ #: src/ui/dash/appearance/NavigationContent.tsx
741
+ msgid "Header"
742
+ msgstr "页眉"
743
+
744
+ #. @context: Settings item description for navigation
745
+ #: src/ui/dash/settings/SettingsRootContent.tsx
746
+ msgid "Header links, home feed, and overflow menu"
747
+ msgstr "页眉链接、首页信息流和溢出菜单"
748
+
749
+ #. @context: Description for the RSS system navigation toggle. {feed} is either Latest or Featured.
750
+ #: src/ui/dash/appearance/NavigationContent.tsx
751
+ msgid "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
752
+ msgstr "页眉 RSS 指向你的 {feed} 源 (/feed)。在 常规 中更改 /feed 返回的内容。"
753
+
754
+ #. @context: Post badge for posts hidden from Latest
755
+ #: src/ui/dash/StatusBadge.tsx
756
+ msgid "Hidden from Latest"
757
+ msgstr "从最新中隐藏 (不出现在 Latest 中,但仍可通过固定链接和集合访问的状态。)"
758
+
759
+ #. @context: Settings subsection heading for home page settings
760
+ #: src/ui/dash/settings/GeneralContent.tsx
761
+ msgid "Home"
762
+ msgstr "首页"
763
+
764
+ #. @context: Toast after auto-saving home settings
765
+ #: src/routes/dash/settings.tsx
766
+ msgid "Home settings updated."
767
+ msgstr "主页设置已更新."
768
+
769
+ #. @context: Generic hosted auth provider label when no explicit provider name is configured
770
+ #: src/ui/dash/settings/AccountMenuContent.tsx
771
+ msgid "Hosted account"
772
+ msgstr "托管账户"
773
+
774
+ #. @context: Confirmation phrase the user must type to delete their account. {siteName} is the blog name.
775
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
776
+ msgid "I want to delete {siteName}"
777
+ msgstr "我想删除 {siteName}"
778
+
779
+ #. @context: Code Injection body-end field description
780
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
781
+ msgid "Injected before </body>. Use for chat widgets and scripts that should not block page load."
782
+ msgstr "注入到 </body> 之前。用于聊天小部件和不应阻塞页面加载的脚本。"
783
+
784
+ #. @context: Code Injection head field description
785
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
786
+ msgid "Injected before </head>. Use for analytics, custom meta tags, and styles that must load early."
787
+ msgstr "注入到 </head> 之前。用于分析、自定义元标签以及必须尽早加载的样式。"
788
+
789
+ #. @context: Button label to start the GitHub App install flow on GitHub Sync setup
790
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
791
+ msgid "Install GitHub App"
792
+ msgstr "安装 GitHub App"
793
+
794
+ #. @context: Help text for the GitHub App connect option on GitHub Sync setup
795
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
796
+ msgid "Install the GitHub App to grant access without managing personal tokens. Permissions are scoped per repository and revocable from GitHub."
797
+ msgstr "安装 GitHub App 以在无需管理个人令牌的情况下授予访问权限。权限按仓库范围授予,可在 GitHub 上撤销。"
798
+
799
+ #. @context: Settings group label for third-party integrations
800
+ #: src/ui/dash/settings/SettingsRootContent.tsx
801
+ msgid "Integrations"
802
+ msgstr "集成"
803
+
804
+ #. @context: Nav item label field
805
+ #: src/ui/dash/appearance/NavigationContent.tsx
806
+ msgid "Label"
807
+ msgstr "标签"
808
+
809
+ #. @context: Error toast when nav link fields are empty
810
+ #: src/ui/dash/appearance/NavigationContent.tsx
811
+ msgid "Label and URL are required"
812
+ msgstr "标签和 URL 为必填项"
813
+
814
+ #. @context: Error toast when nav label is empty
815
+ #: src/ui/dash/appearance/NavigationContent.tsx
816
+ msgid "Label is required"
817
+ msgstr "标签为必填项"
818
+
819
+ #. @context: Settings form field for site/dashboard language
820
+ #: src/ui/dash/settings/GeneralContent.tsx
821
+ msgid "Language"
822
+ msgstr "语言"
823
+
824
+ #. @context: Settings subsection heading for language and time zone fields
825
+ #: src/ui/dash/settings/GeneralContent.tsx
826
+ msgid "Language & Time"
827
+ msgstr "语言与时间"
828
+
829
+ #. @context: Toast after saving language and time settings
830
+ #: src/routes/dash/settings.tsx
831
+ msgid "Language and time updated."
832
+ msgstr "语言和时间已更新。"
833
+
834
+ #. @context: Label for last push commit SHA on GitHub Sync status
835
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
836
+ msgid "Last commit"
837
+ msgstr "最近一次提交"
838
+
839
+ #. @context: Label for last sync error on GitHub Sync status
840
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
841
+ msgid "Last error"
842
+ msgstr "上次错误"
843
+
844
+ #. @context: Label for last sync time on GitHub Sync status
845
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
846
+ msgid "Last synced"
847
+ msgstr "上次同步"
848
+
849
+ #. @context: Token last used date
850
+ #: src/ui/dash/settings/ApiTokensContent.tsx
851
+ msgid "Last used {date}"
852
+ msgstr "上次使用 {date}"
853
+
854
+ #. @context: Browse filter label for latest posts
855
+ #. @context: Select option for using latest posts as the main RSS feed
856
+ #: src/ui/dash/appearance/NavigationContent.tsx
857
+ #: src/ui/dash/settings/GeneralContent.tsx
858
+ msgid "Latest"
859
+ msgstr "最新"
860
+
861
+ #. @context: Label for the explicit latest RSS feed URL
862
+ #: src/ui/dash/settings/GeneralContent.tsx
863
+ msgid "Latest feed"
864
+ msgstr "最新订阅源"
865
+
866
+ #. @context: Suffix after Custom CSS link on color theme page
867
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
868
+ msgid "lets you override any theme variable."
869
+ msgstr "允许您覆盖任何主题变量."
870
+
871
+ #. @context: Theme mode option label
872
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
873
+ msgid "Light"
874
+ msgstr "浅色"
875
+
876
+ #. @context: Nav item type badge
877
+ #: src/ui/dash/appearance/NavigationContent.tsx
878
+ msgid "link"
879
+ msgstr "链接"
880
+
881
+ #. @context: Post format badge - link
882
+ #: src/ui/dash/FormatBadge.tsx
883
+ msgid "Link"
884
+ msgstr "链接"
885
+
886
+ #. @context: Label for list posts curl example
887
+ #: src/ui/dash/settings/ApiTokensContent.tsx
888
+ msgid "List posts:"
889
+ msgstr "列出帖子:"
890
+
891
+ #. @context: Help text for CJK serif font selection
892
+ #: src/ui/dash/settings/GeneralContent.tsx
893
+ msgid "Load a serif font optimized for Chinese, Japanese, or Korean content."
894
+ msgstr "加载针对中文、日文或韩文内容优化的衬线字体。"
895
+
896
+ #. @context: GitHub sync picker — loading state
897
+ #: src/routes/dash/settings.tsx
898
+ msgid "Loading…"
899
+ msgstr "正在加载…"
900
+
901
+ #. @context: Label for the canonical /feed URL
902
+ #: src/ui/dash/settings/GeneralContent.tsx
903
+ msgid "Main feed"
904
+ msgstr "主订阅源"
905
+
906
+ #. @context: Settings field label for the canonical /feed output
907
+ #: src/ui/dash/settings/GeneralContent.tsx
908
+ msgid "Main RSS feed"
909
+ msgstr "主 RSS 源"
910
+
911
+ #. @context: Settings item label for opening the hosted account management page
912
+ #: src/ui/dash/settings/AccountMenuContent.tsx
913
+ msgid "Manage Account"
914
+ msgstr "管理账户"
915
+
916
+ #. @context: Settings item description for hosted account management in the connected provider
917
+ #: src/ui/dash/settings/AccountMenuContent.tsx
918
+ msgid "Manage password and hosted access in {providerLabel}"
919
+ msgstr "在 {providerLabel} 管理密码和托管访问"
920
+
921
+ #. @context: Intro text on the account settings menu page below the title
922
+ #: src/ui/dash/settings/AccountMenuContent.tsx
923
+ msgid "Manage sign-in security, exports, and irreversible actions."
924
+ msgstr "管理登录安全、导出和不可逆操作."
925
+
926
+ #. @context: Intro text on the hosted account settings menu page below the title
927
+ #: src/ui/dash/settings/AccountMenuContent.tsx
928
+ msgid "Manage this site's active sessions here. Password and hosted access are managed through {providerLabel}."
929
+ msgstr "在此管理本站点的活动会话。密码和托管访问通过 {providerLabel} 管理。"
930
+
931
+ #. @context: Section heading for manual push action on GitHub Sync settings
932
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
933
+ msgid "Manual Push"
934
+ msgstr "手动推送"
935
+
936
+ #. @context: Color theme preview date label
937
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
938
+ msgid "March 14"
939
+ msgstr "3月14日"
940
+
941
+ #. @context: Placeholder hint for markdown-enabled textareas
942
+ #: src/ui/dash/settings/GeneralContent.tsx
943
+ msgid "Markdown supported"
944
+ msgstr "支持 Markdown"
945
+
946
+ #. @context: Section label for nav items hidden under More dropdown
947
+ #: src/ui/dash/appearance/NavigationContent.tsx
948
+ msgid "More"
949
+ msgstr "更多"
950
+
951
+ #. @context: Button label for a menu with more actions
952
+ #: src/routes/dash/custom-urls.tsx
953
+ msgid "More actions"
954
+ msgstr "更多操作"
955
+
956
+ #. @context: Settings item description for general
957
+ #: src/ui/dash/settings/SettingsRootContent.tsx
958
+ msgid "Name, metadata, language, and search defaults"
959
+ msgstr "名称、元数据、语言和搜索默认设置"
960
+
961
+ #. @context: Breadcrumb label
962
+ #. @context: Settings item — navigation settings
963
+ #: src/routes/dash/settings.tsx
964
+ #: src/ui/dash/settings/SettingsRootContent.tsx
965
+ msgid "Navigation"
966
+ msgstr "导航"
967
+
968
+ #. @context: Section heading for nav items
969
+ #: src/ui/dash/appearance/NavigationContent.tsx
970
+ msgid "Navigation items"
971
+ msgstr "导航项"
972
+
973
+ #. @context: Toast after saving navigation item order
974
+ #: src/ui/dash/appearance/NavigationContent.tsx
975
+ msgid "Navigation order updated."
976
+ msgstr "导航顺序已更新。"
977
+
978
+ #. @context: Toast after moving nav item between header/more
979
+ #: src/ui/dash/appearance/NavigationContent.tsx
980
+ msgid "Navigation placement updated."
981
+ msgstr "导航位置已更新."
982
+
983
+ #. @context: Label for nav preview section
984
+ #: src/ui/dash/appearance/NavigationContent.tsx
985
+ msgid "Navigation Preview"
986
+ msgstr "导航预览"
987
+
988
+ #. @context: Help text for GitHub PAT input explaining required permissions
989
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
990
+ msgid "Needs Contents (read/write) and Webhooks (read/write) on the target repository."
991
+ msgstr "需要对目标仓库的 Contents(读/写)和 Webhooks(读/写)。"
992
+
993
+ #. @context: Button to create new custom URL
994
+ #. @context: Button to create new custom URL
995
+ #. @context: Page heading
996
+ #: src/routes/dash/custom-urls.tsx
997
+ #: src/routes/dash/custom-urls.tsx
998
+ #: src/routes/dash/custom-urls.tsx
999
+ msgid "New Custom URL"
1000
+ msgstr "新建自定义 URL"
1001
+
1002
+ #. @context: Password form field
1003
+ #: src/ui/dash/settings/AccountContent.tsx
1004
+ msgid "New Password"
1005
+ msgstr "新密码"
1006
+
1007
+ #. @context: GitHub sync picker — shown when the owner list is empty
1008
+ #: src/routes/dash/settings.tsx
1009
+ msgid "No accounts authorized yet"
1010
+ msgstr "尚未授权任何账户"
1011
+
1012
+ #. @context: Empty state when no sessions exist (shouldn't normally appear)
1013
+ #: src/ui/dash/settings/SessionsContent.tsx
1014
+ msgid "No active sessions right now. Signed-in devices show up here."
1015
+ msgstr "当前没有活动会话。 已登录的设备会显示在此处。"
1016
+
1017
+ #. @context: Empty state when no collections exist for nav picker
1018
+ #: src/ui/dash/appearance/NavigationContent.tsx
1019
+ msgid "No collections yet. Create one first, then add it to your navigation."
1020
+ msgstr "还没有合集。请先创建一个,然后将其添加到你的导航中。"
1021
+
1022
+ #. @context: Empty state message
1023
+ #: src/routes/dash/custom-urls.tsx
1024
+ msgid "No custom URLs yet. Create one to add redirects or custom paths for posts."
1025
+ msgstr "尚无自定义 URL。创建一个以便为文章添加重定向或自定义路径。"
1026
+
1027
+ #. @context: Error toast when no file was selected for upload
1028
+ #: src/routes/dash/settings.tsx
1029
+ msgid "No file selected. Choose a file to upload."
1030
+ msgstr "未选择文件。请选择要上传的文件。"
1031
+
1032
+ #. @context: Empty state for navigation items
1033
+ #: src/ui/dash/appearance/NavigationContent.tsx
1034
+ msgid "No navigation items yet. Add links or enable system items below."
1035
+ msgstr "当前还没有导航项目。添加链接或在下方启用系统项目。"
1036
+
1037
+ #. @context: GitHub sync picker — empty state when search returns nothing
1038
+ #: src/routes/dash/settings.tsx
1039
+ msgid "No repositories match."
1040
+ msgstr "没有匹配的仓库。"
1041
+
1042
+ #. @context: Shown when no sync has happened yet on GitHub Sync status
1043
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1044
+ msgid "Not synced yet"
1045
+ msgstr "尚未同步"
1046
+
1047
+ #. @context: Color theme preview format label
1048
+ #. @context: Post format badge - note
1049
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1050
+ #: src/ui/dash/FormatBadge.tsx
1051
+ msgid "Note"
1052
+ msgstr "笔记"
1053
+
1054
+ #. @context: Settings item description for the hosted delete-site entry in the account menu
1055
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1056
+ msgid "Open the hosted site controls in {providerLabel} to cancel billing or permanently delete this site."
1057
+ msgstr "在 {providerLabel} 打开托管站点控制以取消计费或永久删除此站点。"
1058
+
1059
+ #. @context: GitHub sync picker — placeholder text showing the expected input shape
1060
+ #: src/routes/dash/settings.tsx
1061
+ msgid "owner/repo"
1062
+ msgstr "owner/repo"
1063
+
1064
+ #. @context: Settings item description for color theme
1065
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1066
+ msgid "Palette, surface tone, and overall mood"
1067
+ msgstr "调色板、表面色调与整体氛围"
1068
+
1069
+ #. @context: Breadcrumb label
1070
+ #. @context: Settings item — password settings
1071
+ #: src/routes/dash/settings.tsx
1072
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1073
+ msgid "Password"
1074
+ msgstr "密码"
1075
+
1076
+ #. @context: Toast after changing account password
1077
+ #: src/routes/dash/settings.tsx
1078
+ msgid "Password changed."
1079
+ msgstr "密码已更改."
1080
+
1081
+ #. @context: Error shown when password changes are blocked in demo mode
1082
+ #: src/routes/dash/settings.tsx
1083
+ msgid "Password changes are off in demo mode. Sign in with the shared demo credentials."
1084
+ msgstr "演示模式下已禁用密码更改。请使用共享的演示凭证登录。"
1085
+
1086
+ #. @context: Error toast when new password and confirmation differ
1087
+ #: src/routes/dash/settings.tsx
1088
+ msgid "Passwords don't match. Make sure both fields are identical."
1089
+ msgstr "密码不匹配。请确保两个字段相同。"
1090
+
1091
+ #. @context: Custom URL form field
1092
+ #: src/routes/dash/custom-urls.tsx
1093
+ msgid "Path"
1094
+ msgstr "路径"
1095
+
1096
+ #. @context: Settings item description for account deletion
1097
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1098
+ msgid "Permanently delete all data and reset the blog"
1099
+ msgstr "永久删除所有数据并重置博客"
1100
+
1101
+ #. @context: Label for GitHub PAT input on GitHub Sync settings
1102
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1103
+ msgid "Personal Access Token"
1104
+ msgstr "个人访问令牌"
1105
+
1106
+ #. @context: GitHub sync picker — page heading
1107
+ #: src/routes/dash/settings.tsx
1108
+ msgid "Pick a repository"
1109
+ msgstr "选择仓库"
1110
+
1111
+ #. @context: GitHub sync picker — repo dropdown placeholder before an owner is chosen
1112
+ #: src/routes/dash/settings.tsx
1113
+ msgid "Pick an account first"
1114
+ msgstr "请先选择一个账号"
1115
+
1116
+ #. @context: Description in collection picker section
1117
+ #: src/ui/dash/appearance/NavigationContent.tsx
1118
+ msgid "Pin a collection to your navigation bar. An asterisk (*) appears next to collections updated in the last 48 hours."
1119
+ msgstr "将合集固定到导航栏。在过去 48 小时内更新的合集旁会出现一个 * 号。"
1120
+
1121
+ #. @context: Post badge - pinned
1122
+ #: src/ui/dash/StatusBadge.tsx
1123
+ msgid "Pinned"
1124
+ msgstr "已置顶"
1125
+
1126
+ #. @context: Custom URL target type badge for a post
1127
+ #. @context: Custom URL type option
1128
+ #: src/routes/dash/custom-urls.tsx
1129
+ #: src/routes/dash/custom-urls.tsx
1130
+ msgid "Post"
1131
+ msgstr "文章"
1132
+
1133
+ #. @context: GitHub sync picker — badge next to private repos
1134
+ #: src/routes/dash/settings.tsx
1135
+ msgid "Private"
1136
+ msgstr "私有"
1137
+
1138
+ #. @context: Avatar upload button text while generating favicon variants
1139
+ #: src/ui/dash/settings/AvatarContent.tsx
1140
+ msgid "Processing..."
1141
+ msgstr "处理中..."
1142
+
1143
+ #. @context: Post status badge - published
1144
+ #: src/ui/dash/StatusBadge.tsx
1145
+ msgid "Published"
1146
+ msgstr "已发布"
1147
+
1148
+ #. @context: Description for manual push action on GitHub Sync settings
1149
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1150
+ msgid "Push all posts to GitHub right now instead of waiting for the next automatic sync."
1151
+ msgstr "立即将所有文章推送到 GitHub,而不是等待下一次自动同步。"
1152
+
1153
+ #. @context: Archive custom URL query params field
1154
+ #: src/routes/dash/custom-urls.tsx
1155
+ msgid "Query Parameters"
1156
+ msgstr "查询参数"
1157
+
1158
+ #. @context: Color theme preview card secondary sentence
1159
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1160
+ msgid "Quiet surfaces let writing lead."
1161
+ msgstr "低调的界面让写作成为焦点."
1162
+
1163
+ #. @context: Post format badge - quote
1164
+ #: src/ui/dash/FormatBadge.tsx
1165
+ msgid "Quote"
1166
+ msgstr "引用 (Jant 的帖子格式之一。)"
1167
+
1168
+ #. @context: Color theme preview inline link label
1169
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1170
+ msgid "Read why"
1171
+ msgstr "了解原因"
1172
+
1173
+ #. @context: Custom URL target type badge for a redirect
1174
+ #. @context: Custom URL type option
1175
+ #: src/routes/dash/custom-urls.tsx
1176
+ #: src/routes/dash/custom-urls.tsx
1177
+ msgid "Redirect"
1178
+ msgstr "重定向"
1179
+
1180
+ #. @context: Redirect type field
1181
+ #: src/routes/dash/custom-urls.tsx
1182
+ msgid "Redirect Type"
1183
+ msgstr "重定向类型"
1184
+
1185
+ #. @context: Settings item description for custom URLs
1186
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1187
+ msgid "Redirects, vanity paths, and URL control"
1188
+ msgstr "重定向、个性化路径和 URL 控制"
1189
+
1190
+ #. @context: GitHub sync picker — tooltip for the refresh button next to the search input
1191
+ #: src/routes/dash/settings.tsx
1192
+ msgid "Refresh repository list"
1193
+ msgstr "刷新仓库列表"
1194
+
1195
+ #. @context: Button to remove the blog avatar
1196
+ #. @context: Remove system item from navigation
1197
+ #: src/ui/dash/appearance/NavigationContent.tsx
1198
+ #: src/ui/dash/settings/AvatarContent.tsx
1199
+ msgid "Remove"
1200
+ msgstr "移除"
1201
+
1202
+ #. @context: Description for disconnect action on GitHub Sync settings
1203
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1204
+ msgid "Remove the webhook and stop syncing. Your repository content will not be deleted."
1205
+ msgstr "移除 webhook 并停止同步。您的仓库内容不会被删除。"
1206
+
1207
+ #. @context: Confirm dialog for removing the blog avatar
1208
+ #: src/ui/dash/settings/AvatarContent.tsx
1209
+ msgid "Remove this avatar? Your favicon and header icon will go back to the default."
1210
+ msgstr "移除此头像?您的网站图标和页眉图标将恢复为默认设置。"
1211
+
1212
+ #. @context: Confirm dialog for removing a collection nav item
1213
+ #: src/ui/dash/appearance/NavigationContent.tsx
1214
+ msgid "Remove this collection from navigation? The collection itself won't be deleted."
1215
+ msgstr "要从导航中移除此合集吗?合集本身不会被删除。"
1216
+
1217
+ #. @context: GitHub sync picker — repo dropdown label
1218
+ #. @context: Label for GitHub repository input on GitHub Sync settings
1219
+ #. @context: Label for connected repository on GitHub Sync status
1220
+ #: src/routes/dash/settings.tsx
1221
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1222
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1223
+ msgid "Repository"
1224
+ msgstr "仓库"
1225
+
1226
+ #. @context: Button to revoke API token
1227
+ #. @context: Button to revoke a session
1228
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1229
+ #: src/ui/dash/settings/SessionsContent.tsx
1230
+ msgid "Revoke"
1231
+ msgstr "撤销"
1232
+
1233
+ #. @context: Confirm dialog for revoking an active session
1234
+ #: src/ui/dash/settings/SessionsContent.tsx
1235
+ msgid "Revoke this session? That device will need to sign in again."
1236
+ msgstr "撤销此会话? 该设备需要重新登录."
1237
+
1238
+ #. @context: Confirm dialog for revoking API token
1239
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1240
+ msgid "Revoke this token? Any scripts using it will stop working."
1241
+ msgstr "撤销此令牌?任何使用它的脚本将停止工作。"
1242
+
1243
+ #. @context: Hint shown while a GitHub Sync push is running, reassuring the user they don't have to stay on the page
1244
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1245
+ msgid "Safe to leave this page — syncing continues in the background."
1246
+ msgstr "放心离开此页面 — 同步会在后台继续进行。"
1247
+
1248
+ #. @context: Button to save Code Injection settings
1249
+ #. @context: Button to save settings
1250
+ #. @context: Button to save settings changes
1251
+ #. @context: Save nav item changes
1252
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
1253
+ #: src/ui/dash/appearance/NavigationContent.tsx
1254
+ #: src/ui/dash/settings/AvatarContent.tsx
1255
+ #: src/ui/dash/settings/GeneralContent.tsx
1256
+ msgid "Save"
1257
+ msgstr "保存"
1258
+
1259
+ #. @context: Button to save custom CSS
1260
+ #: src/ui/dash/appearance/AdvancedContent.tsx
1261
+ msgid "Save CSS"
1262
+ msgstr "保存 CSS"
1263
+
1264
+ #. @context: Settings section heading for search engine indexing settings
1265
+ #: src/ui/dash/settings/GeneralContent.tsx
1266
+ msgid "Search"
1267
+ msgstr "搜索"
1268
+
1269
+ #. @context: GitHub sync picker — search input placeholder
1270
+ #: src/routes/dash/settings.tsx
1271
+ msgid "Search repositories"
1272
+ msgstr "搜索仓库"
1273
+
1274
+ #. @context: Toast after saving search settings
1275
+ #. @context: Toast after saving search settings
1276
+ #: src/routes/dash/settings.tsx
1277
+ #: src/routes/dash/settings.tsx
1278
+ msgid "Search settings updated."
1279
+ msgstr "搜索设置已更新。"
1280
+
1281
+ #. @context: Settings group label for account security settings
1282
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1283
+ msgid "Security"
1284
+ msgstr "安全"
1285
+
1286
+ #. @context: Error toast when CSRF token is invalid or expired
1287
+ #: src/routes/dash/settings.tsx
1288
+ msgid "Security token expired. Refresh the page and try again."
1289
+ msgstr "安全令牌已过期。刷新页面后重试。"
1290
+
1291
+ #. @context: Error toast when CSRF token is missing from delete request
1292
+ #: src/routes/dash/settings.tsx
1293
+ msgid "Security token missing. Refresh the page and try again."
1294
+ msgstr "缺少安全令牌。刷新页面后重试。"
1295
+
1296
+ #. @context: Settings item description for sessions
1297
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1298
+ msgid "See where you're signed in and revoke old sessions"
1299
+ msgstr "查看你的登录位置并撤销旧会话"
1300
+
1301
+ #. @context: GitHub sync picker — repo dropdown placeholder
1302
+ #: src/routes/dash/settings.tsx
1303
+ msgid "Select a repository"
1304
+ msgstr "选择仓库"
1305
+
1306
+ #. @context: GitHub sync picker — owner dropdown placeholder when nothing is selected
1307
+ #: src/routes/dash/settings.tsx
1308
+ msgid "Select an account"
1309
+ msgstr "选择账户"
1310
+
1311
+ #. @context: Error shown when session management is blocked in demo mode
1312
+ #: src/routes/dash/settings.tsx
1313
+ msgid "Session management is off in demo mode. Use the shared demo session instead."
1314
+ msgstr "会话管理在演示模式下已关闭。请使用共享的演示会话。"
1315
+
1316
+ #. @context: Breadcrumb label
1317
+ #. @context: Settings item — session management
1318
+ #: src/routes/dash/settings.tsx
1319
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1320
+ msgid "Sessions"
1321
+ msgstr "会话"
1322
+
1323
+ #. @context: Settings item description for account settings on the settings home page
1324
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1325
+ msgid "Sessions and password"
1326
+ msgstr "会话与密码"
1327
+
1328
+ #. @context: Breadcrumb label
1329
+ #. @context: Page title for the settings home page
1330
+ #: src/routes/dash/settings.tsx
1331
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1332
+ msgid "Settings"
1333
+ msgstr "设置"
1334
+
1335
+ #. @context: Checkbox for showing the optional Jant credit link on the home page
1336
+ #: src/ui/dash/settings/GeneralContent.tsx
1337
+ msgid "Show \"Build with Jant\" at the bottom of the home page"
1338
+ msgstr "在主页底部显示 \"Build with Jant\""
1339
+
1340
+ #. @context: GitHub sync picker — paginated repo count hint. Placeholders {shown} and {total} are integers.
1341
+ #: src/routes/dash/settings.tsx
1342
+ msgid "Showing {shown} of {total}"
1343
+ msgstr "显示 {shown} 共 {total}"
1344
+
1345
+ #. @context: Settings link — sign out action
1346
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1347
+ msgid "Sign Out"
1348
+ msgstr "退出登录"
1349
+
1350
+ #. @context: Session creation date
1351
+ #: src/ui/dash/settings/SessionsContent.tsx
1352
+ msgid "Signed in {date}"
1353
+ msgstr "于 {date} 登录"
1354
+
1355
+ #. @context: Settings group label for site settings
1356
+ #. @context: Settings subsection heading for basic site fields
1357
+ #: src/ui/dash/settings/GeneralContent.tsx
1358
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1359
+ msgid "Site"
1360
+ msgstr "站点"
1361
+
1362
+ #. @context: Code Injection field group label for body end
1363
+ #. @context: Settings section heading for site footer
1364
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
1365
+ #: src/ui/dash/settings/GeneralContent.tsx
1366
+ msgid "Site Footer"
1367
+ msgstr "网站页脚"
1368
+
1369
+ #. @context: Code Injection field group label for <head>
1370
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
1371
+ msgid "Site Header"
1372
+ msgstr "站点头部"
1373
+
1374
+ #. @context: Settings form field
1375
+ #: src/ui/dash/settings/GeneralContent.tsx
1376
+ msgid "Site Name"
1377
+ msgstr "站点名称"
1378
+
1379
+ #. @context: Toast after saving site settings
1380
+ #: src/routes/dash/settings.tsx
1381
+ msgid "Site settings updated."
1382
+ msgstr "站点设置已更新."
1383
+
1384
+ #. @context: Settings item description for code injection
1385
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1386
+ msgid "Site-wide HTML for analytics and widgets"
1387
+ msgstr "用于分析和小部件的全站 HTML"
1388
+
1389
+ #. @context: Color theme preview card body sentence
1390
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1391
+ msgid "Soft color should still carry a clear reading rhythm."
1392
+ msgstr "柔和的颜色仍应保持清晰的阅读节奏。"
1393
+
1394
+ #. @context: Button to trigger a full content push to GitHub on GitHub Sync settings
1395
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1396
+ msgid "Sync Now"
1397
+ msgstr "立即同步"
1398
+
1399
+ #. @context: Shown while a GitHub Sync push is running in the background
1400
+ #: src/ui/dash/settings/GitHubSyncContent.tsx
1401
+ msgid "Syncing…"
1402
+ msgstr "正在同步…"
1403
+
1404
+ #. @context: Nav item type badge
1405
+ #: src/ui/dash/appearance/NavigationContent.tsx
1406
+ msgid "system"
1407
+ msgstr "系统"
1408
+
1409
+ #. @context: Custom URL target slug field
1410
+ #: src/routes/dash/custom-urls.tsx
1411
+ msgid "Target Slug"
1412
+ msgstr "目标 slug"
1413
+
1414
+ #. @context: Error toast when selected font theme is not valid
1415
+ #: src/routes/dash/settings.tsx
1416
+ msgid "That font theme isn't available. Pick another one."
1417
+ msgstr "该字体主题不可用。请选择另一个。"
1418
+
1419
+ #. @context: Error toast when selected theme is not valid
1420
+ #: src/routes/dash/settings.tsx
1421
+ msgid "That theme isn't available. Pick another one."
1422
+ msgstr "该主题不可用。请选择其他主题。"
1423
+
1424
+ #. @context: Custom URL target slug help text
1425
+ #: src/routes/dash/custom-urls.tsx
1426
+ msgid "The slug of the target post or collection"
1427
+ msgstr "目标文章或合集的 slug"
1428
+
1429
+ #. @context: Link to theming documentation on Custom CSS page
1430
+ #: src/ui/dash/appearance/AdvancedContent.tsx
1431
+ msgid "Theming guide"
1432
+ msgstr "主题指南"
1433
+
1434
+ #. @context: Description for session management
1435
+ #: src/ui/dash/settings/SessionsContent.tsx
1436
+ msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
1437
+ msgstr "以下设备当前已登录到您的帐户。撤销任何您不认识的会话。"
1438
+
1439
+ #. @context: Generic fallback blog name in the delete-account confirmation phrase when the site name is unavailable
1440
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
1441
+ msgid "this blog"
1442
+ msgstr "此博客"
1443
+
1444
+ #. @context: Code Injection security warning headline
1445
+ #: src/ui/dash/appearance/CodeInjectionContent.tsx
1446
+ msgid "This code runs on every page of your site."
1447
+ msgstr "此代码将在您网站的每个页面上运行。"
1448
+
1449
+ #. @context: Help text for choosing whether /feed points to latest or featured posts
1450
+ #: src/ui/dash/settings/GeneralContent.tsx
1451
+ msgid "This controls what /feed returns."
1452
+ msgstr "这将控制 /feed 返回的内容。"
1453
+
1454
+ #. @context: Notice shown on hosted account settings explaining that password and hosted account controls live in the connected hosted auth provider
1455
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1456
+ msgid "This hosted site signs in through {providerLabel}. Manage password and hosted access there."
1457
+ msgstr "此托管站点通过 {providerLabel} 登录。请在那里管理密码和托管访问权限。"
1458
+
1459
+ #. @context: Help text for avatar upload
1460
+ #: src/ui/dash/settings/AvatarContent.tsx
1461
+ 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."
1462
+ msgstr "此图用于您的 favicon 和 apple-touch-icon。为获得最佳效果,请上传至少 512×512 像素、纯色背景的方形 PNG。"
1463
+
1464
+ #. @context: GitHub sync picker — confirmation card heading for foreign repos
1465
+ #: src/routes/dash/settings.tsx
1466
+ msgid "This repository already has commits"
1467
+ msgstr "该仓库已有提交"
1468
+
1469
+ #. @context: GitHub sync picker — heading above the foreign-repo confirmation
1470
+ #: src/routes/dash/settings.tsx
1471
+ msgid "This repository has existing content."
1472
+ msgstr "此仓库已有内容。"
1473
+
1474
+ #. @context: GitHub sync picker — blocking message when marker belongs to another site. Placeholder {host} is the other site's host.
1475
+ #: src/routes/dash/settings.tsx
1476
+ msgid "This repository is already backing up another Jant site ({host}). Pick a different repository."
1477
+ msgstr "此仓库已在为另一个 Jant 站点 ({host}) 进行备份。请选择其他仓库。"
1478
+
1479
+ #. @context: GitHub sync picker — shown when the selected repo's marker matches this site
1480
+ #: src/routes/dash/settings.tsx
1481
+ msgid "This repository is already backing up this site."
1482
+ msgstr "此仓库已在备份此站点。"
1483
+
1484
+ #. @context: Warning text on account deletion page
1485
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
1486
+ 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."
1487
+ msgstr "这将永久删除您所有的数据 — 帖子、媒体、合集、设置和您的账户。您的博客将重置为初始设置状态。此操作不可撤销。"
1488
+
1489
+ #. @context: Settings form field
1490
+ #: src/ui/dash/settings/GeneralContent.tsx
1491
+ msgid "Time Zone"
1492
+ msgstr "时区"
1493
+
1494
+ #. @context: Description for built-in nav toggles
1495
+ #: src/ui/dash/appearance/NavigationContent.tsx
1496
+ msgid "Toggle built-in navigation items. Their order controls what shows in the header and which feed the homepage opens first."
1497
+ msgstr "切换内置导航项。它们的顺序决定页眉显示的内容以及首页显示哪个视图。"
1498
+
1499
+ #. @context: Button to expand/collapse nav item edit
1500
+ #: src/ui/dash/appearance/NavigationContent.tsx
1501
+ msgid "Toggle edit panel"
1502
+ msgstr "切换编辑面板"
1503
+
1504
+ #. @context: API token name field label
1505
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1506
+ msgid "Token name"
1507
+ msgstr "令牌名称"
1508
+
1509
+ #. @context: API tokens description
1510
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1511
+ msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
1512
+ msgstr "令牌让您无需登录即可从脚本、快捷方式和其他工具访问 API。"
1513
+
1514
+ #. @context: GitHub sync picker — retry button
1515
+ #: src/routes/dash/settings.tsx
1516
+ msgid "Try again"
1517
+ msgstr "重试"
1518
+
1519
+ #. @context: Intro text on the settings home page below the title
1520
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1521
+ msgid "Tune how your site looks, reads, and runs."
1522
+ msgstr "调整你的网站的外观、阅读体验和运行方式。"
1523
+
1524
+ #. @context: Custom URL form field
1525
+ #: src/routes/dash/custom-urls.tsx
1526
+ msgid "Type"
1527
+ msgstr "类型"
1528
+
1529
+ #. @context: GitHub sync picker — label above the typed-confirmation input
1530
+ #: src/routes/dash/settings.tsx
1531
+ msgid "Type {repo} to confirm"
1532
+ msgstr "输入 {repo} 以确认"
1533
+
1534
+ #. @context: Instruction to type confirmation phrase before deletion
1535
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
1536
+ msgid "Type the following phrase to confirm:"
1537
+ msgstr "输入以下短语以确认:"
1538
+
1539
+ #. @context: GitHub sync picker — hint telling the user typing will search the full list
1540
+ #: src/routes/dash/settings.tsx
1541
+ msgid "type to search all"
1542
+ msgstr "输入以搜索全部"
1543
+
1544
+ #. @context: Settings item description for font theme
1545
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1546
+ msgid "Typography choices and reading texture"
1547
+ msgstr "排版选项与阅读质感"
1548
+
1549
+ #. @context: Fallback label when session device can't be identified
1550
+ #: src/ui/dash/settings/SessionsContent.tsx
1551
+ msgid "Unknown device"
1552
+ msgstr "未知设备"
1553
+
1554
+ #. @context: Settings item description for password change
1555
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1556
+ msgid "Update the password you use to sign in"
1557
+ msgstr "更新您用于登录的密码"
1558
+
1559
+ #. @context: Button to upload avatar image
1560
+ #: src/ui/dash/settings/AvatarContent.tsx
1561
+ msgid "Upload Avatar"
1562
+ msgstr "上传头像"
1563
+
1564
+ #. @context: Error toast when avatar upload fails
1565
+ #: src/routes/dash/settings.tsx
1566
+ msgid "Upload didn't go through. Try again in a moment."
1567
+ msgstr "上传未成功。请稍后再试。"
1568
+
1569
+ #. @context: Error message when avatar upload fails
1570
+ #: src/ui/dash/settings/AvatarContent.tsx
1571
+ msgid "Upload failed. Please try again."
1572
+ msgstr "上传失败。请重试。"
1573
+
1574
+ #. @context: Avatar upload button text while uploading
1575
+ #: src/ui/dash/settings/AvatarContent.tsx
1576
+ msgid "Uploading..."
1577
+ msgstr "正在上传..."
1578
+
1579
+ #. @context: Nav item URL field
1580
+ #: src/ui/dash/appearance/NavigationContent.tsx
1581
+ msgid "URL"
1582
+ msgstr "网址"
1583
+
1584
+ #. @context: Heading for API token usage examples
1585
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1586
+ msgid "Usage"
1587
+ msgstr "用法"
1588
+
1589
+ #. @context: Help text for the explicit latest and featured feed URLs
1590
+ #: src/ui/dash/settings/GeneralContent.tsx
1591
+ msgid "Use these when you want a feed URL that never changes."
1592
+ msgstr "当你想要一个永远不变的订阅源 URL 时使用它们。"
1593
+
1594
+ #. @context: Description for choosing featured posts as the main RSS feed
1595
+ #: src/ui/dash/settings/GeneralContent.tsx
1596
+ msgid "Uses featured posts for /feed."
1597
+ msgstr "将精选文章用于 /feed。"
1598
+
1599
+ #. @context: Description for choosing the latest posts as the main RSS feed
1600
+ #: src/ui/dash/settings/GeneralContent.tsx
1601
+ msgid "Uses the latest public posts for /feed."
1602
+ msgstr "为 /feed 使用最新的公开帖子。"
1603
+
1604
+ #. @context: Button to view item on public site
1605
+ #: src/ui/dash/ActionButtons.tsx
1606
+ msgid "View"
1607
+ msgstr "查看"
1608
+
1609
+ #. @context: Prefix before Custom CSS link on color theme page
1610
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1611
+ msgid "Want more control?"
1612
+ msgstr "想要更多控制?"
1613
+
1614
+ #. @context: GitHub sync picker — hint under the create-on-github entry. Placeholder {name} is the suggested repo name.
1615
+ #: src/routes/dash/settings.tsx
1616
+ msgid "We'll prefill the name {name}. The list refreshes on return."
1617
+ msgstr "我们会预先填充名称 {name}。返回时列表会刷新。"
1618
+
1619
+ #. @context: Description for backup and restore documentation link in account settings
1620
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1621
+ msgid "When to use site export, database backups, and recovery drills."
1622
+ msgstr "何时使用站点导出、数据库备份和恢复演练。"