@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,2327 @@
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/cli\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: Hosted SSO expired link message segment shown after the hosted control-plane link
17
+ #: src/routes/auth/hosted-sso-expired-page.tsx
18
+ msgid " and try again."
19
+ msgstr ""
20
+
21
+ #. @context: Link showing count of hidden thread posts between curated posts
22
+ #: src/ui/feed/CuratedThreadPreview.tsx
23
+ msgid "{count, plural, one {# hidden post} other {# hidden posts}}"
24
+ msgstr ""
25
+
26
+ #. @context: Link showing count of hidden thread posts between root and latest
27
+ #: src/ui/feed/ThreadPreview.tsx
28
+ msgid "{count, plural, one {# more post} other {# more posts}}"
29
+ msgstr ""
30
+
31
+ #. @context: Search results count - multiple
32
+ #: src/ui/pages/SearchPage.tsx
33
+ msgid "{count, plural, one {Found # result} other {Found # results}}"
34
+ msgstr ""
35
+
36
+ #. @context: Placeholder for the custom collections link URL
37
+ #: src/ui/shared/collection-management-labels.ts
38
+ msgid "/archive?format=quote or https://example.com"
39
+ msgstr ""
40
+
41
+ #. @context: Compose collection trigger label when multiple collections selected. %name% is the first collection name, %count% is how many more
42
+ #: src/ui/compose/ComposeDialog.tsx
43
+ msgid "%name% + %count% more"
44
+ msgstr ""
45
+
46
+ #. @context: Add alt text label under attachment thumbnail
47
+ #: src/ui/compose/ComposeDialog.tsx
48
+ msgid "+ ALT"
49
+ msgstr ""
50
+
51
+ #. @context: Search snippet prefix on sample page
52
+ #: src/ui/pages/ThemeSamplePage.tsx
53
+ msgid "A calmer accent makes"
54
+ msgstr ""
55
+
56
+ #. @context: Excerpt for the sample note post
57
+ #. @context: Plain-text summary for the sample note post
58
+ #: src/ui/pages/ThemeSamplePage.tsx
59
+ #: src/ui/pages/ThemeSamplePage.tsx
60
+ msgid "A calmer, warmer accent makes the default theme feel quieter and more intentional."
61
+ msgstr ""
62
+
63
+ #. @context: Section title for the usage guidance section on the brand asset page
64
+ #: src/ui/pages/BrandPage.tsx
65
+ msgid "A few simple rules."
66
+ msgstr ""
67
+
68
+ #. @context: Second paragraph on the sample detail article
69
+ #: src/ui/pages/ThemeSamplePage.tsx
70
+ msgid "A good default accent in Jant should feel like editorial structure, not product branding. That means links, emphasis, and thread cues can be visible without turning the page into UI chrome."
71
+ msgstr ""
72
+
73
+ #. @context: Excerpt for the sample detail article
74
+ #. @context: Plain-text body fallback for the sample detail article
75
+ #. @context: Plain-text summary for the sample detail article
76
+ #: src/ui/pages/ThemeSamplePage.tsx
77
+ #: src/ui/pages/ThemeSamplePage.tsx
78
+ #: src/ui/pages/ThemeSamplePage.tsx
79
+ msgid "A long-form article sample for checking the default palette in a true reading context."
80
+ msgstr ""
81
+
82
+ #. @context: Subheading in the sample detail article
83
+ #: src/ui/pages/ThemeSamplePage.tsx
84
+ msgid "A practical checklist"
85
+ msgstr ""
86
+
87
+ #. @context: Excerpt for the sample quote post
88
+ #. @context: Plain-text summary for the sample quote post
89
+ #: src/ui/pages/ThemeSamplePage.tsx
90
+ #: src/ui/pages/ThemeSamplePage.tsx
91
+ msgid "A quote card for judging accent color against softer, citation-heavy content."
92
+ msgstr ""
93
+
94
+ #. @context: Description for the square logo PNG asset card
95
+ #: src/ui/pages/BrandPage.tsx
96
+ msgid "A ready-made 1:1 PNG for decks, mockups, directories, and other square placements."
97
+ msgstr ""
98
+
99
+ #. @context: Excerpt for the sample link post
100
+ #. @context: Plain-text summary for the sample link post
101
+ #: src/ui/pages/ThemeSamplePage.tsx
102
+ #: src/ui/pages/ThemeSamplePage.tsx
103
+ msgid "A reference link for checking whether the accent feels editorial instead of promotional."
104
+ msgstr ""
105
+
106
+ #. @context: Description for the brand pack card
107
+ #: src/ui/pages/BrandPage.tsx
108
+ msgid "A single ZIP with the main logo, reverse logo, square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and social preview image."
109
+ msgstr ""
110
+
111
+ #. @context: Main sample article title
112
+ #: src/ui/pages/ThemeSamplePage.tsx
113
+ msgid "A softer blue feels more like ink than product chrome."
114
+ msgstr ""
115
+
116
+ #. @context: Thread helper text on sample page
117
+ #: src/ui/pages/ThemeSamplePage.tsx
118
+ msgid "Accent should feel present, not loud."
119
+ msgstr ""
120
+
121
+ #. @context: Add more attachments button
122
+ #: src/ui/compose/ComposeDialog.tsx
123
+ msgid "Add"
124
+ msgstr ""
125
+
126
+ #. @context: Helper text for the custom collections link form on collections page
127
+ #: src/ui/shared/collection-management-labels.ts
128
+ msgid "Add a custom shortcut to any page or site."
129
+ msgstr ""
130
+
131
+ #. @context: Validation message when creating or editing a custom collections link
132
+ #: src/ui/shared/collection-management-labels.ts
133
+ msgid "Add a label and URL."
134
+ msgstr ""
135
+
136
+ #. @context: Description for the RSS system navigation toggle
137
+ #: src/ui/shared/navigation-labels.ts
138
+ msgid "Add a link to your main RSS feed. Change what /feed returns in General."
139
+ msgstr ""
140
+
141
+ #. @context: Compose link title required error
142
+ #: src/ui/compose/ComposeDialog.tsx
143
+ msgid "Add a title before posting this link."
144
+ msgstr ""
145
+
146
+ #. @context: Compose link URL required error
147
+ #: src/ui/compose/ComposeDialog.tsx
148
+ msgid "Add a URL before posting this link."
149
+ msgstr ""
150
+
151
+ #. @context: Alt text panel title
152
+ #: src/ui/compose/ComposeDialog.tsx
153
+ msgid "Add alt text"
154
+ msgstr ""
155
+
156
+ #. @context: Action to create a new collection from compose
157
+ #: src/ui/compose/ComposeDialog.tsx
158
+ msgid "Add Collection"
159
+ msgstr ""
160
+
161
+ #. @context: Primary action to add a custom link on collections page
162
+ #: src/ui/shared/collection-management-labels.ts
163
+ msgid "Add Link"
164
+ msgstr ""
165
+
166
+ #. @context: Archive filter - collection dropdown default
167
+ #: src/ui/pages/ArchivePage.tsx
168
+ msgid "All collections"
169
+ msgstr ""
170
+
171
+ #. @context: Archive filter - all formats select option
172
+ #: src/ui/pages/ArchivePage.tsx
173
+ msgid "All formats"
174
+ msgstr ""
175
+
176
+ #. @context: Archive filter - all visibility select option
177
+ #: src/ui/pages/ArchivePage.tsx
178
+ msgid "All visibility"
179
+ msgstr ""
180
+
181
+ #. @context: Archive filter - year dropdown default
182
+ #: src/ui/pages/ArchivePage.tsx
183
+ msgid "All years"
184
+ msgstr ""
185
+
186
+ #. @context: Alt text for the sample detail article image
187
+ #: src/ui/pages/ThemeSamplePage.tsx
188
+ msgid "An abstract editorial layout in warm paper colors"
189
+ msgstr ""
190
+
191
+ #. @context: Sample link post body suffix on the theme sample page
192
+ #: src/ui/pages/ThemeSamplePage.tsx
193
+ msgid "and checking whether the accent is guiding attention or pulling too hard."
194
+ msgstr ""
195
+
196
+ #. @context: Compose publish settings help text for public visibility
197
+ #: src/ui/compose/ComposeDialog.tsx
198
+ msgid "Appears in Latest."
199
+ msgstr ""
200
+
201
+ #. @context: Title for the apple touch icon asset card
202
+ #: src/ui/pages/BrandPage.tsx
203
+ msgid "Apple touch icon"
204
+ msgstr ""
205
+
206
+ #. @context: Archive feed title prefix
207
+ #. @context: Archive page title
208
+ #. @context: Inactive nav link label on sample page
209
+ #: src/routes/pages/archive.tsx
210
+ #: src/ui/pages/ArchivePage.tsx
211
+ #: src/ui/pages/ThemeSamplePage.tsx
212
+ msgid "Archive"
213
+ msgstr ""
214
+
215
+ #. @context: Built-in navigation label for the archive page
216
+ #: src/ui/shared/navigation-labels.ts
217
+ msgctxt "nav"
218
+ msgid "Archive"
219
+ msgstr ""
220
+
221
+ #. @context: Section heading for the detail article sample on the theme sample page
222
+ #: src/ui/pages/ThemeSamplePage.tsx
223
+ msgid "Article detail page"
224
+ msgstr ""
225
+
226
+ #. @context: Archive media filter - audio
227
+ #: src/ui/pages/ArchivePage.tsx
228
+ msgid "Audio"
229
+ msgstr ""
230
+
231
+ #. @context: Error toast when authentication secret is missing from server config
232
+ #: src/routes/auth/setup.tsx
233
+ msgid "Auth secret is missing. Check your environment variables."
234
+ msgstr ""
235
+
236
+ #. @context: Error toast when authentication system is unavailable
237
+ #: src/routes/auth/signin.tsx
238
+ msgid "Authentication isn't set up. Check your server config."
239
+ msgstr ""
240
+
241
+ #. @context: Compose quote author placeholder
242
+ #: src/ui/compose/ComposeDialog.tsx
243
+ msgid "Author (optional)"
244
+ msgstr ""
245
+
246
+ #. @context: Theme mode option on sample page
247
+ #: src/ui/pages/ThemeSamplePage.tsx
248
+ msgid "Auto"
249
+ msgstr ""
250
+
251
+ #. @context: Compose summary shown near the submit controls when a manual custom link is cleared
252
+ #: src/ui/compose/ComposeDialog.tsx
253
+ msgid "Auto link"
254
+ msgstr ""
255
+
256
+ #. @context: Usage label for the circle tile asset card
257
+ #: src/ui/pages/BrandPage.tsx
258
+ msgid "Avatar-ready"
259
+ msgstr ""
260
+
261
+ #. @context: Link back from the new post page
262
+ #: src/ui/pages/ComposePage.tsx
263
+ msgid "Back"
264
+ msgstr ""
265
+
266
+ #. @context: Sample note post body suffix on the theme sample page
267
+ #: src/ui/pages/ThemeSamplePage.tsx
268
+ msgid "before deciding whether the accent is carrying too much product energy."
269
+ msgstr ""
270
+
271
+ #. @context: Browser page title for the public brand asset page
272
+ #. @context: Eyebrow on the public brand asset page
273
+ #: src/routes/pages/brand.tsx
274
+ #: src/ui/pages/BrandPage.tsx
275
+ msgid "Brand assets"
276
+ msgstr ""
277
+
278
+ #. @context: Title for the brand pack card
279
+ #. @context: Title for the brand pack card
280
+ #: src/ui/pages/BrandPage.tsx
281
+ #: src/ui/pages/BrandPage.tsx
282
+ msgid "Brand pack"
283
+ msgstr ""
284
+
285
+ #. @context: Asset keyword on the public brand asset page
286
+ #. @context: Title for the brand tile asset card
287
+ #: src/ui/pages/BrandPage.tsx
288
+ #: src/ui/pages/BrandPage.tsx
289
+ msgid "Brand tile"
290
+ msgstr ""
291
+
292
+ #. @context: Breadcrumb label on collection detail page
293
+ #. @context: Breadcrumb label on collection editor page
294
+ #: src/ui/pages/CollectionEditorPage.tsx
295
+ #: src/ui/pages/CollectionPage.tsx
296
+ msgid "Breadcrumb"
297
+ msgstr ""
298
+
299
+ #. @context: Secondary hero button label to jump to the file list
300
+ #: src/ui/pages/BrandPage.tsx
301
+ msgid "Browse files"
302
+ msgstr ""
303
+
304
+ #. @context: Usage label for the favicon asset card
305
+ #: src/ui/pages/BrandPage.tsx
306
+ msgid "Browser tab"
307
+ msgstr ""
308
+
309
+ #. @context: Usage label for the brand tile asset card
310
+ #: src/ui/pages/BrandPage.tsx
311
+ msgid "Built-in background"
312
+ msgstr ""
313
+
314
+ #. @context: Sample note post second paragraph on the theme sample page
315
+ #: src/ui/pages/ThemeSamplePage.tsx
316
+ msgid "Buttons can stay steady, but links, thread markers, and subtle emphasis should feel closer to ink on paper than dashboard chrome."
317
+ msgstr ""
318
+
319
+ #. @context: Button label to dismiss a dialog or action
320
+ #. @context: Button to cancel form
321
+ #. @context: Close compose dialog
322
+ #. @context: Confirm close action sheet - cancel and return to editor
323
+ #: src/ui/compose/ComposeDialog.tsx
324
+ #: src/ui/compose/ComposeDialog.tsx
325
+ #: src/ui/shared/collection-management-labels.ts
326
+ #: src/ui/shared/collection-management-labels.ts
327
+ msgid "Cancel"
328
+ msgstr ""
329
+
330
+ #. @context: Compose custom slug helper while checking whether a manual slug is available
331
+ #: src/ui/compose/ComposeDialog.tsx
332
+ msgid "Checking link..."
333
+ msgstr ""
334
+
335
+ #. @context: Password reset page description
336
+ #: src/routes/auth/reset.tsx
337
+ msgid "Choose a new password."
338
+ msgstr ""
339
+
340
+ #. @context: Body copy for the logo downloads section
341
+ #: src/ui/pages/BrandPage.tsx
342
+ msgid "Choose the standard logo for most placements and the reverse logo when you need more contrast."
343
+ msgstr ""
344
+
345
+ #. @context: Guidance body on the brand asset page
346
+ #: src/ui/pages/BrandPage.tsx
347
+ msgid "Choose the standard logo for websites, docs, directories, and editorial layouts."
348
+ msgstr ""
349
+
350
+ #. @context: Compose publish settings validation error when a future publish date is selected
351
+ #: src/ui/compose/ComposeDialog.tsx
352
+ msgid "Choose today or an earlier date, or leave it blank to publish now."
353
+ msgstr ""
354
+
355
+ #. @context: Asset keyword on the public brand asset page
356
+ #. @context: Title for the circle tile asset card
357
+ #: src/ui/pages/BrandPage.tsx
358
+ #: src/ui/pages/BrandPage.tsx
359
+ msgid "Circle tile"
360
+ msgstr ""
361
+
362
+ #. @context: Archive filter button label to clear the active filter
363
+ #. @context: Archive filter button label to clear the active filter
364
+ #: src/ui/pages/ArchivePage.tsx
365
+ #: src/ui/pages/ArchivePage.tsx
366
+ msgid "Clear filter"
367
+ msgstr ""
368
+
369
+ #. @context: Close drawer button label
370
+ #: src/ui/layouts/SiteLayout.tsx
371
+ msgid "Close menu"
372
+ msgstr ""
373
+
374
+ #. @context: Singular collection count label
375
+ #. @context: Singular collection count label
376
+ #. @context: Singular collection count label
377
+ #. @context: Singular collection count label on an aggregate collection page
378
+ #: src/ui/pages/CollectionPage.tsx
379
+ #: src/ui/pages/CollectionsPage.tsx
380
+ #: src/ui/shared/CollectionsManager.tsx
381
+ #: src/ui/shared/CollectionsManager.tsx
382
+ msgid "collection"
383
+ msgstr ""
384
+
385
+ #. @context: Compose collection selector trigger label
386
+ #: src/ui/compose/ComposeDialog.tsx
387
+ msgid "Collection"
388
+ msgstr ""
389
+
390
+ #. @context: Toast shown after creating a collection
391
+ #: src/ui/shared/collection-management-labels.ts
392
+ msgid "Collection created."
393
+ msgstr ""
394
+
395
+ #. @context: Toast after deleting a collection
396
+ #: src/ui/shared/collection-management-labels.ts
397
+ msgid "Collection deleted."
398
+ msgstr ""
399
+
400
+ #. @context: Collection form field
401
+ #: src/ui/shared/collection-management-labels.ts
402
+ msgid "Collection link"
403
+ msgstr ""
404
+
405
+ #. @context: Toast after reordering collections
406
+ #: src/ui/shared/CollectionsManager.tsx
407
+ msgid "Collection order updated."
408
+ msgstr ""
409
+
410
+ #. @context: Toast after saving a collection
411
+ #: src/ui/shared/collection-management-labels.ts
412
+ msgid "Collection saved."
413
+ msgstr ""
414
+
415
+ #. @context: Plural collection count label
416
+ #. @context: Plural collection count label
417
+ #. @context: Plural collection count label
418
+ #. @context: Plural collection count label on an aggregate collection page
419
+ #: src/ui/pages/CollectionPage.tsx
420
+ #: src/ui/pages/CollectionsPage.tsx
421
+ #: src/ui/shared/CollectionsManager.tsx
422
+ #: src/ui/shared/CollectionsManager.tsx
423
+ msgid "collections"
424
+ msgstr ""
425
+
426
+ #. @context: Breadcrumb link to collections page
427
+ #. @context: Breadcrumb link to collections page
428
+ #. @context: Collections page heading
429
+ #. @context: Collections page heading
430
+ #. @context: Inactive nav link label on sample page
431
+ #: src/ui/pages/CollectionEditorPage.tsx
432
+ #: src/ui/pages/CollectionPage.tsx
433
+ #: src/ui/pages/CollectionsPage.tsx
434
+ #: src/ui/pages/ThemeSamplePage.tsx
435
+ #: src/ui/shared/CollectionsManager.tsx
436
+ msgid "Collections"
437
+ msgstr ""
438
+
439
+ #. @context: Built-in navigation label for the collections page
440
+ #: src/ui/shared/navigation-labels.ts
441
+ msgctxt "nav"
442
+ msgid "Collections"
443
+ msgstr ""
444
+
445
+ #. @context: Alert title on theme sample page
446
+ #: src/ui/pages/ThemeSamplePage.tsx
447
+ msgid "Color check"
448
+ msgstr ""
449
+
450
+ #. @context: Page heading when viewing multiple collections together
451
+ #. @context: Page title when viewing multiple collections together
452
+ #: src/routes/pages/collection.tsx
453
+ #: src/ui/pages/CollectionPage.tsx
454
+ msgid "Combined Collections"
455
+ msgstr ""
456
+
457
+ #. @context: Inline link label in the sample detail article
458
+ #: src/ui/pages/ThemeSamplePage.tsx
459
+ msgid "Compare it against the theme controls"
460
+ msgstr ""
461
+
462
+ #. @context: Setup form submit button
463
+ #: src/routes/auth/setup.tsx
464
+ msgid "Complete Setup"
465
+ msgstr ""
466
+
467
+ #. @context: Password reset form field
468
+ #: src/routes/auth/reset.tsx
469
+ msgid "Confirm Password"
470
+ msgstr ""
471
+
472
+ #. @context: Controls section heading on sample page
473
+ #: src/ui/pages/ThemeSamplePage.tsx
474
+ msgid "Controls"
475
+ msgstr ""
476
+
477
+ #. @context: Error toast when account creation fails
478
+ #. @context: Error toast when account creation fails
479
+ #. @context: Error toast when account creation fails
480
+ #: src/routes/auth/setup.tsx
481
+ #: src/routes/auth/setup.tsx
482
+ #: src/routes/auth/setup.tsx
483
+ msgid "Couldn't create your account. Check the details and try again."
484
+ msgstr ""
485
+
486
+ #. @context: Toast shown when edit mode fails to load a post
487
+ #: src/ui/compose/ComposeDialog.tsx
488
+ msgid "Couldn't load this post. Try again."
489
+ msgstr ""
490
+
491
+ #. @context: Toast when publish fails and post is auto-saved as draft
492
+ #: src/ui/compose/ComposeDialog.tsx
493
+ msgid "Couldn't publish. Saved as draft."
494
+ msgstr ""
495
+
496
+ #. @context: Toast when save fails
497
+ #: src/ui/shared/collection-management-labels.ts
498
+ msgid "Couldn't save. Try again in a moment."
499
+ msgstr ""
500
+
501
+ #. @context: Compose collection combobox empty state when no collections exist
502
+ #: src/ui/compose/ComposeDialog.tsx
503
+ msgid "Create a collection to get started."
504
+ msgstr ""
505
+
506
+ #. @context: Setup page description
507
+ #: src/routes/auth/setup.tsx
508
+ msgid "Create your admin account."
509
+ msgstr ""
510
+
511
+ #. @context: Thread item label on sample page
512
+ #: src/ui/pages/ThemeSamplePage.tsx
513
+ msgid "Current post"
514
+ msgstr ""
515
+
516
+ #. @context: Compose publish settings slug section label
517
+ #: src/ui/compose/ComposeDialog.tsx
518
+ msgid "Custom link"
519
+ msgstr ""
520
+
521
+ #. @context: Destructive badge label on sample page
522
+ #: src/ui/pages/ThemeSamplePage.tsx
523
+ msgid "Danger"
524
+ msgstr ""
525
+
526
+ #. @context: Theme mode option on sample page
527
+ #: src/ui/pages/ThemeSamplePage.tsx
528
+ msgid "Dark"
529
+ msgstr ""
530
+
531
+ #. @context: Usage label for the reverse logo asset card
532
+ #. @context: Usage label for the reverse logo card
533
+ #: src/ui/pages/BrandPage.tsx
534
+ #: src/ui/pages/BrandPage.tsx
535
+ msgid "Dark backgrounds"
536
+ msgstr ""
537
+
538
+ #. @context: Badge label on sample page
539
+ #. @context: Usage label for the default logo asset card
540
+ #: src/ui/pages/BrandPage.tsx
541
+ #: src/ui/pages/ThemeSamplePage.tsx
542
+ msgid "Default"
543
+ msgstr ""
544
+
545
+ #. @context: Usage label for the default logo card
546
+ #: src/ui/pages/BrandPage.tsx
547
+ msgid "Default logo"
548
+ msgstr ""
549
+
550
+ #. @context: Inline link label in the sample link post body
551
+ #: src/ui/pages/ThemeSamplePage.tsx
552
+ msgid "default note sample"
553
+ msgstr ""
554
+
555
+ #. @context: Description for the social preview image asset card
556
+ #: src/ui/pages/BrandPage.tsx
557
+ msgid "Default preview image for social shares and link unfurls."
558
+ msgstr ""
559
+
560
+ #. @context: Delete collection action
561
+ #: src/ui/shared/collection-management-labels.ts
562
+ msgid "Delete"
563
+ msgstr ""
564
+
565
+ #. @context: Draft item action
566
+ #: src/ui/compose/ComposeDialog.tsx
567
+ msgid "Delete Draft"
568
+ msgstr ""
569
+
570
+ #. @context: Confirm dialog for deleting a collection
571
+ #: src/ui/shared/collection-management-labels.ts
572
+ msgid "Delete this collection permanently? Posts inside won't be removed."
573
+ msgstr ""
574
+
575
+ #. @context: Hint shown on signin page when demo credentials are pre-filled
576
+ #: src/routes/auth/signin.tsx
577
+ msgid "Demo credentials are pre-filled — hit Sign In to continue."
578
+ msgstr ""
579
+
580
+ #. @context: Alt text textarea placeholder
581
+ #: src/ui/compose/ComposeDialog.tsx
582
+ msgid "Describe this for people with visual impairments..."
583
+ msgstr ""
584
+
585
+ #. @context: Collection form field
586
+ #. @context: Field label for a custom collections link description
587
+ #: src/ui/shared/collection-management-labels.ts
588
+ #: src/ui/shared/collection-management-labels.ts
589
+ msgid "Description (optional)"
590
+ msgstr ""
591
+
592
+ #. @context: Collection label on theme sample content card
593
+ #. @context: Collection tag on sample note post
594
+ #. @context: Collection tag on the sample detail article
595
+ #: src/ui/pages/ThemeSamplePage.tsx
596
+ #: src/ui/pages/ThemeSamplePage.tsx
597
+ #: src/ui/pages/ThemeSamplePage.tsx
598
+ msgid "Design"
599
+ msgstr ""
600
+
601
+ #. @context: Title for the sample detail article on the theme sample page
602
+ #: src/ui/pages/ThemeSamplePage.tsx
603
+ msgid "Designing a calmer default accent for Jant"
604
+ msgstr ""
605
+
606
+ #. @context: Confirm close action sheet - discard changes button for editing published post
607
+ #. @context: More menu - discard post
608
+ #: src/ui/compose/ComposeDialog.tsx
609
+ #: src/ui/compose/ComposeDialog.tsx
610
+ msgid "Discard"
611
+ msgstr ""
612
+
613
+ #. @context: Confirm dialog shown before discarding attached text edits
614
+ #: src/ui/compose/ComposeDialog.tsx
615
+ msgid "Discard changes?"
616
+ msgstr ""
617
+
618
+ #. @context: Label for a divider item while organizing collections
619
+ #: src/ui/shared/CollectionsManager.tsx
620
+ msgid "Divider"
621
+ msgstr ""
622
+
623
+ #. @context: Guidance body on the brand asset page
624
+ #: src/ui/pages/BrandPage.tsx
625
+ msgid "Do not recolor, stretch, rotate, outline, or add effects to the logo."
626
+ msgstr ""
627
+
628
+ #. @context: Confirm close action sheet subtitle when editing a published post
629
+ #: src/ui/compose/ComposeDialog.tsx
630
+ msgid "Do you want to publish your changes or discard them?"
631
+ msgstr ""
632
+
633
+ #. @context: Compose publish settings help text for posts hidden from Latest
634
+ #: src/ui/compose/ComposeDialog.tsx
635
+ msgid "Doesn't appear in Latest. Still appears in collections you add it to."
636
+ msgstr ""
637
+
638
+ #. @context: Confirm action sheet - discard text attachment changes button
639
+ #. @context: Confirm close action sheet - discard button
640
+ #: src/ui/compose/ComposeDialog.tsx
641
+ #: src/ui/compose/ComposeDialog.tsx
642
+ msgid "Don't save"
643
+ msgstr ""
644
+
645
+ #. @context: Button to exit collection organize mode
646
+ #. @context: Close attached text panel
647
+ #. @context: Compose button - update existing post
648
+ #. @context: Primary button in the quick-create collection dialog
649
+ #: src/ui/compose/ComposeDialog.tsx
650
+ #: src/ui/compose/ComposeDialog.tsx
651
+ #: src/ui/shared/collection-management-labels.ts
652
+ #: src/ui/shared/CollectionsManager.tsx
653
+ msgid "Done"
654
+ msgstr ""
655
+
656
+ #. @context: Primary hero button label for the brand pack ZIP
657
+ #: src/ui/pages/BrandPage.tsx
658
+ msgid "Download Brand Pack"
659
+ msgstr ""
660
+
661
+ #. @context: Download button label for a non-SVG brand asset
662
+ #: src/ui/pages/BrandPage.tsx
663
+ msgid "Download file"
664
+ msgstr ""
665
+
666
+ #. @context: Meta description for the public brand asset page
667
+ #: src/routes/pages/brand.tsx
668
+ msgid "Download official Jant logos, icons, and preview assets."
669
+ msgstr ""
670
+
671
+ #. @context: Download button label for a PNG logo asset
672
+ #: src/ui/pages/BrandPage.tsx
673
+ msgid "Download PNG"
674
+ msgstr ""
675
+
676
+ #. @context: Download button label for a logo asset
677
+ #: src/ui/pages/BrandPage.tsx
678
+ msgid "Download SVG"
679
+ msgstr ""
680
+
681
+ #. @context: Hero title on the public brand asset page
682
+ #: src/ui/pages/BrandPage.tsx
683
+ msgid "Download the official Jant logo, icons, and preview files."
684
+ msgstr ""
685
+
686
+ #. @context: Toast after draft deletion
687
+ #: src/ui/compose/ComposeDialog.tsx
688
+ msgid "Draft deleted."
689
+ msgstr ""
690
+
691
+ #. @context: Toast shown when a local draft is restored on compose open
692
+ #: src/ui/compose/ComposeDialog.tsx
693
+ msgid "Draft restored."
694
+ msgstr ""
695
+
696
+ #. @context: Toast after saving a draft post
697
+ #. @context: Toast after saving a draft post
698
+ #. @context: Toast after saving a draft post
699
+ #: src/routes/compose.tsx
700
+ #: src/routes/compose.tsx
701
+ #: src/routes/compose.tsx
702
+ msgid "Draft saved."
703
+ msgstr ""
704
+
705
+ #. @context: Drafts panel title
706
+ #: src/ui/compose/ComposeDialog.tsx
707
+ msgid "Drafts"
708
+ msgstr ""
709
+
710
+ #. @context: Helper text shown while organizing collections
711
+ #: src/ui/shared/CollectionsManager.tsx
712
+ msgid "Drag collections, links, and dividers into the order you want."
713
+ msgstr ""
714
+
715
+ #. @context: Per-collection edit action
716
+ #. @context: Per-collection edit action
717
+ #. @context: Per-collection edit action
718
+ #: src/ui/pages/CollectionEditorPage.tsx
719
+ #: src/ui/pages/CollectionEditorPage.tsx
720
+ #: src/ui/shared/collection-management-labels.ts
721
+ msgid "Edit"
722
+ msgstr ""
723
+
724
+ #. @context: Compose action to reopen the custom link field from the action row summary
725
+ #: src/ui/compose/ComposeDialog.tsx
726
+ msgid "Edit custom link"
727
+ msgstr ""
728
+
729
+ #. @context: Button to manually edit the collection link
730
+ #: src/ui/shared/collection-management-labels.ts
731
+ msgid "Edit link"
732
+ msgstr ""
733
+
734
+ #. @context: Compose dialog header title in edit mode
735
+ #: src/ui/compose/ComposeDialog.tsx
736
+ msgid "Edit post"
737
+ msgstr ""
738
+
739
+ #. @context: Compose action to reopen the publish date field from the action row summary
740
+ #: src/ui/compose/ComposeDialog.tsx
741
+ msgid "Edit publish date"
742
+ msgstr ""
743
+
744
+ #. @context: Sample link post title on the theme sample page
745
+ #: src/ui/pages/ThemeSamplePage.tsx
746
+ msgid "Editorial interfaces worth borrowing from"
747
+ msgstr ""
748
+
749
+ #. @context: Setup/signin form field - email
750
+ #. @context: Setup/signin form field - email
751
+ #: src/routes/auth/setup.tsx
752
+ #: src/routes/auth/signin.tsx
753
+ msgid "Email"
754
+ msgstr ""
755
+
756
+ #. @context: Compose toolbar - emoji picker tooltip
757
+ #: src/ui/compose/ComposeDialog.tsx
758
+ msgid "Emoji"
759
+ msgstr ""
760
+
761
+ #. @context: Compose publish settings validation error for an invalid publish date
762
+ #: src/ui/compose/ComposeDialog.tsx
763
+ msgid "Enter a valid date."
764
+ msgstr ""
765
+
766
+ #. @context: Compose URL field error message
767
+ #: src/ui/compose/ComposeDialog.tsx
768
+ msgid "Enter a valid URL starting with http://, https://, or mailto:."
769
+ msgstr ""
770
+
771
+ #. @context: Plural entry count label
772
+ #. @context: Plural entry count label
773
+ #: src/ui/shared/CollectionDirectory.tsx
774
+ #: src/ui/shared/CollectionsManager.tsx
775
+ msgid "entries"
776
+ msgstr ""
777
+
778
+ #. @context: Singular entry count label
779
+ #. @context: Singular entry count label
780
+ #: src/ui/shared/CollectionDirectory.tsx
781
+ #: src/ui/shared/CollectionsManager.tsx
782
+ msgid "entry"
783
+ msgstr ""
784
+
785
+ #. @context: Usage label for the brand pack card
786
+ #: src/ui/pages/BrandPage.tsx
787
+ msgid "Everything in one download"
788
+ msgstr ""
789
+
790
+ #. @context: Section title for the quick-start panel on the brand asset page
791
+ #: src/ui/pages/BrandPage.tsx
792
+ msgid "Everything most people need is in one ZIP."
793
+ msgstr ""
794
+
795
+ #. @context: Intro paragraph on the public brand asset page
796
+ #: src/ui/pages/BrandPage.tsx
797
+ msgid "Everything on this page is ready to use for articles, launch posts, directories, and product coverage."
798
+ msgstr ""
799
+
800
+ #. @context: Compose fullscreen - button tooltip to collapse back to normal editor
801
+ #: src/ui/compose/ComposeDialog.tsx
802
+ msgid "Exit fullscreen"
803
+ msgstr ""
804
+
805
+ #. @context: Title for the favicon asset card
806
+ #: src/ui/pages/BrandPage.tsx
807
+ msgid "Favicon"
808
+ msgstr ""
809
+
810
+ #. @context: Archive visibility filter - featured posts
811
+ #. @context: Browser page title for the featured feed
812
+ #. @context: Browser page title for the featured feed
813
+ #. @context: Inactive browse tab label on sample page
814
+ #. @context: Page heading for the featured posts feed
815
+ #. @context: Tooltip and screen reader label for the featured-post icon in the post footer when no featured date is available
816
+ #: src/routes/pages/featured.tsx
817
+ #: src/routes/pages/home.tsx
818
+ #: src/ui/pages/ArchivePage.tsx
819
+ #: src/ui/pages/FeaturedPage.tsx
820
+ #: src/ui/pages/ThemeSamplePage.tsx
821
+ #: src/ui/shared/PostFooter.tsx
822
+ msgid "Featured"
823
+ msgstr ""
824
+
825
+ #. @context: Built-in navigation label for the featured feed
826
+ #: src/ui/shared/navigation-labels.ts
827
+ msgctxt "nav"
828
+ msgid "Featured"
829
+ msgstr ""
830
+
831
+ #. @context: Tooltip and screen reader label for the featured-post icon in the post footer
832
+ #: src/ui/shared/PostFooter.tsx
833
+ msgid "Featured on {date} at {time}"
834
+ msgstr ""
835
+
836
+ #. @context: Atom feed title suffix for the featured posts feed
837
+ #. @context: Feed autodiscovery title for the featured posts feed
838
+ #: src/routes/feed/feed.ts
839
+ #: src/ui/layouts/BaseLayout.tsx
840
+ msgid "Featured posts"
841
+ msgstr ""
842
+
843
+ #. @context: Built-in navigation label for feed
844
+ #: src/ui/shared/navigation-labels.ts
845
+ msgctxt "nav"
846
+ msgid "Feed"
847
+ msgstr ""
848
+
849
+ #. @context: Search snippet suffix on sample page
850
+ #: src/ui/pages/ThemeSamplePage.tsx
851
+ msgid "feel deliberate instead of washed out."
852
+ msgstr ""
853
+
854
+ #. @context: Table cell in the sample detail article
855
+ #: src/ui/pages/ThemeSamplePage.tsx
856
+ msgid "Feel editorial and slightly quieter."
857
+ msgstr ""
858
+
859
+ #. @context: Sample quote attribution title on the theme sample page
860
+ #: src/ui/pages/ThemeSamplePage.tsx
861
+ msgid "Field Notes on Interface Tone"
862
+ msgstr ""
863
+
864
+ #. @context: Input value on sample page
865
+ #: src/ui/pages/ThemeSamplePage.tsx
866
+ msgid "Field notes on quiet design"
867
+ msgstr ""
868
+
869
+ #. @context: Error when file storage is not set up
870
+ #: src/routes/api/upload.ts
871
+ msgid "File storage isn't set up. Check your server config."
872
+ msgstr ""
873
+
874
+ #. @context: Toast after successful file upload
875
+ #: src/routes/api/upload.ts
876
+ msgid "File uploaded."
877
+ msgstr ""
878
+
879
+ #. @context: Archive media filter - files/documents
880
+ #: src/ui/pages/ArchivePage.tsx
881
+ msgid "Files"
882
+ msgstr ""
883
+
884
+ #. @context: Paragraph mentioning code on the sample detail article
885
+ #: src/ui/pages/ThemeSamplePage.tsx
886
+ msgid "For the same reason, inline code should stay neutral. Something like theme.siteAccent = soften(green, 12%) should not suddenly become the loudest thing on the page."
887
+ msgstr ""
888
+
889
+ #. @context: Compose dialog - open fullscreen editor
890
+ #: src/ui/compose/ComposeDialog.tsx
891
+ msgid "Fullscreen"
892
+ msgstr ""
893
+
894
+ #. @context: Compose publish settings slug summary when no custom slug is set
895
+ #: src/ui/compose/ComposeDialog.tsx
896
+ msgid "Generate automatically"
897
+ msgstr ""
898
+
899
+ #. @context: Compose custom slug helper while generating a suggested slug
900
+ #: src/ui/compose/ComposeDialog.tsx
901
+ msgid "Generating a link..."
902
+ msgstr ""
903
+
904
+ #. @context: Compose link title placeholder
905
+ #: src/ui/compose/ComposeDialog.tsx
906
+ msgid "Give it a title..."
907
+ msgstr ""
908
+
909
+ #. @context: Table cell in the sample detail article
910
+ #: src/ui/pages/ThemeSamplePage.tsx
911
+ msgid "Guide the eye without taking over the layout."
912
+ msgstr ""
913
+
914
+ #. @context: Section kicker for the usage guidance section on the brand asset page
915
+ #: src/ui/pages/BrandPage.tsx
916
+ msgid "Guidelines"
917
+ msgstr ""
918
+
919
+ #. @context: Usage label for the square tile asset card
920
+ #: src/ui/pages/BrandPage.tsx
921
+ msgid "Hard edge"
922
+ msgstr ""
923
+
924
+ #. @context: Bullet item in the sample detail article
925
+ #: src/ui/pages/ThemeSamplePage.tsx
926
+ msgid "Headings should keep their hierarchy even when the accent gets softer."
927
+ msgstr ""
928
+
929
+ #. @context: Hint text in alt text panel
930
+ #: src/ui/compose/ComposeDialog.tsx
931
+ msgid "Helps screen readers describe the image"
932
+ msgstr ""
933
+
934
+ #. @context: Archive visibility filter for posts hidden from Latest
935
+ #. @context: Compose publish settings visibility option
936
+ #: src/ui/compose/ComposeDialog.tsx
937
+ #: src/ui/pages/ArchivePage.tsx
938
+ msgid "Hidden from Latest"
939
+ msgstr ""
940
+
941
+ #. @context: Compose dropdown option for hiding a post from the Latest view
942
+ #: src/ui/compose/ComposeDialog.tsx
943
+ msgid "Hide from Latest"
944
+ msgstr ""
945
+
946
+ #. @context: Collection sort order option
947
+ #. @context: Collection sort order option
948
+ #: src/ui/pages/CollectionPage.tsx
949
+ #: src/ui/shared/collection-management-labels.ts
950
+ msgid "Highest rated"
951
+ msgstr ""
952
+
953
+ #. @context: Description for the apple touch icon asset card
954
+ #: src/ui/pages/BrandPage.tsx
955
+ msgid "Home screen icon for iPhone and iPad shortcuts."
956
+ msgstr ""
957
+
958
+ #. @context: Section kicker for the icon and preview downloads section
959
+ #: src/ui/pages/BrandPage.tsx
960
+ msgid "Icons and previews"
961
+ msgstr ""
962
+
963
+ #. @context: Closing paragraph on the sample detail article
964
+ #: src/ui/pages/ThemeSamplePage.tsx
965
+ msgid "If this article still feels like a page you want to keep reading, the palette is probably close."
966
+ msgstr ""
967
+
968
+ #. @context: Alert body on theme sample page
969
+ #: src/ui/pages/ThemeSamplePage.tsx
970
+ msgid "If this page feels too branded, the first place to soften is the default theme’s site accent, not the border or body text."
971
+ msgstr ""
972
+
973
+ #. @context: Archive media filter - images
974
+ #: src/ui/pages/ArchivePage.tsx
975
+ msgid "Images"
976
+ msgstr ""
977
+
978
+ #. @context: Accessible label for the asset keyword list on the public brand page
979
+ #: src/ui/pages/BrandPage.tsx
980
+ msgid "Included assets"
981
+ msgstr ""
982
+
983
+ #. @context: Label above the included collections list on an aggregate collection page
984
+ #: src/ui/pages/CollectionPage.tsx
985
+ msgid "Includes"
986
+ msgstr ""
987
+
988
+ #. @context: Site accent sample badge
989
+ #: src/ui/pages/ThemeSamplePage.tsx
990
+ msgid "Inline emphasis"
991
+ msgstr ""
992
+
993
+ #. @context: Table cell in the sample detail article
994
+ #: src/ui/pages/ThemeSamplePage.tsx
995
+ msgid "Inline link"
996
+ msgstr ""
997
+
998
+ #. @context: Sample note summary suffix on the theme sample page
999
+ #: src/ui/pages/ThemeSamplePage.tsx
1000
+ msgid "instead of judging it as an isolated swatch."
1001
+ msgstr ""
1002
+
1003
+ #. @context: Sample quote text on the theme sample page
1004
+ #: src/ui/pages/ThemeSamplePage.tsx
1005
+ msgid "Interfaces for reading should guide the eye, not keep asking for attention."
1006
+ msgstr ""
1007
+
1008
+ #. @context: Usage label for the apple touch icon asset card
1009
+ #: src/ui/pages/BrandPage.tsx
1010
+ msgid "iOS home screen"
1011
+ msgstr ""
1012
+
1013
+ #. @context: test fixture — not shipped anywhere
1014
+ #. @context: test fixture — not shipped anywhere
1015
+ #: src/i18n/__tests__/fallback.test.ts
1016
+ #: src/i18n/__tests__/fallback.test.ts
1017
+ msgid "Jant fallback canary string"
1018
+ msgstr ""
1019
+
1020
+ #. @context: Accessible label for the Jant logo mark
1021
+ #: src/ui/pages/BrandPage.tsx
1022
+ msgid "Jant logo"
1023
+ msgstr ""
1024
+
1025
+ #. @context: Body paragraph on the theme sample page
1026
+ #: src/ui/pages/ThemeSamplePage.tsx
1027
+ msgid "Jant looks best when the accent feels editorial. Buttons can stay sturdy, but inline emphasis should feel like a pen mark, not a dashboard highlight."
1028
+ msgstr ""
1029
+
1030
+ #. @context: Active nav link label on sample page
1031
+ #: src/ui/pages/ThemeSamplePage.tsx
1032
+ msgid "Journal"
1033
+ msgstr ""
1034
+
1035
+ #. @context: Guidance title on the brand asset page
1036
+ #: src/ui/pages/BrandPage.tsx
1037
+ msgid "Keep the artwork unchanged."
1038
+ msgstr ""
1039
+
1040
+ #. @context: Collection slug validation error for links that are too long
1041
+ #: src/ui/shared/collection-management-labels.ts
1042
+ msgid "Keep this link under 200 characters."
1043
+ msgstr ""
1044
+
1045
+ #. @context: Field label for a custom collections link
1046
+ #: src/ui/shared/collection-management-labels.ts
1047
+ msgid "Label"
1048
+ msgstr ""
1049
+
1050
+ #. @context: Placeholder for an optional divider label in collections organize mode
1051
+ #: src/ui/shared/CollectionsManager.tsx
1052
+ msgid "Label (optional)"
1053
+ msgstr ""
1054
+
1055
+ #. @context: Active browse tab label on sample page
1056
+ #. @context: Browser page title for the latest feed
1057
+ #. @context: Browser page title for the latest feed
1058
+ #. @context: Page heading for the latest posts feed
1059
+ #: src/routes/pages/home.tsx
1060
+ #: src/routes/pages/latest.tsx
1061
+ #: src/ui/pages/HomePage.tsx
1062
+ #: src/ui/pages/ThemeSamplePage.tsx
1063
+ msgid "Latest"
1064
+ msgstr ""
1065
+
1066
+ #. @context: Built-in navigation label for the latest feed
1067
+ #: src/ui/shared/navigation-labels.ts
1068
+ msgctxt "nav"
1069
+ msgid "Latest"
1070
+ msgstr ""
1071
+
1072
+ #. @context: Atom feed title suffix for the latest public posts feed
1073
+ #. @context: Feed autodiscovery title for the latest public posts feed
1074
+ #: src/routes/feed/feed.ts
1075
+ #: src/ui/layouts/BaseLayout.tsx
1076
+ msgid "Latest posts"
1077
+ msgstr ""
1078
+
1079
+ #. @context: Compose publish settings slug help text
1080
+ #: src/ui/compose/ComposeDialog.tsx
1081
+ msgid "Leave blank to generate one automatically."
1082
+ msgstr ""
1083
+
1084
+ #. @context: Compose publish settings help text for publish date
1085
+ #: src/ui/compose/ComposeDialog.tsx
1086
+ msgid "Leave blank to publish now. Use an earlier date when importing older posts."
1087
+ msgstr ""
1088
+
1089
+ #. @context: Theme mode option on sample page
1090
+ #: src/ui/pages/ThemeSamplePage.tsx
1091
+ msgid "Light"
1092
+ msgstr ""
1093
+
1094
+ #. @context: Compose format tab
1095
+ #. @context: Default type label for a custom link on the collections directory when no description is provided
1096
+ #. @context: Placeholder for the custom collections link description editor, shown on the directory when no description is provided
1097
+ #. @context: Post format label - link
1098
+ #: src/ui/compose/ComposeDialog.tsx
1099
+ #: src/ui/pages/ArchivePage.tsx
1100
+ #: src/ui/shared/collection-management-labels.ts
1101
+ #: src/ui/shared/CollectionDirectory.tsx
1102
+ msgid "Link"
1103
+ msgstr ""
1104
+
1105
+ #. @context: Toast after creating a custom collections link
1106
+ #: src/ui/shared/collection-management-labels.ts
1107
+ msgid "Link added."
1108
+ msgstr ""
1109
+
1110
+ #. @context: Toast after deleting a custom collections link
1111
+ #: src/ui/shared/collection-management-labels.ts
1112
+ msgid "Link removed."
1113
+ msgstr ""
1114
+
1115
+ #. @context: Description for the archive system navigation toggle
1116
+ #: src/ui/shared/navigation-labels.ts
1117
+ msgid "Link to the post archive"
1118
+ msgstr ""
1119
+
1120
+ #. @context: Description for the collections system navigation toggle
1121
+ #: src/ui/shared/navigation-labels.ts
1122
+ msgid "Link to your collections page"
1123
+ msgstr ""
1124
+
1125
+ #. @context: Description for the featured system navigation toggle
1126
+ #: src/ui/shared/navigation-labels.ts
1127
+ msgid "Link to your featured posts. If it comes before Latest, the homepage opens here."
1128
+ msgstr ""
1129
+
1130
+ #. @context: Description for the latest system navigation toggle
1131
+ #: src/ui/shared/navigation-labels.ts
1132
+ msgid "Link to your latest posts. If it comes before Featured, the homepage opens here."
1133
+ msgstr ""
1134
+
1135
+ #. @context: Toast after saving a custom collections link
1136
+ #: src/ui/shared/collection-management-labels.ts
1137
+ msgid "Link updated."
1138
+ msgstr ""
1139
+
1140
+ #. @context: Archive feed title segment for link format filter
1141
+ #. @context: Post format label plural - links
1142
+ #: src/routes/pages/archive.tsx
1143
+ #: src/ui/pages/ArchivePage.tsx
1144
+ msgid "Links"
1145
+ msgstr ""
1146
+
1147
+ #. @context: Bullet item in the sample detail article
1148
+ #: src/ui/pages/ThemeSamplePage.tsx
1149
+ msgid "Links should read clearly without glowing against the page."
1150
+ msgstr ""
1151
+
1152
+ #. @context: Inline link label in the sample note post body
1153
+ #. @context: Inline link label in the sample note summary
1154
+ #: src/ui/pages/ThemeSamplePage.tsx
1155
+ #: src/ui/pages/ThemeSamplePage.tsx
1156
+ msgid "live theme controls"
1157
+ msgstr ""
1158
+
1159
+ #. @context: Pagination button - load more items
1160
+ #: src/ui/shared/Pagination.tsx
1161
+ msgid "Load more"
1162
+ msgstr ""
1163
+
1164
+ #. @context: Status text while opening the post editor
1165
+ #: src/ui/compose/ComposeDialog.tsx
1166
+ msgid "Loading post..."
1167
+ msgstr ""
1168
+
1169
+ #. @context: Asset keyword on the public brand asset page
1170
+ #. @context: Asset keyword on the public brand asset page
1171
+ #. @context: Title for the default logo asset card
1172
+ #. @context: Title for the default logo card
1173
+ #: src/ui/pages/BrandPage.tsx
1174
+ #: src/ui/pages/BrandPage.tsx
1175
+ #: src/ui/pages/BrandPage.tsx
1176
+ #: src/ui/pages/BrandPage.tsx
1177
+ msgid "Logo"
1178
+ msgstr ""
1179
+
1180
+ #. @context: Section kicker for the logo downloads section
1181
+ #: src/ui/pages/BrandPage.tsx
1182
+ msgid "Logos"
1183
+ msgstr ""
1184
+
1185
+ #. @context: Ordered list item in the sample detail article
1186
+ #: src/ui/pages/ThemeSamplePage.tsx
1187
+ msgid "Look at the footer metadata last, to make sure the accent is not fighting the typography."
1188
+ msgstr ""
1189
+
1190
+ #. @context: Feed autodiscovery title for the site's main feed
1191
+ #: src/ui/layouts/BaseLayout.tsx
1192
+ msgid "Main feed"
1193
+ msgstr ""
1194
+
1195
+ #. @context: Date label on theme sample content card
1196
+ #: src/ui/pages/ThemeSamplePage.tsx
1197
+ msgid "March 15"
1198
+ msgstr ""
1199
+
1200
+ #. @context: Compose toolbar - media tooltip
1201
+ #: src/ui/compose/ComposeDialog.tsx
1202
+ msgid "Media"
1203
+ msgstr ""
1204
+
1205
+ #. @context: Hamburger menu button label
1206
+ #: src/ui/layouts/SiteLayout.tsx
1207
+ msgid "Menu"
1208
+ msgstr ""
1209
+
1210
+ #. @context: Built-in navigation label for the More dropdown
1211
+ #: src/ui/shared/navigation-labels.ts
1212
+ msgctxt "nav"
1213
+ msgid "More"
1214
+ msgstr ""
1215
+
1216
+ #. @context: Aria-label for collections page more button
1217
+ #. @context: Post menu trigger label in post actions
1218
+ #: src/ui/shared/collection-management-labels.ts
1219
+ #: src/ui/shared/PostFooter.tsx
1220
+ msgid "More actions"
1221
+ msgstr ""
1222
+
1223
+ #. @context: Helper text in the quick-create collection dialog
1224
+ #: src/ui/shared/collection-management-labels.ts
1225
+ msgid "More options are available after you create it."
1226
+ msgstr ""
1227
+
1228
+ #. @context: Secondary badge label on sample page
1229
+ #. @context: Token label on sample page
1230
+ #: src/ui/pages/ThemeSamplePage.tsx
1231
+ #: src/ui/pages/ThemeSamplePage.tsx
1232
+ msgid "Muted"
1233
+ msgstr ""
1234
+
1235
+ #. @context: Collection title placeholder
1236
+ #: src/ui/shared/collection-management-labels.ts
1237
+ msgid "My Collection"
1238
+ msgstr ""
1239
+
1240
+ #. @context: Navigation section heading on sample page
1241
+ #: src/ui/pages/ThemeSamplePage.tsx
1242
+ msgid "Navigation and reading states"
1243
+ msgstr ""
1244
+
1245
+ #. @context: Button to create a collection from collections page
1246
+ #. @context: Page title for new collection
1247
+ #. @context: Page title for new collection
1248
+ #: src/ui/pages/CollectionEditorPage.tsx
1249
+ #: src/ui/pages/CollectionEditorPage.tsx
1250
+ #: src/ui/shared/CollectionsManager.tsx
1251
+ msgid "New Collection"
1252
+ msgstr ""
1253
+
1254
+ #. @context: Menu action to create a divider on collections page
1255
+ #: src/ui/shared/CollectionsManager.tsx
1256
+ msgid "New Divider"
1257
+ msgstr ""
1258
+
1259
+ #. @context: Menu action to create a custom link on collections page
1260
+ #: src/ui/shared/CollectionsManager.tsx
1261
+ msgid "New Link"
1262
+ msgstr ""
1263
+
1264
+ #. @context: Password reset form field
1265
+ #: src/routes/auth/reset.tsx
1266
+ msgid "New Password"
1267
+ msgstr ""
1268
+
1269
+ #. @context: Browser page title for the new post page
1270
+ #. @context: Collection page quick compose button aria label
1271
+ #. @context: Mobile floating action button label to open the compose dialog
1272
+ #. @context: Page title for the new post page
1273
+ #: src/routes/pages/new.tsx
1274
+ #: src/ui/layouts/SiteLayout.tsx
1275
+ #: src/ui/pages/CollectionPage.tsx
1276
+ #: src/ui/pages/ComposePage.tsx
1277
+ msgid "New post"
1278
+ msgstr ""
1279
+
1280
+ #. @context: Compose dialog header title when composing a thread
1281
+ #: src/ui/compose/ComposeDialog.tsx
1282
+ msgid "New Thread"
1283
+ msgstr ""
1284
+
1285
+ #. @context: Collection sort order option
1286
+ #. @context: Collection sort order option
1287
+ #: src/ui/pages/CollectionPage.tsx
1288
+ #: src/ui/shared/collection-management-labels.ts
1289
+ msgid "Newest first"
1290
+ msgstr ""
1291
+
1292
+ #. @context: Pagination button - next page
1293
+ #. @context: Pagination button - next page
1294
+ #. @context: Pagination next label on sample page
1295
+ #: src/ui/pages/ThemeSamplePage.tsx
1296
+ #: src/ui/shared/Pagination.tsx
1297
+ #: src/ui/shared/Pagination.tsx
1298
+ msgid "Next"
1299
+ msgstr ""
1300
+
1301
+ #. @context: Compose collection combobox empty state when search has no results
1302
+ #: src/ui/compose/ComposeDialog.tsx
1303
+ msgid "No collections match that search. Try a different name."
1304
+ msgstr ""
1305
+
1306
+ #. @context: Empty state message on collections page
1307
+ #. @context: Empty state message on collections page
1308
+ #. @context: Empty state message on collections page
1309
+ #: src/ui/pages/CollectionsPage.tsx
1310
+ #: src/ui/shared/CollectionDirectory.tsx
1311
+ #: src/ui/shared/CollectionsManager.tsx
1312
+ msgid "No collections yet. Start one to organize posts by topic."
1313
+ msgstr ""
1314
+
1315
+ #. @context: Drafts panel empty state
1316
+ #: src/ui/compose/ComposeDialog.tsx
1317
+ msgid "No drafts yet. Save a draft to find it here."
1318
+ msgstr ""
1319
+
1320
+ #. @context: Error when no file was selected for upload
1321
+ #: src/routes/api/upload.ts
1322
+ msgid "No file selected. Choose a file to upload."
1323
+ msgstr ""
1324
+
1325
+ #. @context: Search empty results
1326
+ #: src/ui/pages/SearchPage.tsx
1327
+ msgid "No results. Try different keywords."
1328
+ msgstr ""
1329
+
1330
+ #. @context: Archive empty state with filters applied
1331
+ #: src/ui/pages/ArchivePage.tsx
1332
+ msgid "No threads match these filters. Try adjusting your selection or clear all filters."
1333
+ msgstr ""
1334
+
1335
+ #. @context: Compose format tab
1336
+ #. @context: Post format label - note
1337
+ #. @context: Post format label on theme sample content card
1338
+ #: src/ui/compose/ComposeDialog.tsx
1339
+ #: src/ui/pages/ArchivePage.tsx
1340
+ #: src/ui/pages/ThemeSamplePage.tsx
1341
+ msgid "Note"
1342
+ msgstr ""
1343
+
1344
+ #. @context: Inline link label in the sample quote commentary
1345
+ #: src/ui/pages/ThemeSamplePage.tsx
1346
+ msgid "note treatment"
1347
+ msgstr ""
1348
+
1349
+ #. @context: Archive feed title segment for note format filter
1350
+ #. @context: Post format label plural - notes
1351
+ #: src/routes/pages/archive.tsx
1352
+ #: src/ui/pages/ArchivePage.tsx
1353
+ msgid "Notes"
1354
+ msgstr ""
1355
+
1356
+ #. @context: Empty state message on home page
1357
+ #: src/ui/pages/HomePage.tsx
1358
+ msgid "Nothing here yet."
1359
+ msgstr ""
1360
+
1361
+ #. @context: Empty state message on an aggregate collection page
1362
+ #: src/ui/pages/CollectionPage.tsx
1363
+ msgid "Nothing here yet. Add posts to one of these collections to fill this view."
1364
+ msgstr ""
1365
+
1366
+ #. @context: Empty state message on featured page
1367
+ #: src/ui/pages/FeaturedPage.tsx
1368
+ msgid "Nothing in Featured yet. Mark a post as featured to show it here."
1369
+ msgstr ""
1370
+
1371
+ #. @context: Collection sort order option
1372
+ #. @context: Collection sort order option
1373
+ #: src/ui/pages/CollectionPage.tsx
1374
+ #: src/ui/shared/collection-management-labels.ts
1375
+ msgid "Oldest first"
1376
+ msgstr ""
1377
+
1378
+ #. @context: Compose publish settings help text for private visibility
1379
+ #: src/ui/compose/ComposeDialog.tsx
1380
+ msgid "Only visible when signed in."
1381
+ msgstr ""
1382
+
1383
+ #. @context: Ordered list item in the sample detail article
1384
+ #: src/ui/pages/ThemeSamplePage.tsx
1385
+ msgid "Open a few links and check whether they still feel native to the page."
1386
+ msgstr ""
1387
+
1388
+ #. @context: Accessible label for the external-link icon in the post footer
1389
+ #: src/ui/shared/PostFooter.tsx
1390
+ msgid "Open external link"
1391
+ msgstr ""
1392
+
1393
+ #. @context: Button label to open a raw brand asset in the browser
1394
+ #: src/ui/pages/BrandPage.tsx
1395
+ msgid "Open raw asset"
1396
+ msgstr ""
1397
+
1398
+ #. @context: Button label to open the raw PNG asset in the browser
1399
+ #: src/ui/pages/BrandPage.tsx
1400
+ msgid "Open raw PNG"
1401
+ msgstr ""
1402
+
1403
+ #. @context: Button label to open the raw SVG asset in the browser
1404
+ #: src/ui/pages/BrandPage.tsx
1405
+ msgid "Open raw SVG"
1406
+ msgstr ""
1407
+
1408
+ #. @context: Menu action to organize collections
1409
+ #: src/ui/shared/CollectionsManager.tsx
1410
+ msgid "Organize"
1411
+ msgstr ""
1412
+
1413
+ #. @context: Outline badge label on sample page
1414
+ #: src/ui/pages/ThemeSamplePage.tsx
1415
+ msgid "Outline"
1416
+ msgstr ""
1417
+
1418
+ #. @context: Setup/signin form field - password
1419
+ #. @context: Setup/signin form field - password
1420
+ #: src/routes/auth/setup.tsx
1421
+ #: src/routes/auth/signin.tsx
1422
+ msgid "Password"
1423
+ msgstr ""
1424
+
1425
+ #. @context: Error shown when password reset is blocked in demo mode
1426
+ #: src/routes/auth/reset.tsx
1427
+ msgid "Password changes are off in demo mode. Sign in with the shared demo credentials."
1428
+ msgstr ""
1429
+
1430
+ #. @context: Attached text placeholder
1431
+ #: src/ui/compose/ComposeDialog.tsx
1432
+ msgid ""
1433
+ "Paste a long article, AI response, or any text...\n"
1434
+ "\n"
1435
+ "Markdown formatting will be preserved."
1436
+ msgstr ""
1437
+
1438
+ #. @context: Compose link URL placeholder
1439
+ #: src/ui/compose/ComposeDialog.tsx
1440
+ msgid "Paste a URL..."
1441
+ msgstr ""
1442
+
1443
+ #. @context: Compose button - publish post
1444
+ #: src/ui/compose/ComposeDialog.tsx
1445
+ msgid "Post"
1446
+ msgstr ""
1447
+
1448
+ #. @context: Compose dropdown option - publish post visible only when logged in
1449
+ #: src/ui/compose/ComposeDialog.tsx
1450
+ msgid "Post as Private"
1451
+ msgstr ""
1452
+
1453
+ #. @context: Compose publish button for posts hidden from Latest
1454
+ #: src/ui/compose/ComposeDialog.tsx
1455
+ msgid "Post hidden"
1456
+ msgstr ""
1457
+
1458
+ #. @context: Compose publish button for private visibility
1459
+ #: src/ui/compose/ComposeDialog.tsx
1460
+ msgid "Post privately"
1461
+ msgstr ""
1462
+
1463
+ #. @context: Hover hint for the homepage compose shortcut
1464
+ #: src/ui/compose/ComposePrompt.tsx
1465
+ msgid "Press N to write"
1466
+ msgstr ""
1467
+
1468
+ #. @context: Ghost button label on sample page
1469
+ #: src/ui/pages/ThemeSamplePage.tsx
1470
+ msgid "Preview"
1471
+ msgstr ""
1472
+
1473
+ #. @context: Pagination button - previous page
1474
+ #. @context: Pagination button - previous page
1475
+ #. @context: Pagination previous label on sample page
1476
+ #: src/ui/pages/ThemeSamplePage.tsx
1477
+ #: src/ui/shared/Pagination.tsx
1478
+ #: src/ui/shared/Pagination.tsx
1479
+ msgid "Previous"
1480
+ msgstr ""
1481
+
1482
+ #. @context: Token label on sample page
1483
+ #: src/ui/pages/ThemeSamplePage.tsx
1484
+ msgid "Primary"
1485
+ msgstr ""
1486
+
1487
+ #. @context: Table cell in the sample detail article
1488
+ #: src/ui/pages/ThemeSamplePage.tsx
1489
+ msgid "Primary button"
1490
+ msgstr ""
1491
+
1492
+ #. @context: Description for the default logo asset card
1493
+ #: src/ui/pages/BrandPage.tsx
1494
+ msgid "Primary Jant logo for websites, docs, press coverage, and editorial layouts."
1495
+ msgstr ""
1496
+
1497
+ #. @context: Section title for the logo downloads section
1498
+ #: src/ui/pages/BrandPage.tsx
1499
+ msgid "Primary logo files"
1500
+ msgstr ""
1501
+
1502
+ #. @context: Archive visibility filter - private posts
1503
+ #. @context: Compose publish settings visibility option
1504
+ #: src/ui/compose/ComposeDialog.tsx
1505
+ #: src/ui/pages/ArchivePage.tsx
1506
+ msgid "Private"
1507
+ msgstr ""
1508
+
1509
+ #. @context: Archive visibility filter - public posts
1510
+ #. @context: Compose publish settings visibility option
1511
+ #: src/ui/compose/ComposeDialog.tsx
1512
+ #: src/ui/pages/ArchivePage.tsx
1513
+ msgid "Public"
1514
+ msgstr ""
1515
+
1516
+ #. @context: Confirm close action sheet - publish update button for editing published post
1517
+ #. @context: Primary button label on sample page
1518
+ #: src/ui/compose/ComposeDialog.tsx
1519
+ #: src/ui/pages/ThemeSamplePage.tsx
1520
+ msgid "Publish"
1521
+ msgstr ""
1522
+
1523
+ #. @context: Compose summary shown near the submit controls when an edited post no longer has a custom publish date
1524
+ #: src/ui/compose/ComposeDialog.tsx
1525
+ msgid "Publish now"
1526
+ msgstr ""
1527
+
1528
+ #. @context: Compose publish settings panel title
1529
+ #: src/ui/compose/ComposeDialog.tsx
1530
+ msgid "Publish settings"
1531
+ msgstr ""
1532
+
1533
+ #. @context: Compose publish settings publish date section label
1534
+ #: src/ui/compose/ComposeDialog.tsx
1535
+ msgid "Published on"
1536
+ msgstr ""
1537
+
1538
+ #. @context: Tooltip text for the archive tile published timestamp
1539
+ #. @context: Tooltip text for the published timestamp in post metadata
1540
+ #: src/ui/pages/ArchivePage.tsx
1541
+ #: src/ui/shared/PostFooter.tsx
1542
+ msgid "Published on {date} at {time}"
1543
+ msgstr ""
1544
+
1545
+ #. @context: Toast shown after successful deferred publish
1546
+ #: src/ui/compose/ComposeDialog.tsx
1547
+ msgid "Published!"
1548
+ msgstr ""
1549
+
1550
+ #. @context: Search highlight text on sample page
1551
+ #: src/ui/pages/ThemeSamplePage.tsx
1552
+ msgid "quiet design"
1553
+ msgstr ""
1554
+
1555
+ #. @context: Muted sample label
1556
+ #: src/ui/pages/ThemeSamplePage.tsx
1557
+ msgid "Quiet metadata"
1558
+ msgstr ""
1559
+
1560
+ #. @context: Compose format tab
1561
+ #. @context: Post format label - quote
1562
+ #: src/ui/compose/ComposeDialog.tsx
1563
+ #: src/ui/pages/ArchivePage.tsx
1564
+ msgid "Quote"
1565
+ msgstr ""
1566
+
1567
+ #. @context: Bullet item in the sample detail article
1568
+ #: src/ui/pages/ThemeSamplePage.tsx
1569
+ msgid "Quoted or highlighted passages should feel like annotations, not warnings."
1570
+ msgstr ""
1571
+
1572
+ #. @context: Archive feed title segment for quote format filter
1573
+ #. @context: Placeholder for the custom collections link label
1574
+ #. @context: Post format label plural - quotes
1575
+ #: src/routes/pages/archive.tsx
1576
+ #: src/ui/pages/ArchivePage.tsx
1577
+ #: src/ui/shared/collection-management-labels.ts
1578
+ msgid "Quotes"
1579
+ msgstr ""
1580
+
1581
+ #. @context: Compose toolbar - rate tooltip
1582
+ #: src/ui/compose/ComposeDialog.tsx
1583
+ msgid "Rate"
1584
+ msgstr ""
1585
+
1586
+ #. @context: Ordered list item in the sample detail article
1587
+ #: src/ui/pages/ThemeSamplePage.tsx
1588
+ msgid "Read the page from top to bottom without looking at the swatches."
1589
+ msgstr ""
1590
+
1591
+ #. @context: Inline link label on sample page
1592
+ #: src/ui/pages/ThemeSamplePage.tsx
1593
+ msgid "Read the palette as content first"
1594
+ msgstr ""
1595
+
1596
+ #. @context: Collection tag on sample quote post
1597
+ #: src/ui/pages/ThemeSamplePage.tsx
1598
+ msgid "Reading"
1599
+ msgstr ""
1600
+
1601
+ #. @context: Section heading for real post component samples on the theme sample page
1602
+ #: src/ui/pages/ThemeSamplePage.tsx
1603
+ msgid "Real post components"
1604
+ msgstr ""
1605
+
1606
+ #. @context: Collection tag on sample link post
1607
+ #: src/ui/pages/ThemeSamplePage.tsx
1608
+ msgid "References"
1609
+ msgstr ""
1610
+
1611
+ #. @context: Button to remove an uploaded attachment in compose
1612
+ #: src/ui/compose/ComposeDialog.tsx
1613
+ msgid "Remove attachment"
1614
+ msgstr ""
1615
+
1616
+ #. @context: Tooltip for divider delete button
1617
+ #: src/ui/shared/CollectionsManager.tsx
1618
+ msgid "Remove Divider"
1619
+ msgstr ""
1620
+
1621
+ #. @context: Delete custom link action on collections page
1622
+ #: src/ui/shared/collection-management-labels.ts
1623
+ msgid "Remove Link"
1624
+ msgstr ""
1625
+
1626
+ #. @context: Confirm dialog for deleting a custom collections link
1627
+ #: src/ui/shared/collection-management-labels.ts
1628
+ msgid "Remove this link from Collections? The destination won't change."
1629
+ msgstr ""
1630
+
1631
+ #. @context: Archive tile label for multiple thread replies
1632
+ #: src/ui/pages/ArchivePage.tsx
1633
+ msgid "Replies"
1634
+ msgstr ""
1635
+
1636
+ #. @context: Archive tile label for a single thread reply
1637
+ #. @context: Compose button - reply to post
1638
+ #. @context: Reply button label in the post footer
1639
+ #: src/ui/compose/ComposeDialog.tsx
1640
+ #: src/ui/pages/ArchivePage.tsx
1641
+ #: src/ui/shared/PostFooter.tsx
1642
+ msgid "Reply"
1643
+ msgstr ""
1644
+
1645
+ #. @context: Compose publish settings switch label — reply without bumping thread to top of timeline
1646
+ #: src/ui/compose/ComposeDialog.tsx
1647
+ msgid "Reply quietly"
1648
+ msgstr ""
1649
+
1650
+ #. @context: Button to restore the automatically generated collection link from the title
1651
+ #. @context: Compose custom slug action that clears the manual slug and falls back to automatic generation
1652
+ #: src/ui/compose/ComposeDialog.tsx
1653
+ #: src/ui/shared/collection-management-labels.ts
1654
+ msgid "Reset link"
1655
+ msgstr ""
1656
+
1657
+ #. @context: Password reset form submit button
1658
+ #. @context: Password reset page heading
1659
+ #: src/routes/auth/reset.tsx
1660
+ #: src/routes/auth/reset.tsx
1661
+ msgid "Reset Password"
1662
+ msgstr ""
1663
+
1664
+ #. @context: Asset keyword on the public brand asset page
1665
+ #. @context: Title for the reverse logo asset card
1666
+ #. @context: Title for the reverse logo card
1667
+ #. @context: Title for the reverse logo card
1668
+ #: src/ui/pages/BrandPage.tsx
1669
+ #: src/ui/pages/BrandPage.tsx
1670
+ #: src/ui/pages/BrandPage.tsx
1671
+ #: src/ui/pages/BrandPage.tsx
1672
+ msgid "Reverse logo"
1673
+ msgstr ""
1674
+
1675
+ #. @context: Tooltip for the RSS feed link on a collection page
1676
+ #: src/ui/pages/CollectionPage.tsx
1677
+ msgid "RSS feed"
1678
+ msgstr ""
1679
+
1680
+ #. @context: Tooltip for the RSS feed button on the archive page
1681
+ #: src/ui/pages/ArchivePage.tsx
1682
+ msgid "RSS feed for this view"
1683
+ msgstr ""
1684
+
1685
+ #. @context: Button to save collection
1686
+ #. @context: Confirm action sheet - save text attachment changes button
1687
+ #. @context: Confirm close action sheet - save draft button
1688
+ #: src/ui/compose/ComposeDialog.tsx
1689
+ #: src/ui/compose/ComposeDialog.tsx
1690
+ #: src/ui/shared/collection-management-labels.ts
1691
+ msgid "Save"
1692
+ msgstr ""
1693
+
1694
+ #. @context: More menu - save draft
1695
+ #: src/ui/compose/ComposeDialog.tsx
1696
+ msgid "Save as draft"
1697
+ msgstr ""
1698
+
1699
+ #. @context: Header draft button tooltip
1700
+ #: src/ui/compose/ComposeDialog.tsx
1701
+ msgid "Save as Draft"
1702
+ msgstr ""
1703
+
1704
+ #. @context: Secondary button label on sample page
1705
+ #: src/ui/pages/ThemeSamplePage.tsx
1706
+ msgid "Save draft"
1707
+ msgstr ""
1708
+
1709
+ #. @context: Confirm action sheet title when closing text attachment editor
1710
+ #: src/ui/compose/ComposeDialog.tsx
1711
+ msgid "Save text attachment?"
1712
+ msgstr ""
1713
+
1714
+ #. @context: Filled primary button label
1715
+ #: src/ui/pages/ThemeSamplePage.tsx
1716
+ msgid "Save theme"
1717
+ msgstr ""
1718
+
1719
+ #. @context: Confirm action sheet subtitle when closing text attachment editor
1720
+ #: src/ui/compose/ComposeDialog.tsx
1721
+ msgid "Save these changes to the text attachment, discard them, or keep editing."
1722
+ msgstr ""
1723
+
1724
+ #. @context: Confirm close action sheet subtitle
1725
+ #: src/ui/compose/ComposeDialog.tsx
1726
+ msgid "Save to drafts to edit and post at a later time."
1727
+ msgstr ""
1728
+
1729
+ #. @context: Confirm close action sheet title
1730
+ #: src/ui/compose/ComposeDialog.tsx
1731
+ msgid "Save to drafts?"
1732
+ msgstr ""
1733
+
1734
+ #. @context: Search page title
1735
+ #. @context: Search submit button
1736
+ #: src/ui/pages/SearchPage.tsx
1737
+ #: src/ui/pages/SearchPage.tsx
1738
+ msgid "Search"
1739
+ msgstr ""
1740
+
1741
+ #. @context: Search icon link in browse nav
1742
+ #: src/ui/layouts/SiteLayout.tsx
1743
+ msgctxt "nav"
1744
+ msgid "Search"
1745
+ msgstr ""
1746
+
1747
+ #. @context: Search input placeholder
1748
+ #: src/ui/pages/SearchPage.tsx
1749
+ msgid "Search posts..."
1750
+ msgstr ""
1751
+
1752
+ #. @context: Search snippet label on sample page
1753
+ #: src/ui/pages/ThemeSamplePage.tsx
1754
+ msgid "Search snippet"
1755
+ msgstr ""
1756
+
1757
+ #. @context: Compose collection combobox search placeholder
1758
+ #: src/ui/compose/ComposeDialog.tsx
1759
+ msgid "Search..."
1760
+ msgstr ""
1761
+
1762
+ #. @context: Built-in navigation label for settings
1763
+ #: src/ui/shared/navigation-labels.ts
1764
+ msgctxt "nav"
1765
+ msgid "Settings"
1766
+ msgstr ""
1767
+
1768
+ #. @context: Usage label for the social preview image asset card
1769
+ #: src/ui/pages/BrandPage.tsx
1770
+ msgid "Shared links"
1771
+ msgstr ""
1772
+
1773
+ #. @context: Button to collapse expanded thread context
1774
+ #. @context: Collapse reply context
1775
+ #: src/ui/compose/ComposeDialog.tsx
1776
+ #: src/ui/feed/ThreadPreview.tsx
1777
+ msgid "Show less"
1778
+ msgstr ""
1779
+
1780
+ #. @context: Button to expand faded thread context
1781
+ #. @context: Expand reply context
1782
+ #: src/ui/compose/ComposeDialog.tsx
1783
+ #: src/ui/feed/ThreadPreview.tsx
1784
+ msgid "Show more"
1785
+ msgstr ""
1786
+
1787
+ #. @context: Description for the settings system navigation toggle
1788
+ #: src/ui/shared/navigation-labels.ts
1789
+ msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
1790
+ msgstr ""
1791
+
1792
+ #. @context: Built-in navigation label shown when auth is required
1793
+ #: src/ui/shared/navigation-labels.ts
1794
+ msgctxt "nav"
1795
+ msgid "Sign in"
1796
+ msgstr ""
1797
+
1798
+ #. @context: Sign in form submit button
1799
+ #. @context: Sign in page heading
1800
+ #. @context: Sign in page heading
1801
+ #: src/routes/auth/signin.tsx
1802
+ #: src/routes/auth/signin.tsx
1803
+ #: src/routes/auth/signin.tsx
1804
+ msgid "Sign In"
1805
+ msgstr ""
1806
+
1807
+ #. @context: Token label on sample page
1808
+ #: src/ui/pages/ThemeSamplePage.tsx
1809
+ msgid "Site accent"
1810
+ msgstr ""
1811
+
1812
+ #. @context: Setup form field - site name
1813
+ #: src/routes/auth/setup.tsx
1814
+ msgid "Site Name"
1815
+ msgstr ""
1816
+
1817
+ #. @context: Description for the favicon asset card
1818
+ #: src/ui/pages/BrandPage.tsx
1819
+ msgid "Small browser icon used in tabs and bookmarks."
1820
+ msgstr ""
1821
+
1822
+ #. @context: Asset keyword on the public brand asset page
1823
+ #: src/ui/pages/BrandPage.tsx
1824
+ msgid "Social preview"
1825
+ msgstr ""
1826
+
1827
+ #. @context: Title for the social preview image asset card
1828
+ #: src/ui/pages/BrandPage.tsx
1829
+ msgid "Social preview image"
1830
+ msgstr ""
1831
+
1832
+ #. @context: Toast when uploads fail and post is auto-saved as draft
1833
+ #: src/ui/compose/ComposeDialog.tsx
1834
+ msgid "Some uploads failed. Saved as draft."
1835
+ msgstr ""
1836
+
1837
+ #. @context: Fallback validation error for compose form
1838
+ #. @context: Fallback validation error for password reset form
1839
+ #. @context: Fallback validation error for setup form
1840
+ #. @context: Fallback validation error for sign-in form
1841
+ #. @context: Fallback validation error for thread compose form
1842
+ #: src/routes/auth/reset.tsx
1843
+ #: src/routes/auth/setup.tsx
1844
+ #: src/routes/auth/signin.tsx
1845
+ #: src/routes/compose.tsx
1846
+ #: src/routes/compose.tsx
1847
+ msgid "Something doesn't look right. Check the form and try again."
1848
+ msgstr ""
1849
+
1850
+ #. @context: Sort menu label on collection detail page
1851
+ #: src/ui/pages/CollectionPage.tsx
1852
+ msgid "Sort"
1853
+ msgstr ""
1854
+
1855
+ #. @context: Collection form field
1856
+ #: src/ui/shared/collection-management-labels.ts
1857
+ msgid "Sort Order"
1858
+ msgstr ""
1859
+
1860
+ #. @context: Compose quote source link placeholder
1861
+ #: src/ui/compose/ComposeDialog.tsx
1862
+ msgid "Source link (optional)"
1863
+ msgstr ""
1864
+
1865
+ #. @context: Section title for the icon and preview downloads section
1866
+ #: src/ui/pages/BrandPage.tsx
1867
+ msgid "Square assets for avatars, apps, browsers, and shared links"
1868
+ msgstr ""
1869
+
1870
+ #. @context: Asset keyword on the public brand asset page
1871
+ #: src/ui/pages/BrandPage.tsx
1872
+ msgid "Square logo"
1873
+ msgstr ""
1874
+
1875
+ #. @context: Title for the square logo PNG asset card
1876
+ #: src/ui/pages/BrandPage.tsx
1877
+ msgid "Square logo PNG"
1878
+ msgstr ""
1879
+
1880
+ #. @context: Title for the square tile asset card
1881
+ #: src/ui/pages/BrandPage.tsx
1882
+ msgid "Square tile"
1883
+ msgstr ""
1884
+
1885
+ #. @context: Heading for the quick-start panel on the brand asset page
1886
+ #: src/ui/pages/BrandPage.tsx
1887
+ msgid "Start here"
1888
+ msgstr ""
1889
+
1890
+ #. @context: Table cell in the sample detail article
1891
+ #: src/ui/pages/ThemeSamplePage.tsx
1892
+ msgid "Stay sturdy and readable."
1893
+ msgstr ""
1894
+
1895
+ #. @context: Compose custom slug helper label for the suggested slug
1896
+ #: src/ui/compose/ComposeDialog.tsx
1897
+ msgid "Suggested link"
1898
+ msgstr ""
1899
+
1900
+ #. @context: Textarea label on sample page
1901
+ #: src/ui/pages/ThemeSamplePage.tsx
1902
+ msgid "Summary"
1903
+ msgstr ""
1904
+
1905
+ #. @context: Attached text panel hint
1906
+ #: src/ui/compose/ComposeDialog.tsx
1907
+ msgid "Supplementary content attached to your post"
1908
+ msgstr ""
1909
+
1910
+ #. @context: Table header in the sample detail article
1911
+ #: src/ui/pages/ThemeSamplePage.tsx
1912
+ msgid "Surface"
1913
+ msgstr ""
1914
+
1915
+ #. @context: Helper text for theme picker pills on the sample page
1916
+ #: src/ui/pages/ThemeSamplePage.tsx
1917
+ msgid "Switch the palette and mode without opening settings or changing the active site theme."
1918
+ msgstr ""
1919
+
1920
+ #. @context: Guidance body on the brand asset page
1921
+ #: src/ui/pages/BrandPage.tsx
1922
+ msgid "Switch to the white logo when the standard green version would lose contrast."
1923
+ msgstr ""
1924
+
1925
+ #. @context: Label on failed upload overlay button, tells user tapping retries the upload
1926
+ #: src/ui/compose/ComposeDialog.tsx
1927
+ msgid "Tap to retry"
1928
+ msgstr ""
1929
+
1930
+ #. @context: Archive media filter - posts without any media attachments
1931
+ #. @context: Archive media filter - posts without any media attachments
1932
+ #: src/ui/pages/ArchivePage.tsx
1933
+ #: src/ui/pages/ArchivePage.tsx
1934
+ msgid "Text"
1935
+ msgstr ""
1936
+
1937
+ #. @context: Archive media filter - text file attachments
1938
+ #. @context: Attached text panel title
1939
+ #: src/ui/compose/ComposeDialog.tsx
1940
+ #: src/ui/pages/ArchivePage.tsx
1941
+ msgid "Text attachment"
1942
+ msgstr ""
1943
+
1944
+ #. @context: Blockquote in the sample detail article
1945
+ #: src/ui/pages/ThemeSamplePage.tsx
1946
+ msgid "The best default color is the one you notice only after reading for a while."
1947
+ msgstr ""
1948
+
1949
+ #. @context: Intro copy for the quick-start panel on the brand asset page
1950
+ #: src/ui/pages/BrandPage.tsx
1951
+ msgid "The brand pack includes SVG logos, a transparent square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and the default social preview image."
1952
+ msgstr ""
1953
+
1954
+ #. @context: Plain-text body fallback for the sample note post
1955
+ #: src/ui/pages/ThemeSamplePage.tsx
1956
+ msgid "The default accent should feel written, not branded."
1957
+ msgstr ""
1958
+
1959
+ #. @context: Sample note summary prefix on the theme sample page
1960
+ #: src/ui/pages/ThemeSamplePage.tsx
1961
+ msgid "The default accent should support reading first. Start by comparing it against the"
1962
+ msgstr ""
1963
+
1964
+ #. @context: Sample note post body prefix on the theme sample page
1965
+ #: src/ui/pages/ThemeSamplePage.tsx
1966
+ msgid "The default accent works best when it reads like a fountain-pen underline. Compare it against the"
1967
+ msgstr ""
1968
+
1969
+ #. @context: Caption for the sample detail article image
1970
+ #: src/ui/pages/ThemeSamplePage.tsx
1971
+ msgid "The image should sit quietly inside the article instead of feeling like a card preview."
1972
+ msgstr ""
1973
+
1974
+ #. @context: Blockquote on the theme sample page
1975
+ #: src/ui/pages/ThemeSamplePage.tsx
1976
+ msgid "The right accent should disappear into the writing until you need it."
1977
+ msgstr ""
1978
+
1979
+ #. @context: Section heading for theme picker pills
1980
+ #: src/ui/pages/ThemeSamplePage.tsx
1981
+ msgid "Theme"
1982
+ msgstr ""
1983
+
1984
+ #. @context: Browser page title for the public theme sample page
1985
+ #. @context: Eyebrow on the public theme sample page
1986
+ #: src/routes/pages/theme-sample.tsx
1987
+ #: src/ui/pages/ThemeSamplePage.tsx
1988
+ msgid "Theme sample"
1989
+ msgstr ""
1990
+
1991
+ #. @context: Helper text for the real post component section on the theme sample page
1992
+ #: src/ui/pages/ThemeSamplePage.tsx
1993
+ msgid "These are actual feed components with real footers, summaries, and inline links. Use this section to judge whether the theme still feels calm once it is applied to realistic content."
1994
+ msgstr ""
1995
+
1996
+ #. @context: Opening paragraph on the sample detail article
1997
+ #: src/ui/pages/ThemeSamplePage.tsx
1998
+ msgid "This article is here to answer a specific question: does the default accent still feel calm once it has to carry a full reading experience?"
1999
+ msgstr ""
2000
+
2001
+ #. @context: Empty state message
2002
+ #: src/ui/pages/CollectionPage.tsx
2003
+ msgid "This collection is empty. Add posts from the editor."
2004
+ msgstr ""
2005
+
2006
+ #. @context: Collection link help text
2007
+ #: src/ui/shared/collection-management-labels.ts
2008
+ msgid "This is the last part of the collection link."
2009
+ msgstr ""
2010
+
2011
+ #. @context: Sample quote commentary prefix on the theme sample page
2012
+ #: src/ui/pages/ThemeSamplePage.tsx
2013
+ msgid "This is useful as a color check because it puts the accent next to quotation styling, metadata, and a quieter explanatory paragraph. Compare it back to the"
2014
+ msgstr ""
2015
+
2016
+ #. @context: Hosted SSO expired link page heading
2017
+ #. @context: Hosted SSO expired link page title
2018
+ #. @context: Password reset error heading
2019
+ #: src/routes/auth/hosted-sso-expired-page.tsx
2020
+ #: src/routes/auth/hosted-sso-expired-page.tsx
2021
+ #: src/routes/auth/reset.tsx
2022
+ msgid "This Link Has Expired"
2023
+ msgstr ""
2024
+
2025
+ #. @context: Compose custom slug validation error when the entered slug is already taken
2026
+ #: src/ui/compose/ComposeDialog.tsx
2027
+ msgid "This link is already in use. Choose something else."
2028
+ msgstr ""
2029
+
2030
+ #. @context: Collection slug validation error for reserved paths
2031
+ #. @context: Compose custom slug validation error for reserved paths
2032
+ #: src/ui/compose/ComposeDialog.tsx
2033
+ #: src/ui/shared/collection-management-labels.ts
2034
+ msgid "This link is reserved. Choose something else."
2035
+ msgstr ""
2036
+
2037
+ #. @context: Sample link post body prefix on the theme sample page
2038
+ #: src/ui/pages/ThemeSamplePage.tsx
2039
+ msgid "This reference is useful because it treats links and citations as part of the reading rhythm. Keep that in mind while tuning the"
2040
+ msgstr ""
2041
+
2042
+ #. @context: Password reset error description
2043
+ #: src/routes/auth/reset.tsx
2044
+ msgid "This reset link is no longer valid. Request a new one to continue."
2045
+ msgstr ""
2046
+
2047
+ #. @context: Hosted SSO expired link message segment shown before the hosted control-plane link
2048
+ #: src/routes/auth/hosted-sso-expired-page.tsx
2049
+ msgid "This sign-in link has expired. Return to "
2050
+ msgstr ""
2051
+
2052
+ #. @context: Error shown when a hosted upload would exceed the shared account media limit
2053
+ #. @context: Error shown when a hosted upload would exceed the shared account media limit
2054
+ #: src/routes/api/upload-multipart.ts
2055
+ #: src/routes/api/upload.ts
2056
+ msgid "This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue."
2057
+ msgstr ""
2058
+
2059
+ #. @context: Helper text for the detail article sample on the theme sample page
2060
+ #: src/ui/pages/ThemeSamplePage.tsx
2061
+ msgid "This uses the real single-post detail rendering with a longer article, inline image, tables, lists, quotes, and code. The content column stays at the same width as the live site."
2062
+ msgstr ""
2063
+
2064
+ #. @context: Archive month header count unit for a single thread
2065
+ #. @context: Archive page summary unit for a single matching thread
2066
+ #. @context: Singular thread count label on collection detail page
2067
+ #: src/ui/pages/ArchivePage.tsx
2068
+ #: src/ui/pages/ArchivePage.tsx
2069
+ #: src/ui/pages/CollectionPage.tsx
2070
+ msgid "thread"
2071
+ msgstr ""
2072
+
2073
+ #. @context: Table cell in the sample detail article
2074
+ #: src/ui/pages/ThemeSamplePage.tsx
2075
+ msgid "Thread accent"
2076
+ msgstr ""
2077
+
2078
+ #. @context: Thread accents section heading on sample page
2079
+ #: src/ui/pages/ThemeSamplePage.tsx
2080
+ msgid "Thread accents"
2081
+ msgstr ""
2082
+
2083
+ #. @context: Archive month header count unit for multiple threads
2084
+ #. @context: Archive page summary unit for multiple matching threads
2085
+ #. @context: Plural thread count label on collection detail page
2086
+ #: src/ui/pages/ArchivePage.tsx
2087
+ #: src/ui/pages/ArchivePage.tsx
2088
+ #: src/ui/pages/CollectionPage.tsx
2089
+ msgid "threads"
2090
+ msgstr ""
2091
+
2092
+ #. @context: Toast shown when compose reaches the maximum allowed thread length
2093
+ #: src/ui/compose/ComposeDialog.tsx
2094
+ msgid "Threads can include up to {count} posts."
2095
+ msgstr ""
2096
+
2097
+ #. @context: Collection form field
2098
+ #. @context: Compose note title placeholder
2099
+ #. @context: Compose toolbar - title tooltip
2100
+ #. @context: Input label on sample page
2101
+ #: src/ui/compose/ComposeDialog.tsx
2102
+ #: src/ui/compose/ComposeDialog.tsx
2103
+ #: src/ui/pages/ThemeSamplePage.tsx
2104
+ #: src/ui/shared/collection-management-labels.ts
2105
+ msgid "Title"
2106
+ msgstr ""
2107
+
2108
+ #. @context: Archive filter - notes that have a title
2109
+ #. @context: Archive filter - notes that have a title
2110
+ #: src/ui/pages/ArchivePage.tsx
2111
+ #: src/ui/pages/ArchivePage.tsx
2112
+ msgid "Titled"
2113
+ msgstr ""
2114
+
2115
+ #. @context: Sample quote commentary suffix on the theme sample page
2116
+ #: src/ui/pages/ThemeSamplePage.tsx
2117
+ msgid "to make sure both still feel like they belong to the same product."
2118
+ msgstr ""
2119
+
2120
+ #. @context: Usage label for the square logo PNG asset card
2121
+ #: src/ui/pages/BrandPage.tsx
2122
+ msgid "Transparent square"
2123
+ msgstr ""
2124
+
2125
+ #. @context: Title on the public theme sample page
2126
+ #: src/ui/pages/ThemeSamplePage.tsx
2127
+ msgid "Tune color in a real reading context"
2128
+ msgstr ""
2129
+
2130
+ #. @context: Compose quote text placeholder
2131
+ #: src/ui/compose/ComposeDialog.tsx
2132
+ msgid "Type the quote..."
2133
+ msgstr ""
2134
+
2135
+ #. @context: Archive filter - notes without a title
2136
+ #. @context: Archive filter - notes without a title
2137
+ #: src/ui/pages/ArchivePage.tsx
2138
+ #: src/ui/pages/ArchivePage.tsx
2139
+ msgid "Untitled"
2140
+ msgstr ""
2141
+
2142
+ #. @context: Error when file upload fails
2143
+ #: src/routes/api/upload.ts
2144
+ msgid "Upload didn't go through. Try again in a moment."
2145
+ msgstr ""
2146
+
2147
+ #. @context: Toast shown during background upload
2148
+ #: src/ui/compose/ComposeDialog.tsx
2149
+ msgid "Uploading..."
2150
+ msgstr ""
2151
+
2152
+ #. @context: Field label for a custom collections link URL
2153
+ #: src/ui/shared/collection-management-labels.ts
2154
+ msgid "URL"
2155
+ msgstr ""
2156
+
2157
+ #. @context: Test string for Lingui interpolation support
2158
+ #: src/i18n/__tests__/context.test.tsx
2159
+ msgid "Use {brandColorName}"
2160
+ msgstr ""
2161
+
2162
+ #. @context: Compose publish settings action to reset the publish date to the current date
2163
+ #: src/ui/compose/ComposeDialog.tsx
2164
+ msgid "Use current date"
2165
+ msgstr ""
2166
+
2167
+ #. @context: Collection slug validation error for invalid characters
2168
+ #. @context: Compose custom slug validation error for invalid characters
2169
+ #: src/ui/compose/ComposeDialog.tsx
2170
+ #: src/ui/shared/collection-management-labels.ts
2171
+ msgid "Use lowercase letters, numbers, and hyphens only."
2172
+ msgstr ""
2173
+
2174
+ #. @context: Guidance title on the brand asset page
2175
+ #: src/ui/pages/BrandPage.tsx
2176
+ msgid "Use the logo on light backgrounds."
2177
+ msgstr ""
2178
+
2179
+ #. @context: Guidance title on the brand asset page
2180
+ #: src/ui/pages/BrandPage.tsx
2181
+ msgid "Use the reverse logo on dark backgrounds."
2182
+ msgstr ""
2183
+
2184
+ #. @context: Body copy for the icon and preview downloads section
2185
+ #: src/ui/pages/BrandPage.tsx
2186
+ msgid "Use these when you need a transparent square logo, a shaped tile with a built-in background, a browser icon, or a default preview image."
2187
+ msgstr ""
2188
+
2189
+ #. @context: Description for the default logo card
2190
+ #: src/ui/pages/BrandPage.tsx
2191
+ msgid "Use this for websites, docs, articles, and other light or neutral surfaces."
2192
+ msgstr ""
2193
+
2194
+ #. @context: Description for the reverse logo card
2195
+ #: src/ui/pages/BrandPage.tsx
2196
+ msgid "Use this on dark backgrounds, image-backed surfaces, and any placement where the green logo would lose contrast."
2197
+ msgstr ""
2198
+
2199
+ #. @context: Introductory description on the public theme sample page
2200
+ #: src/ui/pages/ThemeSamplePage.tsx
2201
+ msgid "Use this page to judge buttons, links, cards, forms, thread accents, and quiet surfaces before changing a theme globally."
2202
+ msgstr ""
2203
+
2204
+ #. @context: Archive media filter - video
2205
+ #: src/ui/pages/ArchivePage.tsx
2206
+ msgid "Video"
2207
+ msgstr ""
2208
+
2209
+ #. @context: Toast action button to view the published post
2210
+ #: src/ui/compose/ComposeDialog.tsx
2211
+ msgid "View"
2212
+ msgstr ""
2213
+
2214
+ #. @context: Thread link label on sample page
2215
+ #: src/ui/pages/ThemeSamplePage.tsx
2216
+ msgid "View earlier notes in this thread"
2217
+ msgstr ""
2218
+
2219
+ #. @context: Compose publish settings section label
2220
+ #: src/ui/compose/ComposeDialog.tsx
2221
+ msgid "Visibility"
2222
+ msgstr ""
2223
+
2224
+ #. @context: Setup page welcome heading
2225
+ #: src/routes/auth/setup.tsx
2226
+ msgid "Welcome to Jant"
2227
+ msgstr ""
2228
+
2229
+ #. @context: Table header in the sample detail article
2230
+ #: src/ui/pages/ThemeSamplePage.tsx
2231
+ msgid "What the accent should do"
2232
+ msgstr ""
2233
+
2234
+ #. @context: Section heading in the sample detail article
2235
+ #: src/ui/pages/ThemeSamplePage.tsx
2236
+ msgid "What to look for while tuning it"
2237
+ msgstr ""
2238
+
2239
+ #. @context: Compose prompt placeholder text
2240
+ #: src/ui/compose/ComposePrompt.tsx
2241
+ msgid "What's on your mind?"
2242
+ msgstr ""
2243
+
2244
+ #. @context: Compose body placeholder
2245
+ #: src/ui/compose/ComposeDialog.tsx
2246
+ msgid "What's on your mind..."
2247
+ msgstr ""
2248
+
2249
+ #. @context: Collection description placeholder
2250
+ #: src/ui/shared/collection-management-labels.ts
2251
+ msgid "What's this collection about?"
2252
+ msgstr ""
2253
+
2254
+ #. @context: Textarea value on sample page
2255
+ #: src/ui/pages/ThemeSamplePage.tsx
2256
+ msgid "When primary is too rigid, the whole page starts reading like product UI instead of writing space."
2257
+ msgstr ""
2258
+
2259
+ #. @context: Sample note summary second paragraph on the theme sample page
2260
+ #: src/ui/pages/ThemeSamplePage.tsx
2261
+ msgid "When the accent is slightly warmer and less literal, the whole page feels more like a writing space and less like product UI."
2262
+ msgstr ""
2263
+
2264
+ #. @context: Description for the circle tile asset card
2265
+ #: src/ui/pages/BrandPage.tsx
2266
+ msgid "White logo on the Jant green circle for profile images, badges, and other round placements where you want a ready-made asset."
2267
+ msgstr ""
2268
+
2269
+ #. @context: Description for the brand tile asset card
2270
+ #: src/ui/pages/BrandPage.tsx
2271
+ msgid "White logo on the Jant green rounded tile for app icon mockups, touch icons, directory listings, and other square placements that should feel softer."
2272
+ msgstr ""
2273
+
2274
+ #. @context: Description for the square tile asset card
2275
+ #: src/ui/pages/BrandPage.tsx
2276
+ msgid "White logo on the Jant green square tile for platforms and layouts that expect a true edge-to-edge square."
2277
+ msgstr ""
2278
+
2279
+ #. @context: Sample note post title on the theme sample page
2280
+ #: src/ui/pages/ThemeSamplePage.tsx
2281
+ msgid "Why the default accent should feel written, not branded"
2282
+ msgstr ""
2283
+
2284
+ #. @context: Archive feed title segment for hasMedia=1 filter
2285
+ #: src/routes/pages/archive.tsx
2286
+ msgid "with media"
2287
+ msgstr ""
2288
+
2289
+ #. @context: Archive feed title segment for hasTitle=1 filter
2290
+ #: src/routes/pages/archive.tsx
2291
+ msgid "with title"
2292
+ msgstr ""
2293
+
2294
+ #. @context: Archive feed title segment for hasMedia=0 filter
2295
+ #: src/routes/pages/archive.tsx
2296
+ msgid "without media"
2297
+ msgstr ""
2298
+
2299
+ #. @context: Archive feed title segment for hasTitle=0 filter
2300
+ #: src/routes/pages/archive.tsx
2301
+ msgid "without title"
2302
+ msgstr ""
2303
+
2304
+ #. @context: Compose publish settings hint for quiet reply switch
2305
+ #: src/ui/compose/ComposeDialog.tsx
2306
+ msgid "Won't move the thread to the top of latest."
2307
+ msgstr ""
2308
+
2309
+ #. @context: Error toast when sign-in credentials are wrong
2310
+ #: src/routes/auth/signin.tsx
2311
+ msgid "Wrong email or password. Check your credentials and try again."
2312
+ msgstr ""
2313
+
2314
+ #. @context: Confirm close action sheet title when editing a published post
2315
+ #: src/ui/compose/ComposeDialog.tsx
2316
+ msgid "You have unsaved changes"
2317
+ msgstr ""
2318
+
2319
+ #. @context: Compose thoughts placeholder
2320
+ #: src/ui/compose/ComposeDialog.tsx
2321
+ msgid "Your thoughts (optional)"
2322
+ msgstr ""
2323
+
2324
+ #. @context: Compose publish settings slug input placeholder
2325
+ #: src/ui/compose/ComposeDialog.tsx
2326
+ msgid "your-post-link"
2327
+ msgstr ""