@jant/core 0.3.38 → 0.3.40

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 (1181) hide show
  1. package/LICENSE +189 -189
  2. package/README.md +6 -4
  3. package/bin/commands/assets/prepare.js +55 -0
  4. package/bin/commands/db/execute-file.js +113 -0
  5. package/bin/commands/db/export.js +5 -0
  6. package/bin/commands/db/rehearse.js +65 -0
  7. package/bin/commands/deploy.js +162 -0
  8. package/bin/commands/export.js +73 -75
  9. package/bin/commands/import-site.js +1531 -267
  10. package/bin/commands/migrate.js +79 -0
  11. package/bin/commands/reset-password.js +80 -7
  12. package/bin/commands/site/export.js +415 -0
  13. package/bin/commands/site/import.js +5 -0
  14. package/bin/commands/site/localize-media.js +118 -0
  15. package/bin/commands/site/snapshot/export.js +357 -0
  16. package/bin/commands/site/snapshot/import.js +363 -0
  17. package/bin/commands/start.js +46 -0
  18. package/bin/commands/uploads/cleanup.js +119 -0
  19. package/bin/jant.js +55 -15
  20. package/bin/lib/cli-api-token.js +6 -0
  21. package/bin/lib/d1-query.js +194 -0
  22. package/bin/lib/load-node-runtime.js +10 -0
  23. package/bin/lib/migration-artifacts.js +99 -0
  24. package/bin/lib/migration-rehearsal.js +438 -0
  25. package/bin/lib/migration-runner.js +311 -0
  26. package/bin/lib/node-database.js +48 -0
  27. package/bin/lib/node-sqlite.js +158 -0
  28. package/bin/lib/public-assets.js +66 -0
  29. package/bin/lib/r2-query.js +170 -0
  30. package/bin/lib/runtime-target.js +33 -0
  31. package/bin/lib/site-localize-media.js +427 -0
  32. package/bin/lib/site-media-parser.js +1150 -0
  33. package/bin/lib/site-selection.js +222 -0
  34. package/bin/lib/site-snapshot.js +484 -0
  35. package/bin/lib/site-url.js +84 -0
  36. package/bin/lib/sql-export.js +194 -0
  37. package/bin/lib/wrangler-cli.js +41 -0
  38. package/bin/lib/wrangler-config.js +86 -0
  39. package/dist/app-CAtsuLLh.js +30644 -0
  40. package/dist/client/_assets/chunks/0041f681602cc834bb5c55ced0155b8e-BNpHLJgt.woff2 +0 -0
  41. package/dist/client/_assets/chunks/008ea9091e332c639ceb18874eacd60c-CygB704Q.woff2 +0 -0
  42. package/dist/client/_assets/chunks/00c9ac960d866ffaf8a866e5939024e2-CqRrlxSi.woff2 +0 -0
  43. package/dist/client/_assets/chunks/02629e5d0a9860b7fe32ec1f0563213a-YvgSIv_V.woff2 +0 -0
  44. package/dist/client/_assets/chunks/02e48e353415a00e0f556608cab33a43-YFgu4zi3.woff2 +0 -0
  45. package/dist/client/_assets/chunks/02faf6bb0ab4d56ada037c0bbaf9b9f7-DUuUM2eo.woff2 +0 -0
  46. package/dist/client/_assets/chunks/031089da45fbfb7dc18ac827bef4c56e-D4ahCOTO.woff2 +0 -0
  47. package/dist/client/_assets/chunks/03ac785139320b7b13bac9c150bf72bf-BG7zubxs.woff2 +0 -0
  48. package/dist/client/_assets/chunks/053bd3d7aec0040d0cc50c261a1f4e3e-BdG4yI0n.woff2 +0 -0
  49. package/dist/client/_assets/chunks/057a3d44d7fc606f113d863376d0ecf0-BsEMbuKV.woff2 +0 -0
  50. package/dist/client/_assets/chunks/0713613227cc4c686c45a279f8bdc166-BzLoJcLo.woff2 +0 -0
  51. package/dist/client/_assets/chunks/0b1f83a3c7e715560a55ad9eb0fb1c94-asGrAhxW.woff2 +0 -0
  52. package/dist/client/_assets/chunks/0c055db157e7a13f3103cc2a6b67fec3-1T6huY_I.woff2 +0 -0
  53. package/dist/client/_assets/chunks/0d3f5cc265cb6c439c517f2c4cebbddf-CmkfpVHX.woff2 +0 -0
  54. package/dist/client/_assets/chunks/0e97f44ebc65384c346fe19bcc52fa20-BJTzmZzt.woff2 +0 -0
  55. package/dist/client/_assets/chunks/10f2b44b3711d3f5bdcc30d373b543d1-BRTxD_6-.woff2 +0 -0
  56. package/dist/client/_assets/chunks/1139d32ae2bdeb26c0c8f31330aa9a9f-B7k4Da0E.woff2 +0 -0
  57. package/dist/client/_assets/chunks/1259e5825b314fe2b8bb96d6e8069ee5-Ba8VoZCg.woff2 +0 -0
  58. package/dist/client/_assets/chunks/12c518ebfe62818af550c08947e359e7-B7eDp07N.woff2 +0 -0
  59. package/dist/client/_assets/chunks/145831a59caa06d894022fe60212ed21-B3xSIk4b.woff2 +0 -0
  60. package/dist/client/_assets/chunks/14b040a2dda256936bc7b3470e548394-CF7zgNWs.woff2 +0 -0
  61. package/dist/client/_assets/chunks/14c1506106d92621bafb11016735194e-cbk_paoP.woff2 +0 -0
  62. package/dist/client/_assets/chunks/154a2c266902003bd8b7449386b10776-CYgd0apt.woff2 +0 -0
  63. package/dist/client/_assets/chunks/15f8c0df47fd639d1b0d9bd5cf507c9b-B11bYwtn.woff2 +0 -0
  64. package/dist/client/_assets/chunks/1668bd859ffe15bed7d5563117d8d5fb-DJotYU-j.woff2 +0 -0
  65. package/dist/client/_assets/chunks/169a096e61d38a773216f51d1ec2cc06-CzS4CZjy.woff2 +0 -0
  66. package/dist/client/_assets/chunks/1884a2b22d314c7d57707f03aec348e0-BdBJ4_JO.woff2 +0 -0
  67. package/dist/client/_assets/chunks/189f272ea2600c74d576b7b15c014922-CylwUmhO.woff2 +0 -0
  68. package/dist/client/_assets/chunks/190e3f8632494e7c095117f26b1c811e-DT09KhZe.woff2 +0 -0
  69. package/dist/client/_assets/chunks/19ad151c22ce1befe0a9ea643fbee570-BOjbPzxL.woff2 +0 -0
  70. package/dist/client/_assets/chunks/19e39850472250bfdbce654d30859879-Db8MVQ-5.woff2 +0 -0
  71. package/dist/client/_assets/chunks/1b5d0d740450fb996749464c9b882025-BG0yepI2.woff2 +0 -0
  72. package/dist/client/_assets/chunks/1bca0a2a8840ad0ee9414940593db144-CfiRZ0Fs.woff2 +0 -0
  73. package/dist/client/_assets/chunks/1c820b5295868008ca7c78afa5b7655d-rGkaVY0Z.woff2 +0 -0
  74. package/dist/client/_assets/chunks/1cda27dcaab977ae4ef5d5ab2a10ae03-3n1CbajX.woff2 +0 -0
  75. package/dist/client/_assets/chunks/1e2640116bbba817f43c43cc69371cf1-BLnekPNy.woff2 +0 -0
  76. package/dist/client/_assets/chunks/1f4bc38a1c50f55f335f5411cae47696-3J1JFXeu.woff2 +0 -0
  77. package/dist/client/_assets/chunks/1fbccc182322b513f57cd156a9a491b0-bRVH28a5.woff2 +0 -0
  78. package/dist/client/_assets/chunks/1fbe225742c69f4ba9ea5f74922f0ca1-BHRIiKDB.woff2 +0 -0
  79. package/dist/client/_assets/chunks/2022cf097cb952d9fe75b53b4587d2c3-Btdq5ZEB.woff2 +0 -0
  80. package/dist/client/_assets/chunks/21e0a71d86be7b8a9e812e7af09dd061-SSZaQU5Z.woff2 +0 -0
  81. package/dist/client/_assets/chunks/2240a3c43ca5ef59ae3c348c7884792f-DQgT8QLe.woff2 +0 -0
  82. package/dist/client/_assets/chunks/2573703213da30d3ba18925b100b2c2b-D61uHyrJ.woff2 +0 -0
  83. package/dist/client/_assets/chunks/265e048cc9f2f8a711ba585a534d5351-geHDzSNf.woff2 +0 -0
  84. package/dist/client/_assets/chunks/26839c0e47c73514b8d8f660d24d6b19-D2gmzZl-.woff2 +0 -0
  85. package/dist/client/_assets/chunks/280e3d2b58e9ad3501816072e01b0c13-Dx5yDwjz.woff2 +0 -0
  86. package/dist/client/_assets/chunks/2874d07e228da9583b0e73646dacd498-26mUURU-.woff2 +0 -0
  87. package/dist/client/_assets/chunks/29d49891713a2785a3a383001cf58c59-DVb6JpZh.woff2 +0 -0
  88. package/dist/client/_assets/chunks/2a22e14a9ad53f2abb3c7e85017b7d12-CU_4APNf.woff2 +0 -0
  89. package/dist/client/_assets/chunks/2a7cedfcd6e4c7cec36f4fd7b0f329c2-BUp7BYdq.woff2 +0 -0
  90. package/dist/client/_assets/chunks/2acea04a920f6af31e7db97052f563c6-KdL2n7-Y.woff2 +0 -0
  91. package/dist/client/_assets/chunks/2ae2ca951489c9d50cde5b36a2a5515b-CWV12jwD.woff2 +0 -0
  92. package/dist/client/_assets/chunks/2b3e8c5703b91f39f6027f43f0da6f4b-FHYDvFqX.woff2 +0 -0
  93. package/dist/client/_assets/chunks/2ba802b14f21a58fc61606c88fa93373-BmrW6szo.woff2 +0 -0
  94. package/dist/client/_assets/chunks/2d81eb6ab0ebbc0cabfb3a3341ba8800-Ds2YcMj0.woff2 +0 -0
  95. package/dist/client/_assets/chunks/2deb444546774c3a3ab38c75eb69cdfb-Dm9USQXk.woff2 +0 -0
  96. package/dist/client/_assets/chunks/2e98b666924b8e0a09d1aeeefd24bdd2-Cmh3DrKG.woff2 +0 -0
  97. package/dist/client/_assets/chunks/2f27ee4fb2cf6a280e110e09c18ef73e-D_yYWYMZ.woff2 +0 -0
  98. package/dist/client/_assets/chunks/2fbccf9a3853eb59db1a825e044515fd-CiShE3Wo.woff2 +0 -0
  99. package/dist/client/_assets/chunks/2fd3fceb6faed5e3db768e88d7614dca-D74stxc-.woff2 +0 -0
  100. package/dist/client/_assets/chunks/2ff009fa8701505d7f3dc6c83763f019-nkOuUfA-.woff2 +0 -0
  101. package/dist/client/_assets/chunks/31342cebfa5ea7fac06b4ea372d96bc5-DdIH_TkU.woff2 +0 -0
  102. package/dist/client/_assets/chunks/31424fe5d54692e7c8b38021ccb8597c-CfNu45zJ.woff2 +0 -0
  103. package/dist/client/_assets/chunks/3179006d1c7ebfa50d27482a2859d9a0-e7PNUH9y.woff2 +0 -0
  104. package/dist/client/_assets/chunks/34c2edb3c37f71258f5c4a31091f0c6c-Cyr8VjPf.woff2 +0 -0
  105. package/dist/client/_assets/chunks/35cf5dd04315e0b906e1a413d7905a2f-A-QPUrVX.woff2 +0 -0
  106. package/dist/client/_assets/chunks/360c190344c26278bbc50e2f4d6a2b3f-B7OhzvgR.woff2 +0 -0
  107. package/dist/client/_assets/chunks/375329ba0b50b94b35006498e555867c-CDc5XB7_.woff2 +0 -0
  108. package/dist/client/_assets/chunks/387c811226f303af62f1e21aae6f5c83-BmPYUAdb.woff2 +0 -0
  109. package/dist/client/_assets/chunks/389a950f2a1211946d294716e679e381-Diuxk8JN.woff2 +0 -0
  110. package/dist/client/_assets/chunks/39b0bbc910af9d2d6dcd8bd4abd6387d-NhvZf71d.woff2 +0 -0
  111. package/dist/client/_assets/chunks/3adc8f6350cf5067bcb6dc5e44c45d41-DIO3oy0b.woff2 +0 -0
  112. package/dist/client/_assets/chunks/3b41385fc27419c19822060daa0b5cb3-Dh5JVnsu.woff2 +0 -0
  113. package/dist/client/_assets/chunks/3bed5bd57de8f738e53cddaea88983d9-BAGVbLtM.woff2 +0 -0
  114. package/dist/client/_assets/chunks/3c201fd8d1bb20abe7d06b940e83a4d9-Bz0dCLvM.woff2 +0 -0
  115. package/dist/client/_assets/chunks/3cbe4a697fd595ef42c899de7d3e5445-zWwFRRI_.woff2 +0 -0
  116. package/dist/client/_assets/chunks/3d385ea0880df7204258e290648ec012-BQqoFH8R.woff2 +0 -0
  117. package/dist/client/_assets/chunks/3d83dacbbec3d8532ae9afede21f3aab-BH06SEJj.woff2 +0 -0
  118. package/dist/client/_assets/chunks/3dc1a4f0d7af59e16b5162a2b077a442-CkXZW3CY.woff2 +0 -0
  119. package/dist/client/_assets/chunks/3dc68e473fe23bd076dd46785cd23583-Cv6HZ0Dr.woff2 +0 -0
  120. package/dist/client/_assets/chunks/427577dcb707d1d35eebd155b4222aa7-D7-mHA6o.woff2 +0 -0
  121. package/dist/client/_assets/chunks/42a74b6a625bbf0a9616ed4db3152c88-CQ58KTMS.woff2 +0 -0
  122. package/dist/client/_assets/chunks/435b7dca567809813fcb395a27ed83a0-C6E3YXBr.woff2 +0 -0
  123. package/dist/client/_assets/chunks/43693195e775d515689fa035394067fd-DLMrklI6.woff2 +0 -0
  124. package/dist/client/_assets/chunks/43fb49e5b79ee7e553869d84e6e08b1e-BgOVrd59.woff2 +0 -0
  125. package/dist/client/_assets/chunks/44dcbbc3cc8f22e613b342d691511ab6-dRyYwGGi.woff2 +0 -0
  126. package/dist/client/_assets/chunks/450a5b53be0a8a778bb0b623e86b652f-qwII2gXW.woff2 +0 -0
  127. package/dist/client/_assets/chunks/457485e72835364662dfead6281638c1-Mv279UyL.woff2 +0 -0
  128. package/dist/client/_assets/chunks/47479c470fae70f10b7c964a7ecbf274-D9VNBclD.woff2 +0 -0
  129. package/dist/client/_assets/chunks/474fac21b12b7efd71f7c321578878b0-BJRz_Yd3.woff2 +0 -0
  130. package/dist/client/_assets/chunks/477866c8396474a17317dcac3e7a014f-e90LWIFy.woff2 +0 -0
  131. package/dist/client/_assets/chunks/478ebdaadda7775c391c5dcab4e697df-RfXJJ1gl.woff2 +0 -0
  132. package/dist/client/_assets/chunks/488846410760fe128dae939836ca5423-D0YbXQOX.woff2 +0 -0
  133. package/dist/client/_assets/chunks/48d6a97a185c799be4fe67aaf7edf213-CqLkiJik.woff2 +0 -0
  134. package/dist/client/_assets/chunks/48eb0a91e50c7f026e248c64145e72af-D8LB2Dye.woff2 +0 -0
  135. package/dist/client/_assets/chunks/490edb9fc8a4356aea556eed32287464-Bxk-XtyT.woff2 +0 -0
  136. package/dist/client/_assets/chunks/4a23fe6e82fd496b5eb20401b6164efe-CfhsfLd6.woff2 +0 -0
  137. package/dist/client/_assets/chunks/4b0e79ba18b2ce424fa93e84996d7cba-B0dS4UvF.woff2 +0 -0
  138. package/dist/client/_assets/chunks/4bc743968cf1c3ce5711de67ef1ccc4d-Dmn20LlT.woff2 +0 -0
  139. package/dist/client/_assets/chunks/4c4bdd0b3f3a52e28f3b643c1c5d43be-BLqyuzyK.woff2 +0 -0
  140. package/dist/client/_assets/chunks/4c96411f3693a9a8657a9c1190f82bce-BhP7AS2j.woff2 +0 -0
  141. package/dist/client/_assets/chunks/4c9aa12aba2a6a57410eacaff7427916-CLDZgzM7.woff2 +0 -0
  142. package/dist/client/_assets/chunks/4cca7233bf8ce5dec2e5d146b993d626-Bf7OgJe6.woff2 +0 -0
  143. package/dist/client/_assets/chunks/4cf0f292f3358bd2f73b1cf4ec1476f3-CIfjw85D.woff2 +0 -0
  144. package/dist/client/_assets/chunks/4d0a9128d06ea857f203bf5d007b1ab9-BZ-BuqS9.woff2 +0 -0
  145. package/dist/client/_assets/chunks/4dc0728df0f2ba70796f45f05654c7ba-DGd3NDaT.woff2 +0 -0
  146. package/dist/client/_assets/chunks/4dc2bc2c55b47f57d13b63aa6b1c8bd4-g3WbclK2.woff2 +0 -0
  147. package/dist/client/_assets/chunks/4e1cc6aafb411b572c8d3511e925ecf1-BUf15jYj.woff2 +0 -0
  148. package/dist/client/_assets/chunks/4e5384920bbb155d9d8d74887b09ea5b-2KLteQXT.woff2 +0 -0
  149. package/dist/client/_assets/chunks/501f66f24bce8234441954de1b568403-CIe4N6pO.woff2 +0 -0
  150. package/dist/client/_assets/chunks/50cfd672bfa62512ba090420acf35c87-CibXrwCT.woff2 +0 -0
  151. package/dist/client/_assets/chunks/5227dbe9933760a48baff21ebd13fc98-v8CBITMX.woff2 +0 -0
  152. package/dist/client/_assets/chunks/526b263e72c189f4b065738aaa6d423a-Dj5Ns6Ev.woff2 +0 -0
  153. package/dist/client/_assets/chunks/53a88404451448cd2e620a0ca0e45a20-CI0P5NCv.woff2 +0 -0
  154. package/dist/client/_assets/chunks/54da934819a917f561b439bfd10f88b6-CpoNRhz7.woff2 +0 -0
  155. package/dist/client/_assets/chunks/54e301f412730f391225db59dae1c8d5-CxTAz9F1.woff2 +0 -0
  156. package/dist/client/_assets/chunks/551b1d7a0b80c8d42af09863cdca7f01-BIGKH8GS.woff2 +0 -0
  157. package/dist/client/_assets/chunks/555d990ab3fd7d3d66c6d1fa9a82fec5-BndAe6f2.woff2 +0 -0
  158. package/dist/client/_assets/chunks/557cd00c5d6827e13d72a0c71b23587b-C6gpr-g-.woff2 +0 -0
  159. package/dist/client/_assets/chunks/563fa31542d553f25abab65cf7f81e1d-Cl_1me5X.woff2 +0 -0
  160. package/dist/client/_assets/chunks/56e1c4734bbbb38af2fbc262bf6e98f2-DZ32amUx.woff2 +0 -0
  161. package/dist/client/_assets/chunks/5947f5da5da9a352a2b534ee64bfc29a-DT0Fj-SL.woff2 +0 -0
  162. package/dist/client/_assets/chunks/5979c33a7eb5963bf8e83e46931b5fb5--4f9yv1z.woff2 +0 -0
  163. package/dist/client/_assets/chunks/597d69d0710e0178b162afb0a0c20401-CpThXFdo.woff2 +0 -0
  164. package/dist/client/_assets/chunks/59966ee0b069b577510fe68c350da0ee-Bs_HDvyP.woff2 +0 -0
  165. package/dist/client/_assets/chunks/5a10741e41259e235841440394c0763d-uCZGOg0A.woff2 +0 -0
  166. package/dist/client/_assets/chunks/5bfc7a121c35ae42623ef804fb525e0e-mS7vyFFz.woff2 +0 -0
  167. package/dist/client/_assets/chunks/5cc23a76e122d0ad2f7cede41bc35b27-4T1ZVQJu.woff2 +0 -0
  168. package/dist/client/_assets/chunks/5d48855bed5f3554eff91b573d7376ac-CPzsdNDF.woff2 +0 -0
  169. package/dist/client/_assets/chunks/5ddcbe564b29ef08632e1aeb33455435-CQzDKa-z.woff2 +0 -0
  170. package/dist/client/_assets/chunks/5f90024544c2907c6c0203c6210c50be-C_1uxIky.woff2 +0 -0
  171. package/dist/client/_assets/chunks/605667a998e91e2b6a4a3cd7c31fe5a9-Co2lOjER.woff2 +0 -0
  172. package/dist/client/_assets/chunks/60a14064ed334f0155795d795e926abe-C2HuVyw5.woff2 +0 -0
  173. package/dist/client/_assets/chunks/60d8b0805a0a8c54a6cca216004beff5-CV1GX5br.woff2 +0 -0
  174. package/dist/client/_assets/chunks/611b62d5fd9698d9b5ce495ba6f14c93-CPi2xRKF.woff2 +0 -0
  175. package/dist/client/_assets/chunks/61bf4287453da4025d03fa6b2dba66ca-CMh4XzzB.woff2 +0 -0
  176. package/dist/client/_assets/chunks/638369541268ed5a10af97ad77498c73-DrpvGu-L.woff2 +0 -0
  177. package/dist/client/_assets/chunks/649b12d7cee7bb981842946e4547e6ca-EACt8KkC.woff2 +0 -0
  178. package/dist/client/_assets/chunks/653bef2ed891ae48d8ed712283080649-C3d1ZTAc.woff2 +0 -0
  179. package/dist/client/_assets/chunks/67d2a81f06ba352f17fbdc3a5e6ea59e-DC8Iostn.woff2 +0 -0
  180. package/dist/client/_assets/chunks/67f32ceea9e78e5109f87724ad886010-C_3-9sSn.woff2 +0 -0
  181. package/dist/client/_assets/chunks/68304f3229cf763465f044fccb5892c0-CTvPlN8c.woff2 +0 -0
  182. package/dist/client/_assets/chunks/687d0f0f90a9b23e40102e16ad8e9836-Bzlx1W-7.woff2 +0 -0
  183. package/dist/client/_assets/chunks/688a88911e4da17b609196a959b8b930-BgwP4zIQ.woff2 +0 -0
  184. package/dist/client/_assets/chunks/68f2fab82ec8e9291f08c3145111549c-CXqagiiH.woff2 +0 -0
  185. package/dist/client/_assets/chunks/69519ada3f3f74ca20aacb8af48ab6b4-DncDOElk.woff2 +0 -0
  186. package/dist/client/_assets/chunks/6a6e884fb2b65ec5b4a3d5ecd0d01a6a-DBNJo4jq.woff2 +0 -0
  187. package/dist/client/_assets/chunks/6db6ddf72c38a78ce44c1327701152e1-CFUWMaQQ.woff2 +0 -0
  188. package/dist/client/_assets/chunks/6e1a8b45b01939088c3a8cfcf8c10681-BemqZSaI.woff2 +0 -0
  189. package/dist/client/_assets/chunks/6e2164fad867d166de2e5b274f04a563-_YD_QMym.woff2 +0 -0
  190. package/dist/client/_assets/chunks/6e83fe0b6e708eaf1c3003d6dee11488-CRqY8z2g.woff2 +0 -0
  191. package/dist/client/_assets/chunks/6eefc9d430171c1e1e4034ecadee31c8-d3VCnQ01.woff2 +0 -0
  192. package/dist/client/_assets/chunks/70861376e5d4f92f8aa7aa1b2749b617-BqwxmSo2.woff2 +0 -0
  193. package/dist/client/_assets/chunks/70adaf50c56d5ff859c64d35e0f1e34e-BCmTRExx.woff2 +0 -0
  194. package/dist/client/_assets/chunks/7124d150570d39ced8d45507dc11ca1e-Co_mUkqP.woff2 +0 -0
  195. package/dist/client/_assets/chunks/71eafb8fbe3a734283517e230ad8b6db-CFmZ-qAS.woff2 +0 -0
  196. package/dist/client/_assets/chunks/72ee453ac0e19bd2c631c8921c44e3de-CEidyyfI.woff2 +0 -0
  197. package/dist/client/_assets/chunks/751f54dbb115140d5b645a6ba4aff5d3-DY-S96zI.woff2 +0 -0
  198. package/dist/client/_assets/chunks/753b5f6fb254bacb6618ace25af3df60-uBG6c32o.woff2 +0 -0
  199. package/dist/client/_assets/chunks/7609e7e74dd4d916a7abc7ecc7d95f7e-CzrNhght.woff2 +0 -0
  200. package/dist/client/_assets/chunks/76b9d6fe838ae4151d95ce7200aa2bf6-BfQWDykU.woff2 +0 -0
  201. package/dist/client/_assets/chunks/76d4244186d118eea245d1385a4de2ec-CEoql1pw.woff2 +0 -0
  202. package/dist/client/_assets/chunks/77a7533bd21ccd33192d142a93555aa8-BzSb8ker.woff2 +0 -0
  203. package/dist/client/_assets/chunks/78ce29fed872e44fc9014d94875d2aac-D1BDuJXp.woff2 +0 -0
  204. package/dist/client/_assets/chunks/79a7fdf7d9c722b5723ae25e6ff8e203-5rPAnIr7.woff2 +0 -0
  205. package/dist/client/_assets/chunks/79a85a253e9b3f12d2e2cb15e16b3003-DTjWGv2X.woff2 +0 -0
  206. package/dist/client/_assets/chunks/7a86b155111ba20f3e87306ff6beac77-DchSNxJ1.woff2 +0 -0
  207. package/dist/client/_assets/chunks/7b1e76975b0984e6f83e3f9f8069e784-OB_rGzsR.woff2 +0 -0
  208. package/dist/client/_assets/chunks/7b6c60131822a0e4d36d980d52509d4e-8dQVuUiW.woff2 +0 -0
  209. package/dist/client/_assets/chunks/7caa14a095a6bc313aab780fe4ff7999-BJ-80Ois.woff2 +0 -0
  210. package/dist/client/_assets/chunks/7cbda564cb2dd4799ab9e89d51286aa7-MlT7YRSz.woff2 +0 -0
  211. package/dist/client/_assets/chunks/7d138084cf03c14116b11297fce0e3e3-CdWCcyam.woff2 +0 -0
  212. package/dist/client/_assets/chunks/7d65a3d6a65050eb5e6eca43398aeba4-CYB359u-.woff2 +0 -0
  213. package/dist/client/_assets/chunks/7dfc711962c8771f97e7c8898a6bcb65-Yv69yrg4.woff2 +0 -0
  214. package/dist/client/_assets/chunks/7ef123b62d530fcba73974fa265e0aae-CD7IMlBc.woff2 +0 -0
  215. package/dist/client/_assets/chunks/7f60eefa15956d6f06dd92404887d58c-LqioDjlc.woff2 +0 -0
  216. package/dist/client/_assets/chunks/7f8c15e0ecb102738981d9fa4cb6b921-8qiw7Fmn.woff2 +0 -0
  217. package/dist/client/_assets/chunks/80466082a896fd328f30a78593c7c568-BMAVDyAy.woff2 +0 -0
  218. package/dist/client/_assets/chunks/812b5a4b87f3a7b4afc1cfebc864f413-B4_mWnLK.woff2 +0 -0
  219. package/dist/client/_assets/chunks/812dfb7f8144d01b3cc9d5ce0b472f40-DxhfKDhh.woff2 +0 -0
  220. package/dist/client/_assets/chunks/84742b1ede4f0bb6d27131298eba21b4-4_QYQ-wj.woff2 +0 -0
  221. package/dist/client/_assets/chunks/8555f0285e3d28e95e2fc0ccccd9caff-CEnfoaRy.woff2 +0 -0
  222. package/dist/client/_assets/chunks/880162ae92cd9e120eb4e4e11fae459d-Cj61LKOn.woff2 +0 -0
  223. package/dist/client/_assets/chunks/8a3c84b0df36f851f5fea75ee8757951-CfHrA-x8.woff2 +0 -0
  224. package/dist/client/_assets/chunks/8b0c8c9f8cfa9fa090d97c5a5efb1f4c-DZc3EGF4.woff2 +0 -0
  225. package/dist/client/_assets/chunks/8c8393bc875f1ee36697a2113f4421ea-CnBugeCf.woff2 +0 -0
  226. package/dist/client/_assets/chunks/8dc035a34c76e6515ca203e2df182588-B1reQPCB.woff2 +0 -0
  227. package/dist/client/_assets/chunks/8e04e64c8f68d292a18d4160fbde8671-DkT7v-sd.woff2 +0 -0
  228. package/dist/client/_assets/chunks/8e6c9bb43afb8cbbff7cf1055e67c9bd-c7wzPI7v.woff2 +0 -0
  229. package/dist/client/_assets/chunks/8eb06109812cb80be44f47b8179c2709-DOaU0xD8.woff2 +0 -0
  230. package/dist/client/_assets/chunks/8f2b960c2823670e94f5b08aa65657e6-CHT-Gunr.woff2 +0 -0
  231. package/dist/client/_assets/chunks/8f89f57230d184f92a36e241874229d7-D6P0FMCn.woff2 +0 -0
  232. package/dist/client/_assets/chunks/904324af375d5fd370af1054355a050e-CHiXmgO7.woff2 +0 -0
  233. package/dist/client/_assets/chunks/90ac4f9d2aa02afdace2843b49fc18bb-CWArmWzF.woff2 +0 -0
  234. package/dist/client/_assets/chunks/90b6f57d77847f512fd11db74fa912f1-DzYbq8hW.woff2 +0 -0
  235. package/dist/client/_assets/chunks/911a2092d64d6d6494b254d819af2b91-C0xmZ-Cu.woff2 +0 -0
  236. package/dist/client/_assets/chunks/913759e6690f9fc0746a20b96f4bdcb4-B0k9hqx0.woff2 +0 -0
  237. package/dist/client/_assets/chunks/9154e26efe532a85a27d80902f5a2d6c-DJQmzPmB.woff2 +0 -0
  238. package/dist/client/_assets/chunks/9180de34b48b325200a97e267befff32-ClJx20hD.woff2 +0 -0
  239. package/dist/client/_assets/chunks/94e7ed67f1557b76fead6b6e456a0415-CjAhhvRn.woff2 +0 -0
  240. package/dist/client/_assets/chunks/95127a92346c04fec1fa81d6295b0a28-DNbeXPGm.woff2 +0 -0
  241. package/dist/client/_assets/chunks/958efb9b2fa2ea0008ffef009885f9f8-CNOwBDS1.woff2 +0 -0
  242. package/dist/client/_assets/chunks/95df3b9f681d9df411c30aea5b24f2e0-Dv7GHFVj.woff2 +0 -0
  243. package/dist/client/_assets/chunks/975af5a496e8d87d821910aa9fe4d598-CG5KDMOI.woff2 +0 -0
  244. package/dist/client/_assets/chunks/97a874bbf55ce89a4ab7cd27c7e938b1-fhost-bL.woff2 +0 -0
  245. package/dist/client/_assets/chunks/9ca9b71010a5faeee7047ef97aeee13b-K6NP7P3o.woff2 +0 -0
  246. package/dist/client/_assets/chunks/9cd0b77920b9d6c64eb686493123fc76-Db6wX5BE.woff2 +0 -0
  247. package/dist/client/_assets/chunks/9de02d745b8e25c6411fb152fb067748-CGxZtq8G.woff2 +0 -0
  248. package/dist/client/_assets/chunks/9eb33a430058d839ebbe2af4b2e0daa9-Cjd-WSds.woff2 +0 -0
  249. package/dist/client/_assets/chunks/9ebd27835ffcbd794e67151ab046ce68-DmxtZVr5.woff2 +0 -0
  250. package/dist/client/_assets/chunks/9f5a73aa8ba417688019d628f334db07-P03uxox_.woff2 +0 -0
  251. package/dist/client/_assets/chunks/9fbc06b2e3ff16b9d705c76db563ef17-XDHSv5Te.woff2 +0 -0
  252. package/dist/client/_assets/chunks/9fd53607094e329fa8e5c785b3ff0f1a-B-9qgOdM.woff2 +0 -0
  253. package/dist/client/_assets/chunks/a077f51cfb5cffb4ff4d8e229c0e9e79-BaPgyZ5H.woff2 +0 -0
  254. package/dist/client/_assets/chunks/a0f0c06d5c7a3ffa97706178cce212a8-DN_NE4Ic.woff2 +0 -0
  255. package/dist/client/_assets/chunks/a38c1830367f784181b6f544b0b11bbd-BmPGDXn1.woff2 +0 -0
  256. package/dist/client/_assets/chunks/a397997b579d3945c9c70a979c17a8ad-DXa54wGz.woff2 +0 -0
  257. package/dist/client/_assets/chunks/a3b929542e6c5a0644b73a7c8a8b6c03-B5i2p-Hj.woff2 +0 -0
  258. package/dist/client/_assets/chunks/a578742770fcd2226e3c45b5b6efdcb0-C1QhQdHg.woff2 +0 -0
  259. package/dist/client/_assets/chunks/a68d9d5027803832bb28e78cdcd04949-D_bwWhwg.woff2 +0 -0
  260. package/dist/client/_assets/chunks/a8857f5d478f101c053ba02d2f223e90-CHOaRPpq.woff2 +0 -0
  261. package/dist/client/_assets/chunks/a904b05966368bcf90b632c7c2e5f76b-BbTXYQVh.woff2 +0 -0
  262. package/dist/client/_assets/chunks/a9cf85e27428c14351d30eac8cbc8d91-DMaVc3-8.woff2 +0 -0
  263. package/dist/client/_assets/chunks/aa0ce6740f301351761a0615cc8b2e99-4RL3pitV.woff2 +0 -0
  264. package/dist/client/_assets/chunks/aa218a2c45f3749537ce876201e5152b-DndHqA-p.woff2 +0 -0
  265. package/dist/client/_assets/chunks/aa28db16818f9eaa8c817f289e1c3270-Drm1Jwhe.woff2 +0 -0
  266. package/dist/client/_assets/chunks/aa64c9953af43ca65832f413895bb433-CR32RteD.woff2 +0 -0
  267. package/dist/client/_assets/chunks/aa96d698491c2540e2dcf7009c65c456-BXlPVR0v.woff2 +0 -0
  268. package/dist/client/_assets/chunks/ada8f0241244c60ec8d3d59ad37f20a5-BFQsznEm.woff2 +0 -0
  269. package/dist/client/_assets/chunks/ae25c41034ddc1a9e0b41f5034c9aa4b-COQJkHOc.woff2 +0 -0
  270. package/dist/client/_assets/chunks/ae289ae3f8cdb54a3a6c07174517afec-DFGIoTY6.woff2 +0 -0
  271. package/dist/client/_assets/chunks/ae401fb4db80d5ff5cd3f8d9bc811070-Byt9AwoT.woff2 +0 -0
  272. package/dist/client/_assets/chunks/b02dfa2aa52cbdb1b2f11a9f44335469-DVWsuPSL.woff2 +0 -0
  273. package/dist/client/_assets/chunks/b0ab3a7f319ce6dd3c9a4de2674e7c72-CksmA6Hr.woff2 +0 -0
  274. package/dist/client/_assets/chunks/b159deb135e9946eea0572d52778170b-BZrtOTn0.woff2 +0 -0
  275. package/dist/client/_assets/chunks/b2e326f7f9b807451bf9c745df747efe-BvlONCPB.woff2 +0 -0
  276. package/dist/client/_assets/chunks/b341de0bc0bfe194a6c28dcfb566029e-DJAj3r6U.woff2 +0 -0
  277. package/dist/client/_assets/chunks/b846c293981ca5429eabaa967f222f26-GS-TAaO6.woff2 +0 -0
  278. package/dist/client/_assets/chunks/b91450304d9ac44f5c6e0da0792e055d-vS0S7kl0.woff2 +0 -0
  279. package/dist/client/_assets/chunks/baa325551b381c5e035ef143e56d4abe-DJg3GhKJ.woff2 +0 -0
  280. package/dist/client/_assets/chunks/bc3f0cb8b55ee11d32b94ca488976f8d-Dp5KZMSD.woff2 +0 -0
  281. package/dist/client/_assets/chunks/bcb3307527d6d0033bf0f17660b91e71-BMgRW_eW.woff2 +0 -0
  282. package/dist/client/_assets/chunks/be64f9379412876e00fd3a0bfa6b6fe9-BJ3FMWFM.woff2 +0 -0
  283. package/dist/client/_assets/chunks/befed8a4fa817773fa7109db6fe07f56-3sAmDsOO.woff2 +0 -0
  284. package/dist/client/_assets/chunks/bf1acc86e17b4229c548828a9d6f455d-JNuPCGDM.woff2 +0 -0
  285. package/dist/client/_assets/chunks/c09ee2b219982f8d46ad9968b7e6e0ba-qVb8yJHb.woff2 +0 -0
  286. package/dist/client/_assets/chunks/c0c7836749e585cee24ab2f8457c5b01-Ds0003oT.woff2 +0 -0
  287. package/dist/client/_assets/chunks/c2ac4ef1860812036ca2b8c4e4089bdc-DsziO8Du.woff2 +0 -0
  288. package/dist/client/_assets/chunks/c31019c08bd22464f7a88f090281404c-CUC0jMW1.woff2 +0 -0
  289. package/dist/client/_assets/chunks/c33c59feccf391f0c5f1f5d24e36d1fe-BXTVggad.woff2 +0 -0
  290. package/dist/client/_assets/chunks/c39ec937c6a8d124e8b68cf829ea5ad4-CarrkdmQ.woff2 +0 -0
  291. package/dist/client/_assets/chunks/c3fbc1f2557c343863a10698f8c966a2-BiOC1yo2.woff2 +0 -0
  292. package/dist/client/_assets/chunks/c3fd21315345ae541f6e98067059fa19-rHtO7vK5.woff2 +0 -0
  293. package/dist/client/_assets/chunks/c568a16e3168ceb1f191b70022c492ea-BpAiyU80.woff2 +0 -0
  294. package/dist/client/_assets/chunks/c57ee3b49b7e45b995539a6b2c51f138-IHDXeVRU.woff2 +0 -0
  295. package/dist/client/_assets/chunks/c5c1c0be944ea39a3f50a02d32f5b759-DAwbrvTL.woff2 +0 -0
  296. package/dist/client/_assets/chunks/c5e66d60be3375835bbd8d6b797f6eac-DWp4tpvN.woff2 +0 -0
  297. package/dist/client/_assets/chunks/c5f1075caf6d1344ee720de85114a521-DTTbeLhd.woff2 +0 -0
  298. package/dist/client/_assets/chunks/c82fd9456d7465b5e5bd3659e9b14c55-Cs6h6hE6.woff2 +0 -0
  299. package/dist/client/_assets/chunks/c90b7b65d2b9696fbf3a506738f94d68-DsvgiuQQ.woff2 +0 -0
  300. package/dist/client/_assets/chunks/cae29b3f8951eaf20d2f61c2206e28d9-CoHXmhmG.woff2 +0 -0
  301. package/dist/client/_assets/chunks/cba6ad3981cb7861428d4be169ee8124-CBdFsPAF.woff2 +0 -0
  302. package/dist/client/_assets/chunks/cc26525aa2af1f0b929af32ce50a7fba-D55LVtW9.woff2 +0 -0
  303. package/dist/client/_assets/chunks/cd0e7b51eddb22a77a09b025c0281434-ByI_TSTq.woff2 +0 -0
  304. package/dist/client/_assets/chunks/cd10a3af2133805d8c92104d1ee6ff18-Dtr5mBXe.woff2 +0 -0
  305. package/dist/client/_assets/chunks/cd6d074f3957d58bac58437fc97e5e33-CrVZuSbw.woff2 +0 -0
  306. package/dist/client/_assets/chunks/cd75ca47da9ae4c0899e37d4c543319b-DXU1s4Ja.woff2 +0 -0
  307. package/dist/client/_assets/chunks/cef249b6d013fb0cc0d574176bc23811-BL7WfNHA.woff2 +0 -0
  308. package/dist/client/_assets/chunks/d043b8d7a48bb0ac59ee1f1477d88eee-d5CwY2I8.woff2 +0 -0
  309. package/dist/client/_assets/chunks/d0bd387fda28e58d3c9b3efa2468dd8a-CjDFowFS.woff2 +0 -0
  310. package/dist/client/_assets/chunks/d12ce1d8445213317f9163283e58a05d-4RtGQnak.woff2 +0 -0
  311. package/dist/client/_assets/chunks/d15a3317942b7d31978a759fbf2222c8-DQ9QFQdS.woff2 +0 -0
  312. package/dist/client/_assets/chunks/d28fb13acf9ced9f0657fd4012c81cd2-D8Bgk6sd.woff2 +0 -0
  313. package/dist/client/_assets/chunks/d320b000b5978c7251148a6a154741b8-CcGZjeFx.woff2 +0 -0
  314. package/dist/client/_assets/chunks/d3714e6b90de8e2085dfb2514464dd6a-8LsVAcmb.woff2 +0 -0
  315. package/dist/client/_assets/chunks/d3beff96216c8af1aa79246476b6a323-hQysoMK3.woff2 +0 -0
  316. package/dist/client/_assets/chunks/d3e311f30c811dc339c262a79a51877e-CkUTbS74.woff2 +0 -0
  317. package/dist/client/_assets/chunks/d51f4cdc83711e510f5d25f03235597e-BY3VAGvr.woff2 +0 -0
  318. package/dist/client/_assets/chunks/d5df4a8dfd4328c67d933b3912c6ad0f-A2fccswC.woff2 +0 -0
  319. package/dist/client/_assets/chunks/d740dc2e854aaa7b3dcdd3ed25455eeb-Cw8LrB06.woff2 +0 -0
  320. package/dist/client/_assets/chunks/d8325ba7ae651bc30440905bd67b95f1-Dg8M_ijr.woff2 +0 -0
  321. package/dist/client/_assets/chunks/da13b136efb1d1e4c76575af8f79a698-BbfzLGVB.woff2 +0 -0
  322. package/dist/client/_assets/chunks/da2cf0ec56bf69374ee37764c7e3ea3d-fyVBKE2g.woff2 +0 -0
  323. package/dist/client/_assets/chunks/da93ae099ff3b7aae27b3f674d3fc721-BDG5ywtd.woff2 +0 -0
  324. package/dist/client/_assets/chunks/daf62255dd60679946f28c442ca62533-BnIjYSn3.woff2 +0 -0
  325. package/dist/client/_assets/chunks/dccda6a2e2db3b530788bdfa2acd1979-ByL7eZcn.woff2 +0 -0
  326. package/dist/client/_assets/chunks/dd01a1035345f6921a48525b8ce08f06-vkP6t4fC.woff2 +0 -0
  327. package/dist/client/_assets/chunks/e2204cf85edcb96c5de5c3dcf240da9d-Ch3zKjD-.woff2 +0 -0
  328. package/dist/client/_assets/chunks/e264213b9e102dabc603adb6e4fda5e6-CyxmQBHB.woff2 +0 -0
  329. package/dist/client/_assets/chunks/e3e913e145ddcd9323b2a0972967feb6-3sjEdzck.woff2 +0 -0
  330. package/dist/client/_assets/chunks/e4fb59479cedc87ba79785590bf861ca-sx7RZ8Vu.woff2 +0 -0
  331. package/dist/client/_assets/chunks/e5d00355f73293d40b61299459d17ca5-D8Vt3D-z.woff2 +0 -0
  332. package/dist/client/_assets/chunks/e647b8d2efc501c0cc0e407249cc7135-BrSW9DU4.woff2 +0 -0
  333. package/dist/client/_assets/chunks/e6e60ffb2ebd1828628764b507060aea-Dqyf48QC.woff2 +0 -0
  334. package/dist/client/_assets/chunks/e7c7ef3669ae48c0a736f06ca471e1d7-DNCebEB-.woff2 +0 -0
  335. package/dist/client/_assets/chunks/e81a742cacef744130c40de1b90837d8-DtAIFBk_.woff2 +0 -0
  336. package/dist/client/_assets/chunks/e8b755172122d1d0a5dd453e96b0ff24-BNTSyPYU.woff2 +0 -0
  337. package/dist/client/_assets/chunks/e99280299c305402eaa5271a3e36c49b-BpqXwl7U.woff2 +0 -0
  338. package/dist/client/_assets/chunks/e9c66b085052ece66bfadf45f711d3e1-DVza3Uob.woff2 +0 -0
  339. package/dist/client/_assets/chunks/ed7c6dafaa6d8bcf015ef0ca574837df-C7bcndJl.woff2 +0 -0
  340. package/dist/client/_assets/chunks/f00eb499abb94fa7b799d6d8c9b050e9-D_XvVTI9.woff2 +0 -0
  341. package/dist/client/_assets/chunks/f2900a1d30c3a33129f4e2225669bd0e-in84LilX.woff2 +0 -0
  342. package/dist/client/_assets/chunks/f2fb1f1fbf7e44afb53c672ec286a22e-tFk0sTQc.woff2 +0 -0
  343. package/dist/client/_assets/chunks/f372129c60aaece937cf7b91ee75c9b8-DiP_JYOt.woff2 +0 -0
  344. package/dist/client/_assets/chunks/f5237486197aeff59341a1ff38b8eff8-D_uuqrNZ.woff2 +0 -0
  345. package/dist/client/_assets/chunks/f553d54ef931066712d8f3f0ce018e1b-D8K983U5.woff2 +0 -0
  346. package/dist/client/_assets/chunks/f5d7487963d43c89da63aaf10f2e6fb7-B7GIrfPU.woff2 +0 -0
  347. package/dist/client/_assets/chunks/f649cba8e14c33d6bf2265483b14b895-Nm5wSov8.woff2 +0 -0
  348. package/dist/client/_assets/chunks/f6839df1bf7cb4dc8d27e5ea55bbe633-BIjWKN84.woff2 +0 -0
  349. package/dist/client/_assets/chunks/f6b7304e028980f77a7f7007bb540abd-CIlBt6sf.woff2 +0 -0
  350. package/dist/client/_assets/chunks/f75496953a40ff241178240209f56990-MOSKd67d.woff2 +0 -0
  351. package/dist/client/_assets/chunks/f7d36ffff7a75c9c6216d576a57dd00d-CaXQA5A8.woff2 +0 -0
  352. package/dist/client/_assets/chunks/f7f3f63e7a149cd89eccab3b52171d05-oNOOSdDV.woff2 +0 -0
  353. package/dist/client/_assets/chunks/f8db8bef0a6e1178835d350ae0d384a1-ZAiKM369.woff2 +0 -0
  354. package/dist/client/_assets/chunks/f92d74d1d217d21b39075ff23f79f7fd-BlTe0_IX.woff2 +0 -0
  355. package/dist/client/_assets/chunks/f9d6d981d8b87b3e469027277f585741-DQqIv77a.woff2 +0 -0
  356. package/dist/client/_assets/chunks/fa7d3b99744d7f2dc9e00864a97a62d6-Pfww07DK.woff2 +0 -0
  357. package/dist/client/_assets/chunks/fa8ed469ef290bfeb571418fe0abb628-D5v-Z7kY.woff2 +0 -0
  358. package/dist/client/_assets/chunks/fb0e90665980954719c2eb685b130bc0-CiWRvo58.woff2 +0 -0
  359. package/dist/client/_assets/chunks/fb4649a82c50620773d79820e2e5ff13-dw14czgx.woff2 +0 -0
  360. package/dist/client/_assets/chunks/fb61b690208eff56e6d8432951270901-CUAnVvWa.woff2 +0 -0
  361. package/dist/client/_assets/chunks/fb9402d6c6357a825affc402f14d5a7e-CIp4G53L.woff2 +0 -0
  362. package/dist/client/_assets/chunks/fcc41f6a067ddd658bba5c9dff234a32-BtZTNo2r.woff2 +0 -0
  363. package/dist/client/_assets/chunks/fd6ad889fcf3583bd9b0b6db53aad434-DqiKyYmz.woff2 +0 -0
  364. package/dist/client/_assets/chunks/ff0937ad63cda71ff420945ead55ab4d-CXGPdnOz.woff2 +0 -0
  365. package/dist/client/_assets/chunks/heic-to-XcUDQvtx.js +1 -0
  366. package/dist/client/_assets/chunks/literata-cyrillic-ext-wght-normal-CGKlZYBf.woff2 +0 -0
  367. package/dist/client/_assets/chunks/literata-cyrillic-wght-normal-DLqwHbi6.woff2 +0 -0
  368. package/dist/client/_assets/chunks/literata-greek-ext-wght-normal-e3e57Shi.woff2 +0 -0
  369. package/dist/client/_assets/chunks/literata-greek-wght-normal-CO1l-giJ.woff2 +0 -0
  370. package/dist/client/_assets/chunks/literata-latin-ext-wght-normal-BnEbWgdZ.woff2 +0 -0
  371. package/dist/client/_assets/chunks/literata-latin-wght-normal-DLxlUchJ.woff2 +0 -0
  372. package/dist/client/_assets/chunks/literata-vietnamese-wght-normal-LcSrhZ7T.woff2 +0 -0
  373. package/dist/client/_assets/chunks/module-ChVQstFd.js +716 -0
  374. package/dist/client/_assets/chunks/native-CR5HLOyf.js +1 -0
  375. package/dist/client/_assets/chunks/news-cycle-cyrillic-400-normal-9BSXki1I.woff +0 -0
  376. package/dist/client/_assets/chunks/news-cycle-cyrillic-400-normal-CUYmhJri.woff2 +0 -0
  377. package/dist/client/_assets/chunks/news-cycle-cyrillic-ext-400-normal-CKyb9yaQ.woff2 +0 -0
  378. package/dist/client/_assets/chunks/news-cycle-cyrillic-ext-400-normal-Llxpm7uO.woff +0 -0
  379. package/dist/client/_assets/chunks/news-cycle-greek-400-normal-BiAZ91Zl.woff2 +0 -0
  380. package/dist/client/_assets/chunks/news-cycle-greek-400-normal-D88oNngQ.woff +0 -0
  381. package/dist/client/_assets/chunks/news-cycle-greek-ext-400-normal-Ckclqjrc.woff2 +0 -0
  382. package/dist/client/_assets/chunks/news-cycle-greek-ext-400-normal-oz-bBDWj.woff +0 -0
  383. package/dist/client/_assets/chunks/news-cycle-latin-400-normal-BLgpQ3uo.woff +0 -0
  384. package/dist/client/_assets/chunks/news-cycle-latin-400-normal-BgW97ttO.woff2 +0 -0
  385. package/dist/client/_assets/chunks/news-cycle-latin-ext-400-normal-DmDltzLi.woff2 +0 -0
  386. package/dist/client/_assets/chunks/news-cycle-latin-ext-400-normal-lewDoXxP.woff +0 -0
  387. package/dist/client/_assets/chunks/news-cycle-vietnamese-400-normal-QPSuG-pc.woff +0 -0
  388. package/dist/client/_assets/chunks/news-cycle-vietnamese-400-normal-t2mxI9x9.woff2 +0 -0
  389. package/dist/client/_assets/chunks/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  390. package/dist/client/_assets/chunks/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  391. package/dist/client/_assets/chunks/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  392. package/dist/client/_assets/chunks/source-sans-3-cyrillic-ext-wght-normal-DzyfIafT.woff2 +0 -0
  393. package/dist/client/_assets/chunks/source-sans-3-cyrillic-wght-normal-BMDVbyM7.woff2 +0 -0
  394. package/dist/client/_assets/chunks/source-sans-3-greek-ext-wght-normal-BWSLJLk6.woff2 +0 -0
  395. package/dist/client/_assets/chunks/source-sans-3-greek-wght-normal-C9H9m1vD.woff2 +0 -0
  396. package/dist/client/_assets/chunks/source-sans-3-latin-ext-wght-normal-C8iNium2.woff2 +0 -0
  397. package/dist/client/_assets/chunks/source-sans-3-latin-wght-normal-BqRLTx4X.woff2 +0 -0
  398. package/dist/client/_assets/chunks/source-sans-3-vietnamese-wght-normal-C1uRvKPU.woff2 +0 -0
  399. package/dist/client/_assets/chunks/url-CG0eolsk.js +1 -0
  400. package/dist/client/_assets/client-auth.js +3260 -0
  401. package/dist/client/_assets/client-cjk-tc.css +1 -0
  402. package/dist/client/_assets/client-cjk.css +1 -0
  403. package/dist/client/_assets/client.css +2 -0
  404. package/dist/client/_assets/client.js +380 -0
  405. package/dist/index.js +2 -20359
  406. package/dist/node.js +479 -0
  407. package/package.json +67 -40
  408. package/src/__tests__/bin/uploads-cleanup.test.ts +77 -0
  409. package/src/__tests__/export-service.test.ts +550 -0
  410. package/src/__tests__/helpers/app.ts +60 -27
  411. package/src/__tests__/helpers/db.ts +14 -24
  412. package/src/__tests__/helpers/lingui-core-macro-mock.ts +15 -2
  413. package/src/__tests__/import-site-command.test.ts +406 -0
  414. package/src/__tests__/site-localize-media.test.ts +150 -0
  415. package/src/__tests__/site-media-parser.test.ts +216 -0
  416. package/src/app.tsx +277 -175
  417. package/src/assets/branding/generated/README.txt +15 -0
  418. package/src/assets/branding/generated/jant-apple-touch-icon.png +0 -0
  419. package/src/assets/branding/generated/jant-brand-assets.zip +0 -0
  420. package/src/assets/branding/generated/jant-brand-tile-512.png +0 -0
  421. package/src/assets/branding/generated/jant-brand-tile.svg +1 -0
  422. package/src/assets/branding/generated/jant-circle-tile-512.png +0 -0
  423. package/src/assets/branding/generated/jant-circle-tile.svg +1 -0
  424. package/src/assets/branding/generated/jant-favicon.ico +0 -0
  425. package/src/assets/branding/generated/jant-logo-negative.svg +1 -0
  426. package/src/assets/branding/generated/jant-logo-positive-512.png +0 -0
  427. package/src/assets/branding/generated/jant-logo-positive.svg +1 -0
  428. package/src/assets/branding/generated/jant-social-preview.png +0 -0
  429. package/src/assets/branding/generated/jant-square-tile-512.png +0 -0
  430. package/src/assets/branding/generated/jant-square-tile.svg +1 -0
  431. package/src/assets/branding/jant-logo-positive.svg +3 -0
  432. package/src/auth.ts +47 -6
  433. package/src/client/__tests__/avatar-upload.test.ts +186 -0
  434. package/src/client/__tests__/collection-form-bridge.test.ts +127 -0
  435. package/src/client/__tests__/collection-page-actions.test.ts +112 -0
  436. package/src/client/__tests__/collection-sort-menu.test.ts +78 -0
  437. package/src/client/__tests__/compose-bridge.test.ts +260 -0
  438. package/src/client/__tests__/compose-discovery.test.ts +155 -0
  439. package/src/client/__tests__/compose-shortcuts.test.ts +133 -0
  440. package/src/client/__tests__/confirm.test.ts +98 -0
  441. package/src/client/__tests__/custom-url-menu.test.ts +104 -0
  442. package/src/client/__tests__/form-enter-submit.test.ts +110 -0
  443. package/src/client/__tests__/post-form-bridge.test.ts +82 -0
  444. package/src/client/__tests__/sortable-list.test.ts +91 -0
  445. package/src/client/__tests__/toast.test.ts +46 -0
  446. package/src/client/archive-nav.js +1 -3
  447. package/src/client/avatar-upload.ts +66 -25
  448. package/src/client/collection-form-bridge.ts +32 -15
  449. package/src/client/collection-page-actions.ts +160 -0
  450. package/src/client/collection-sort-menu.ts +105 -0
  451. package/src/client/components/__tests__/jant-collection-form.test.ts +199 -51
  452. package/src/client/components/__tests__/jant-collection-sidebar.test.ts +306 -0
  453. package/src/client/components/__tests__/jant-compose-dialog.test.ts +2507 -342
  454. package/src/client/components/__tests__/jant-compose-editor.test.ts +484 -20
  455. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +298 -0
  456. package/src/client/components/__tests__/jant-post-form.test.ts +9 -8
  457. package/src/client/components/__tests__/jant-post-menu.test.ts +325 -0
  458. package/src/client/components/__tests__/jant-settings-avatar.test.ts +27 -3
  459. package/src/client/components/__tests__/jant-settings-general.test.ts +312 -84
  460. package/src/client/components/collection-manager-types.ts +51 -0
  461. package/src/client/components/collection-types.ts +12 -10
  462. package/src/client/components/compose-types.ts +80 -13
  463. package/src/client/components/jant-collection-form.ts +340 -509
  464. package/src/client/components/jant-collection-sidebar.ts +474 -463
  465. package/src/client/components/jant-compose-dialog.ts +1566 -479
  466. package/src/client/components/jant-compose-editor.ts +531 -276
  467. package/src/client/components/jant-compose-fullscreen.ts +184 -112
  468. package/src/client/components/jant-confirm-dialog.ts +249 -0
  469. package/src/client/components/jant-nav-manager.ts +79 -103
  470. package/src/client/components/jant-post-form.ts +4 -1
  471. package/src/client/components/jant-post-menu.ts +583 -306
  472. package/src/client/components/jant-settings-avatar.ts +15 -9
  473. package/src/client/components/jant-settings-general.ts +444 -137
  474. package/src/client/components/nav-manager-types.ts +6 -3
  475. package/src/client/components/post-form-template.ts +2 -9
  476. package/src/client/components/post-form-types.ts +2 -4
  477. package/src/client/components/settings-types.ts +34 -2
  478. package/src/client/compose-bridge.ts +297 -171
  479. package/src/client/compose-discovery-bridge.ts +9 -0
  480. package/src/client/compose-discovery.ts +254 -0
  481. package/src/client/compose-launch.ts +98 -0
  482. package/src/client/compose-shortcuts.ts +61 -0
  483. package/src/client/confirm.ts +40 -0
  484. package/src/client/custom-url-menu.ts +128 -0
  485. package/src/client/form-enter-submit.ts +87 -0
  486. package/src/client/json.ts +37 -0
  487. package/src/client/multipart-upload.ts +51 -18
  488. package/src/client/post-form-bridge.ts +20 -14
  489. package/src/client/runtime-paths.ts +72 -0
  490. package/src/client/settings-bridge.ts +54 -10
  491. package/src/client/site-header-nav.js +84 -0
  492. package/src/client/sortable-list.ts +152 -0
  493. package/src/client/thread-context.ts +11 -5
  494. package/src/client/tiptap/__tests__/floating-position.test.ts +74 -0
  495. package/src/client/tiptap/__tests__/link-toolbar.test.ts +94 -0
  496. package/src/client/tiptap/__tests__/paste-media.test.ts +39 -0
  497. package/src/client/tiptap/bubble-menu.ts +98 -13
  498. package/src/client/tiptap/create-editor.ts +6 -0
  499. package/src/client/tiptap/extensions.ts +15 -4
  500. package/src/client/tiptap/floating-position.ts +167 -0
  501. package/src/client/tiptap/inline-image-upload.ts +73 -0
  502. package/src/client/tiptap/link-input-rules.ts +56 -0
  503. package/src/client/tiptap/link-toolbar.ts +60 -14
  504. package/src/client/tiptap/paste-media.ts +120 -0
  505. package/src/client/tiptap/slash-commands.ts +205 -52
  506. package/src/client/tiptap/toolbar-mode.ts +31 -0
  507. package/src/client/toast.ts +136 -16
  508. package/src/client/types/sortablejs.d.ts +4 -4
  509. package/src/client/upload-session.ts +270 -0
  510. package/src/client/upload-with-metadata.ts +10 -17
  511. package/src/client-auth.ts +38 -0
  512. package/src/client.ts +10 -29
  513. package/src/db/__tests__/d1-query.test.ts +84 -0
  514. package/src/db/__tests__/demo-canonical-snapshot.test.ts +78 -0
  515. package/src/db/__tests__/demo-env-loader.test.ts +114 -0
  516. package/src/db/__tests__/dialect.test.ts +42 -0
  517. package/src/db/__tests__/migration-artifacts.test.ts +82 -0
  518. package/src/db/__tests__/migration-rehearsal.test.ts +73 -0
  519. package/src/db/__tests__/migration-runner.test.ts +72 -0
  520. package/src/db/__tests__/migrations.test.ts +293 -8
  521. package/src/db/__tests__/r2-query.test.ts +102 -0
  522. package/src/db/__tests__/wrangler-config.test.ts +86 -0
  523. package/src/db/backfills/0000_normalize_legacy_time_zone_values.sql +38 -0
  524. package/src/db/backfills/README.md +11 -0
  525. package/src/db/dialect.ts +71 -0
  526. package/src/db/index.ts +84 -2
  527. package/src/db/migrations/0000_baseline.sql +35 -57
  528. package/src/db/migrations/0002_site_aware_core.sql +354 -0
  529. package/src/db/migrations/0003_fts_site_aware.sql +38 -0
  530. package/src/db/migrations/0004_perpetual_eternity.sql +29 -0
  531. package/src/db/migrations/meta/0000_snapshot.json +134 -138
  532. package/src/db/migrations/meta/0001_snapshot.json +135 -139
  533. package/src/db/migrations/meta/0002_snapshot.json +1717 -0
  534. package/src/db/migrations/meta/0003_snapshot.json +1717 -0
  535. package/src/db/migrations/meta/0004_snapshot.json +1897 -0
  536. package/src/db/migrations/meta/_journal.json +23 -2
  537. package/src/db/migrations/pg/0000_pg_site_aware_baseline.sql +306 -0
  538. package/src/db/migrations/pg/0001_pg_search_support.sql +8 -0
  539. package/src/db/migrations/pg/0002_breezy_lockjaw.sql +29 -0
  540. package/src/db/migrations/pg/README.md +8 -0
  541. package/src/db/migrations/pg/meta/0000_snapshot.json +2195 -0
  542. package/src/db/migrations/pg/meta/0001_snapshot.json +2248 -0
  543. package/src/db/migrations/pg/meta/0002_snapshot.json +2476 -0
  544. package/src/db/migrations/pg/meta/_journal.json +27 -0
  545. package/src/db/pg/__tests__/node.test.ts +58 -0
  546. package/src/db/pg/node.ts +151 -0
  547. package/src/db/pg/schema.ts +739 -0
  548. package/src/db/raw-query.ts +15 -0
  549. package/src/db/rehearsal-fixtures/demo-current.json +25 -0
  550. package/src/db/rehearsal-fixtures/demo-current.sql +142 -0
  551. package/src/db/schema-bundle.ts +12 -0
  552. package/src/db/schema.ts +309 -128
  553. package/src/db/sqlite/schema.ts +1 -0
  554. package/src/i18n/__tests__/context.test.tsx +35 -0
  555. package/src/i18n/context.tsx +10 -2
  556. package/src/i18n/locales/en.po +1792 -231
  557. package/src/i18n/locales/en.ts +1 -1
  558. package/src/i18n/locales/glossary.zh-Hans.yml +116 -0
  559. package/src/i18n/locales/glossary.zh-Hant.yml +116 -0
  560. package/src/i18n/locales/zh-Hans.po +1831 -270
  561. package/src/i18n/locales/zh-Hans.ts +1 -1
  562. package/src/i18n/locales/zh-Hant.po +1835 -274
  563. package/src/i18n/locales/zh-Hant.ts +1 -1
  564. package/src/index.ts +4 -0
  565. package/src/lib/__tests__/asset-path.test.ts +54 -0
  566. package/src/lib/__tests__/blurhash-placeholder.test.ts +25 -1
  567. package/src/lib/__tests__/collection-groups.test.ts +63 -0
  568. package/src/lib/__tests__/collection-sort.test.ts +45 -0
  569. package/src/lib/__tests__/constants.test.ts +24 -1
  570. package/src/lib/__tests__/favicon.test.ts +1 -1
  571. package/src/lib/__tests__/feed.test.ts +147 -0
  572. package/src/lib/__tests__/hosted-control-plane.test.ts +106 -0
  573. package/src/lib/__tests__/hosted-domain.test.ts +78 -0
  574. package/src/lib/__tests__/hosted-signin.test.ts +103 -0
  575. package/src/lib/__tests__/icons.test.ts +14 -172
  576. package/src/lib/__tests__/image.test.ts +23 -4
  577. package/src/lib/__tests__/jant-branding.test.ts +160 -0
  578. package/src/lib/__tests__/markdown-to-tiptap.test.ts +27 -0
  579. package/src/lib/__tests__/page-title.test.ts +20 -0
  580. package/src/lib/__tests__/password.test.ts +60 -0
  581. package/src/lib/__tests__/post-display.test.ts +99 -0
  582. package/src/lib/__tests__/post-meta.test.ts +126 -0
  583. package/src/lib/__tests__/public-storage.test.ts +75 -0
  584. package/src/lib/__tests__/resolve-config.test.ts +156 -28
  585. package/src/lib/__tests__/schemas.test.ts +286 -22
  586. package/src/lib/__tests__/search-snippet.test.ts +43 -0
  587. package/src/lib/__tests__/site-resolution.test.ts +39 -0
  588. package/src/lib/__tests__/slug-format.test.ts +54 -0
  589. package/src/lib/__tests__/startup-config.test.ts +87 -0
  590. package/src/lib/__tests__/storage.test.ts +218 -1
  591. package/src/lib/__tests__/theme.test.ts +50 -13
  592. package/src/lib/__tests__/time.test.ts +44 -0
  593. package/src/lib/__tests__/timeline.test.ts +492 -4
  594. package/src/lib/__tests__/timezones.test.ts +51 -18
  595. package/src/lib/__tests__/tiptap-to-markdown.test.ts +23 -0
  596. package/src/lib/__tests__/url.test.ts +79 -1
  597. package/src/lib/__tests__/view.test.ts +74 -13
  598. package/src/lib/asset-path.ts +87 -0
  599. package/src/lib/blurhash-placeholder.ts +56 -1
  600. package/src/lib/collection-groups.ts +69 -0
  601. package/src/lib/collection-sort.ts +61 -0
  602. package/src/lib/confirm.ts +37 -0
  603. package/src/lib/constants.ts +20 -3
  604. package/src/lib/crypto.ts +47 -0
  605. package/src/lib/env.ts +245 -0
  606. package/src/lib/errors.ts +25 -9
  607. package/src/lib/favicon.ts +2 -1
  608. package/src/lib/featured-icons.ts +33 -0
  609. package/src/lib/feed.ts +73 -24
  610. package/src/lib/hosted-control-plane-sync.ts +27 -0
  611. package/src/lib/hosted-control-plane.ts +99 -0
  612. package/src/lib/hosted-domain-check.ts +98 -0
  613. package/src/lib/hosted-domain.ts +61 -0
  614. package/src/lib/hosted-signin.ts +115 -0
  615. package/src/lib/hosted-sso.ts +110 -0
  616. package/src/lib/icons.ts +10 -175
  617. package/src/lib/ids.ts +54 -0
  618. package/src/lib/image.ts +18 -7
  619. package/src/lib/jant-branding-generated.ts +947 -0
  620. package/src/lib/jant-branding.ts +520 -0
  621. package/src/lib/markdown-to-tiptap.ts +57 -0
  622. package/src/lib/media-helpers.ts +6 -2
  623. package/src/lib/navigation.ts +9 -2
  624. package/src/lib/page-title.ts +23 -0
  625. package/src/lib/pagination.ts +34 -0
  626. package/src/lib/password.ts +164 -0
  627. package/src/lib/post-display.ts +162 -0
  628. package/src/lib/post-meta.ts +95 -0
  629. package/src/lib/public-storage.ts +57 -0
  630. package/src/lib/render.tsx +22 -0
  631. package/src/lib/resolve-config.ts +78 -27
  632. package/src/lib/schemas.ts +271 -73
  633. package/src/lib/search-snippet.ts +110 -8
  634. package/src/lib/site-resolution.ts +28 -0
  635. package/src/lib/slug-format.ts +92 -0
  636. package/src/lib/slug.ts +1 -1
  637. package/src/lib/startup-config.ts +244 -0
  638. package/src/lib/storage.ts +722 -28
  639. package/src/lib/theme.ts +13 -6
  640. package/src/lib/time.ts +59 -15
  641. package/src/lib/timeline.ts +394 -63
  642. package/src/lib/timezones.ts +120 -50
  643. package/src/lib/tiptap-render.ts +1 -3
  644. package/src/lib/tiptap-to-markdown.ts +49 -0
  645. package/src/lib/upload.ts +216 -11
  646. package/src/lib/url.ts +210 -0
  647. package/src/lib/view.ts +87 -31
  648. package/src/middleware/__tests__/auth.test.ts +216 -14
  649. package/src/middleware/__tests__/error-handler.test.ts +37 -0
  650. package/src/middleware/__tests__/onboarding.test.ts +9 -0
  651. package/src/middleware/__tests__/secure-headers.test.ts +111 -0
  652. package/src/middleware/auth.ts +156 -28
  653. package/src/middleware/config.ts +29 -9
  654. package/src/middleware/error-handler.ts +16 -1
  655. package/src/middleware/onboarding.ts +15 -6
  656. package/src/middleware/secure-headers.ts +136 -25
  657. package/src/node/__tests__/cli-db-execute-file.test.ts +109 -0
  658. package/src/node/__tests__/cli-deploy.test.ts +124 -0
  659. package/src/node/__tests__/cli-export.test.ts +66 -0
  660. package/src/node/__tests__/cli-reset-password.test.ts +91 -0
  661. package/src/node/__tests__/cli-runtime-target.test.ts +37 -0
  662. package/src/node/__tests__/cli-site-selection.test.ts +133 -0
  663. package/src/node/__tests__/cli-site-snapshot.test.ts +636 -0
  664. package/src/node/__tests__/cli-site-token-env.test.ts +137 -0
  665. package/src/node/__tests__/runtime.test.ts +346 -0
  666. package/src/node/index.ts +18 -0
  667. package/src/node/request-handler.ts +668 -0
  668. package/src/node/runtime.ts +88 -0
  669. package/src/preset.css +73 -16
  670. package/src/routes/__tests__/compose.test.ts +77 -4
  671. package/src/routes/api/__tests__/attachments.test.ts +92 -0
  672. package/src/routes/api/__tests__/collections.test.ts +138 -24
  673. package/src/routes/api/__tests__/nav-items.test.ts +81 -20
  674. package/src/routes/api/__tests__/posts.test.ts +315 -57
  675. package/src/routes/api/__tests__/search.test.ts +25 -1
  676. package/src/routes/api/__tests__/settings.test.ts +380 -2
  677. package/src/routes/api/__tests__/upload-multipart.test.ts +216 -26
  678. package/src/routes/api/__tests__/uploads.test.ts +420 -0
  679. package/src/routes/api/attachments.ts +24 -0
  680. package/src/routes/api/collections.ts +59 -28
  681. package/src/routes/api/custom-urls.ts +6 -5
  682. package/src/routes/api/export.ts +37 -7
  683. package/src/routes/api/internal/__tests__/api-tokens.test.ts +55 -0
  684. package/src/routes/api/internal/__tests__/sites.test.ts +472 -0
  685. package/src/routes/api/internal/__tests__/uploads.test.ts +131 -0
  686. package/src/routes/api/internal/api-tokens.ts +17 -0
  687. package/src/routes/api/internal/sites.ts +241 -0
  688. package/src/routes/api/internal/uploads.ts +37 -0
  689. package/src/routes/api/nav-items.ts +24 -15
  690. package/src/routes/api/posts.ts +222 -74
  691. package/src/routes/api/search.ts +50 -9
  692. package/src/routes/api/settings.ts +141 -7
  693. package/src/routes/api/upload-multipart.ts +105 -16
  694. package/src/routes/api/upload.ts +90 -21
  695. package/src/routes/api/uploads.ts +247 -0
  696. package/src/routes/auth/__tests__/dev.test.ts +135 -0
  697. package/src/routes/auth/__tests__/hosted-sso.test.ts +136 -0
  698. package/src/routes/auth/__tests__/setup.test.ts +73 -49
  699. package/src/routes/auth/dev.ts +72 -0
  700. package/src/routes/auth/hosted-sso.ts +64 -0
  701. package/src/routes/auth/reset.tsx +41 -7
  702. package/src/routes/auth/setup.tsx +37 -38
  703. package/src/routes/auth/signin.tsx +36 -6
  704. package/src/routes/compose.tsx +25 -38
  705. package/src/routes/dash/__tests__/font-theme.test.ts +45 -34
  706. package/src/routes/dash/__tests__/settings-avatar.test.ts +24 -11
  707. package/src/routes/dash/custom-urls.tsx +245 -67
  708. package/src/routes/dash/settings.tsx +530 -139
  709. package/src/routes/feed/__tests__/rss.test.ts +200 -51
  710. package/src/routes/feed/__tests__/sitemap.test.ts +64 -0
  711. package/src/routes/feed/rss.ts +112 -48
  712. package/src/routes/feed/sitemap.ts +16 -6
  713. package/src/routes/hosted/__tests__/domain-check.test.ts +94 -0
  714. package/src/routes/hosted/domain-check.ts +39 -0
  715. package/src/routes/pages/__tests__/collections.test.ts +27 -21
  716. package/src/routes/pages/__tests__/featured.test.ts +9 -2
  717. package/src/routes/pages/archive.tsx +79 -33
  718. package/src/routes/pages/brand.tsx +119 -0
  719. package/src/routes/pages/collection.tsx +201 -65
  720. package/src/routes/pages/collections.tsx +46 -20
  721. package/src/routes/pages/featured.tsx +31 -39
  722. package/src/routes/pages/home.tsx +50 -25
  723. package/src/routes/pages/latest.tsx +20 -4
  724. package/src/routes/pages/new.tsx +10 -6
  725. package/src/routes/pages/page.tsx +27 -53
  726. package/src/routes/pages/partials.tsx +83 -0
  727. package/src/routes/pages/search.tsx +11 -9
  728. package/src/routes/pages/theme-sample.tsx +98 -0
  729. package/src/runtime/__tests__/node.test.ts +258 -0
  730. package/src/runtime/__tests__/readiness.test.ts +89 -0
  731. package/src/runtime/cloudflare.ts +102 -0
  732. package/src/runtime/index.ts +14 -0
  733. package/src/runtime/node.ts +187 -0
  734. package/src/runtime/readiness.ts +129 -0
  735. package/src/runtime/site.ts +169 -0
  736. package/src/services/__tests__/api-token.test.ts +5 -2
  737. package/src/services/__tests__/auth.test.ts +348 -0
  738. package/src/services/__tests__/collection.test.ts +199 -16
  739. package/src/services/__tests__/custom-url.test.ts +10 -3
  740. package/src/services/__tests__/hosted-handoff.test.ts +123 -0
  741. package/src/services/__tests__/media.test.ts +256 -33
  742. package/src/services/__tests__/navigation.test.ts +89 -4
  743. package/src/services/__tests__/post-timeline.test.ts +169 -2
  744. package/src/services/__tests__/post.test.ts +498 -39
  745. package/src/services/__tests__/search.test.ts +145 -14
  746. package/src/services/__tests__/settings.test.ts +162 -2
  747. package/src/services/__tests__/site-admin.test.ts +48 -0
  748. package/src/services/__tests__/site-profile.test.ts +175 -0
  749. package/src/services/api-token.ts +44 -11
  750. package/src/services/auth.ts +211 -9
  751. package/src/services/bootstrap.ts +68 -0
  752. package/src/services/collection.ts +556 -100
  753. package/src/services/custom-url.ts +42 -12
  754. package/src/services/export.ts +2269 -320
  755. package/src/services/hosted-handoff.ts +184 -0
  756. package/src/services/index.ts +110 -12
  757. package/src/services/media.ts +309 -39
  758. package/src/services/navigation.ts +141 -20
  759. package/src/services/path.ts +45 -9
  760. package/src/services/post.ts +1640 -248
  761. package/src/services/search.ts +222 -29
  762. package/src/services/settings.ts +202 -48
  763. package/src/services/site-admin.ts +825 -0
  764. package/src/services/site-member.ts +74 -0
  765. package/src/services/site-profile.ts +52 -0
  766. package/src/services/site.ts +250 -0
  767. package/src/services/upload-session.ts +707 -0
  768. package/src/style-cjk-tc.css +3 -0
  769. package/src/style-cjk.css +3 -0
  770. package/src/styles/components.css +647 -16
  771. package/src/styles/fonts/latin.css +4 -0
  772. package/src/styles/fonts/noto-serif-sc/400/02629e5d0a9860b7fe32ec1f0563213a.woff2 +0 -0
  773. package/src/styles/fonts/noto-serif-sc/400/031089da45fbfb7dc18ac827bef4c56e.woff2 +0 -0
  774. package/src/styles/fonts/noto-serif-sc/400/03ac785139320b7b13bac9c150bf72bf.woff2 +0 -0
  775. package/src/styles/fonts/noto-serif-sc/400/0b1f83a3c7e715560a55ad9eb0fb1c94.woff2 +0 -0
  776. package/src/styles/fonts/noto-serif-sc/400/14b040a2dda256936bc7b3470e548394.woff2 +0 -0
  777. package/src/styles/fonts/noto-serif-sc/400/189f272ea2600c74d576b7b15c014922.woff2 +0 -0
  778. package/src/styles/fonts/noto-serif-sc/400/1fbccc182322b513f57cd156a9a491b0.woff2 +0 -0
  779. package/src/styles/fonts/noto-serif-sc/400/21e0a71d86be7b8a9e812e7af09dd061.woff2 +0 -0
  780. package/src/styles/fonts/noto-serif-sc/400/265e048cc9f2f8a711ba585a534d5351.woff2 +0 -0
  781. package/src/styles/fonts/noto-serif-sc/400/2ae2ca951489c9d50cde5b36a2a5515b.woff2 +0 -0
  782. package/src/styles/fonts/noto-serif-sc/400/2ba802b14f21a58fc61606c88fa93373.woff2 +0 -0
  783. package/src/styles/fonts/noto-serif-sc/400/2deb444546774c3a3ab38c75eb69cdfb.woff2 +0 -0
  784. package/src/styles/fonts/noto-serif-sc/400/2fbccf9a3853eb59db1a825e044515fd.woff2 +0 -0
  785. package/src/styles/fonts/noto-serif-sc/400/2ff009fa8701505d7f3dc6c83763f019.woff2 +0 -0
  786. package/src/styles/fonts/noto-serif-sc/400/31424fe5d54692e7c8b38021ccb8597c.woff2 +0 -0
  787. package/src/styles/fonts/noto-serif-sc/400/360c190344c26278bbc50e2f4d6a2b3f.woff2 +0 -0
  788. package/src/styles/fonts/noto-serif-sc/400/39b0bbc910af9d2d6dcd8bd4abd6387d.woff2 +0 -0
  789. package/src/styles/fonts/noto-serif-sc/400/3adc8f6350cf5067bcb6dc5e44c45d41.woff2 +0 -0
  790. package/src/styles/fonts/noto-serif-sc/400/3bed5bd57de8f738e53cddaea88983d9.woff2 +0 -0
  791. package/src/styles/fonts/noto-serif-sc/400/3c201fd8d1bb20abe7d06b940e83a4d9.woff2 +0 -0
  792. package/src/styles/fonts/noto-serif-sc/400/3d385ea0880df7204258e290648ec012.woff2 +0 -0
  793. package/src/styles/fonts/noto-serif-sc/400/3dc1a4f0d7af59e16b5162a2b077a442.woff2 +0 -0
  794. package/src/styles/fonts/noto-serif-sc/400/3dc68e473fe23bd076dd46785cd23583.woff2 +0 -0
  795. package/src/styles/fonts/noto-serif-sc/400/435b7dca567809813fcb395a27ed83a0.woff2 +0 -0
  796. package/src/styles/fonts/noto-serif-sc/400/43693195e775d515689fa035394067fd.woff2 +0 -0
  797. package/src/styles/fonts/noto-serif-sc/400/43fb49e5b79ee7e553869d84e6e08b1e.woff2 +0 -0
  798. package/src/styles/fonts/noto-serif-sc/400/44dcbbc3cc8f22e613b342d691511ab6.woff2 +0 -0
  799. package/src/styles/fonts/noto-serif-sc/400/474fac21b12b7efd71f7c321578878b0.woff2 +0 -0
  800. package/src/styles/fonts/noto-serif-sc/400/4a23fe6e82fd496b5eb20401b6164efe.woff2 +0 -0
  801. package/src/styles/fonts/noto-serif-sc/400/4bc743968cf1c3ce5711de67ef1ccc4d.woff2 +0 -0
  802. package/src/styles/fonts/noto-serif-sc/400/4cf0f292f3358bd2f73b1cf4ec1476f3.woff2 +0 -0
  803. package/src/styles/fonts/noto-serif-sc/400/501f66f24bce8234441954de1b568403.woff2 +0 -0
  804. package/src/styles/fonts/noto-serif-sc/400/53a88404451448cd2e620a0ca0e45a20.woff2 +0 -0
  805. package/src/styles/fonts/noto-serif-sc/400/557cd00c5d6827e13d72a0c71b23587b.woff2 +0 -0
  806. package/src/styles/fonts/noto-serif-sc/400/563fa31542d553f25abab65cf7f81e1d.woff2 +0 -0
  807. package/src/styles/fonts/noto-serif-sc/400/56e1c4734bbbb38af2fbc262bf6e98f2.woff2 +0 -0
  808. package/src/styles/fonts/noto-serif-sc/400/5947f5da5da9a352a2b534ee64bfc29a.woff2 +0 -0
  809. package/src/styles/fonts/noto-serif-sc/400/5a10741e41259e235841440394c0763d.woff2 +0 -0
  810. package/src/styles/fonts/noto-serif-sc/400/60d8b0805a0a8c54a6cca216004beff5.woff2 +0 -0
  811. package/src/styles/fonts/noto-serif-sc/400/61bf4287453da4025d03fa6b2dba66ca.woff2 +0 -0
  812. package/src/styles/fonts/noto-serif-sc/400/638369541268ed5a10af97ad77498c73.woff2 +0 -0
  813. package/src/styles/fonts/noto-serif-sc/400/687d0f0f90a9b23e40102e16ad8e9836.woff2 +0 -0
  814. package/src/styles/fonts/noto-serif-sc/400/6e2164fad867d166de2e5b274f04a563.woff2 +0 -0
  815. package/src/styles/fonts/noto-serif-sc/400/6eefc9d430171c1e1e4034ecadee31c8.woff2 +0 -0
  816. package/src/styles/fonts/noto-serif-sc/400/71eafb8fbe3a734283517e230ad8b6db.woff2 +0 -0
  817. package/src/styles/fonts/noto-serif-sc/400/751f54dbb115140d5b645a6ba4aff5d3.woff2 +0 -0
  818. package/src/styles/fonts/noto-serif-sc/400/7609e7e74dd4d916a7abc7ecc7d95f7e.woff2 +0 -0
  819. package/src/styles/fonts/noto-serif-sc/400/76b9d6fe838ae4151d95ce7200aa2bf6.woff2 +0 -0
  820. package/src/styles/fonts/noto-serif-sc/400/78ce29fed872e44fc9014d94875d2aac.woff2 +0 -0
  821. package/src/styles/fonts/noto-serif-sc/400/79a85a253e9b3f12d2e2cb15e16b3003.woff2 +0 -0
  822. package/src/styles/fonts/noto-serif-sc/400/7caa14a095a6bc313aab780fe4ff7999.woff2 +0 -0
  823. package/src/styles/fonts/noto-serif-sc/400/7d138084cf03c14116b11297fce0e3e3.woff2 +0 -0
  824. package/src/styles/fonts/noto-serif-sc/400/880162ae92cd9e120eb4e4e11fae459d.woff2 +0 -0
  825. package/src/styles/fonts/noto-serif-sc/400/8f2b960c2823670e94f5b08aa65657e6.woff2 +0 -0
  826. package/src/styles/fonts/noto-serif-sc/400/8f89f57230d184f92a36e241874229d7.woff2 +0 -0
  827. package/src/styles/fonts/noto-serif-sc/400/9180de34b48b325200a97e267befff32.woff2 +0 -0
  828. package/src/styles/fonts/noto-serif-sc/400/95df3b9f681d9df411c30aea5b24f2e0.woff2 +0 -0
  829. package/src/styles/fonts/noto-serif-sc/400/975af5a496e8d87d821910aa9fe4d598.woff2 +0 -0
  830. package/src/styles/fonts/noto-serif-sc/400/97a874bbf55ce89a4ab7cd27c7e938b1.woff2 +0 -0
  831. package/src/styles/fonts/noto-serif-sc/400/9fd53607094e329fa8e5c785b3ff0f1a.woff2 +0 -0
  832. package/src/styles/fonts/noto-serif-sc/400/a578742770fcd2226e3c45b5b6efdcb0.woff2 +0 -0
  833. package/src/styles/fonts/noto-serif-sc/400/ae401fb4db80d5ff5cd3f8d9bc811070.woff2 +0 -0
  834. package/src/styles/fonts/noto-serif-sc/400/b0ab3a7f319ce6dd3c9a4de2674e7c72.woff2 +0 -0
  835. package/src/styles/fonts/noto-serif-sc/400/b159deb135e9946eea0572d52778170b.woff2 +0 -0
  836. package/src/styles/fonts/noto-serif-sc/400/b91450304d9ac44f5c6e0da0792e055d.woff2 +0 -0
  837. package/src/styles/fonts/noto-serif-sc/400/baa325551b381c5e035ef143e56d4abe.woff2 +0 -0
  838. package/src/styles/fonts/noto-serif-sc/400/c0c7836749e585cee24ab2f8457c5b01.woff2 +0 -0
  839. package/src/styles/fonts/noto-serif-sc/400/c2ac4ef1860812036ca2b8c4e4089bdc.woff2 +0 -0
  840. package/src/styles/fonts/noto-serif-sc/400/c31019c08bd22464f7a88f090281404c.woff2 +0 -0
  841. package/src/styles/fonts/noto-serif-sc/400/c57ee3b49b7e45b995539a6b2c51f138.woff2 +0 -0
  842. package/src/styles/fonts/noto-serif-sc/400/cd75ca47da9ae4c0899e37d4c543319b.woff2 +0 -0
  843. package/src/styles/fonts/noto-serif-sc/400/d12ce1d8445213317f9163283e58a05d.woff2 +0 -0
  844. package/src/styles/fonts/noto-serif-sc/400/d28fb13acf9ced9f0657fd4012c81cd2.woff2 +0 -0
  845. package/src/styles/fonts/noto-serif-sc/400/d3714e6b90de8e2085dfb2514464dd6a.woff2 +0 -0
  846. package/src/styles/fonts/noto-serif-sc/400/d3beff96216c8af1aa79246476b6a323.woff2 +0 -0
  847. package/src/styles/fonts/noto-serif-sc/400/d3e311f30c811dc339c262a79a51877e.woff2 +0 -0
  848. package/src/styles/fonts/noto-serif-sc/400/d51f4cdc83711e510f5d25f03235597e.woff2 +0 -0
  849. package/src/styles/fonts/noto-serif-sc/400/d5df4a8dfd4328c67d933b3912c6ad0f.woff2 +0 -0
  850. package/src/styles/fonts/noto-serif-sc/400/dccda6a2e2db3b530788bdfa2acd1979.woff2 +0 -0
  851. package/src/styles/fonts/noto-serif-sc/400/f5237486197aeff59341a1ff38b8eff8.woff2 +0 -0
  852. package/src/styles/fonts/noto-serif-sc/400/f553d54ef931066712d8f3f0ce018e1b.woff2 +0 -0
  853. package/src/styles/fonts/noto-serif-sc/400/f649cba8e14c33d6bf2265483b14b895.woff2 +0 -0
  854. package/src/styles/fonts/noto-serif-sc/400/f6839df1bf7cb4dc8d27e5ea55bbe633.woff2 +0 -0
  855. package/src/styles/fonts/noto-serif-sc/400/f6b7304e028980f77a7f7007bb540abd.woff2 +0 -0
  856. package/src/styles/fonts/noto-serif-sc/400/f8db8bef0a6e1178835d350ae0d384a1.woff2 +0 -0
  857. package/src/styles/fonts/noto-serif-sc/400/fb4649a82c50620773d79820e2e5ff13.woff2 +0 -0
  858. package/src/styles/fonts/noto-serif-sc/400/fb9402d6c6357a825affc402f14d5a7e.woff2 +0 -0
  859. package/src/styles/fonts/noto-serif-sc/700/0041f681602cc834bb5c55ced0155b8e.woff2 +0 -0
  860. package/src/styles/fonts/noto-serif-sc/700/00c9ac960d866ffaf8a866e5939024e2.woff2 +0 -0
  861. package/src/styles/fonts/noto-serif-sc/700/02e48e353415a00e0f556608cab33a43.woff2 +0 -0
  862. package/src/styles/fonts/noto-serif-sc/700/02faf6bb0ab4d56ada037c0bbaf9b9f7.woff2 +0 -0
  863. package/src/styles/fonts/noto-serif-sc/700/057a3d44d7fc606f113d863376d0ecf0.woff2 +0 -0
  864. package/src/styles/fonts/noto-serif-sc/700/10f2b44b3711d3f5bdcc30d373b543d1.woff2 +0 -0
  865. package/src/styles/fonts/noto-serif-sc/700/14c1506106d92621bafb11016735194e.woff2 +0 -0
  866. package/src/styles/fonts/noto-serif-sc/700/154a2c266902003bd8b7449386b10776.woff2 +0 -0
  867. package/src/styles/fonts/noto-serif-sc/700/19e39850472250bfdbce654d30859879.woff2 +0 -0
  868. package/src/styles/fonts/noto-serif-sc/700/1b5d0d740450fb996749464c9b882025.woff2 +0 -0
  869. package/src/styles/fonts/noto-serif-sc/700/1bca0a2a8840ad0ee9414940593db144.woff2 +0 -0
  870. package/src/styles/fonts/noto-serif-sc/700/1cda27dcaab977ae4ef5d5ab2a10ae03.woff2 +0 -0
  871. package/src/styles/fonts/noto-serif-sc/700/1f4bc38a1c50f55f335f5411cae47696.woff2 +0 -0
  872. package/src/styles/fonts/noto-serif-sc/700/2022cf097cb952d9fe75b53b4587d2c3.woff2 +0 -0
  873. package/src/styles/fonts/noto-serif-sc/700/2240a3c43ca5ef59ae3c348c7884792f.woff2 +0 -0
  874. package/src/styles/fonts/noto-serif-sc/700/280e3d2b58e9ad3501816072e01b0c13.woff2 +0 -0
  875. package/src/styles/fonts/noto-serif-sc/700/2874d07e228da9583b0e73646dacd498.woff2 +0 -0
  876. package/src/styles/fonts/noto-serif-sc/700/29d49891713a2785a3a383001cf58c59.woff2 +0 -0
  877. package/src/styles/fonts/noto-serif-sc/700/2d81eb6ab0ebbc0cabfb3a3341ba8800.woff2 +0 -0
  878. package/src/styles/fonts/noto-serif-sc/700/3179006d1c7ebfa50d27482a2859d9a0.woff2 +0 -0
  879. package/src/styles/fonts/noto-serif-sc/700/34c2edb3c37f71258f5c4a31091f0c6c.woff2 +0 -0
  880. package/src/styles/fonts/noto-serif-sc/700/389a950f2a1211946d294716e679e381.woff2 +0 -0
  881. package/src/styles/fonts/noto-serif-sc/700/42a74b6a625bbf0a9616ed4db3152c88.woff2 +0 -0
  882. package/src/styles/fonts/noto-serif-sc/700/457485e72835364662dfead6281638c1.woff2 +0 -0
  883. package/src/styles/fonts/noto-serif-sc/700/488846410760fe128dae939836ca5423.woff2 +0 -0
  884. package/src/styles/fonts/noto-serif-sc/700/48eb0a91e50c7f026e248c64145e72af.woff2 +0 -0
  885. package/src/styles/fonts/noto-serif-sc/700/4b0e79ba18b2ce424fa93e84996d7cba.woff2 +0 -0
  886. package/src/styles/fonts/noto-serif-sc/700/54e301f412730f391225db59dae1c8d5.woff2 +0 -0
  887. package/src/styles/fonts/noto-serif-sc/700/597d69d0710e0178b162afb0a0c20401.woff2 +0 -0
  888. package/src/styles/fonts/noto-serif-sc/700/5cc23a76e122d0ad2f7cede41bc35b27.woff2 +0 -0
  889. package/src/styles/fonts/noto-serif-sc/700/5d48855bed5f3554eff91b573d7376ac.woff2 +0 -0
  890. package/src/styles/fonts/noto-serif-sc/700/5ddcbe564b29ef08632e1aeb33455435.woff2 +0 -0
  891. package/src/styles/fonts/noto-serif-sc/700/605667a998e91e2b6a4a3cd7c31fe5a9.woff2 +0 -0
  892. package/src/styles/fonts/noto-serif-sc/700/67f32ceea9e78e5109f87724ad886010.woff2 +0 -0
  893. package/src/styles/fonts/noto-serif-sc/700/68f2fab82ec8e9291f08c3145111549c.woff2 +0 -0
  894. package/src/styles/fonts/noto-serif-sc/700/69519ada3f3f74ca20aacb8af48ab6b4.woff2 +0 -0
  895. package/src/styles/fonts/noto-serif-sc/700/6a6e884fb2b65ec5b4a3d5ecd0d01a6a.woff2 +0 -0
  896. package/src/styles/fonts/noto-serif-sc/700/6e1a8b45b01939088c3a8cfcf8c10681.woff2 +0 -0
  897. package/src/styles/fonts/noto-serif-sc/700/70adaf50c56d5ff859c64d35e0f1e34e.woff2 +0 -0
  898. package/src/styles/fonts/noto-serif-sc/700/72ee453ac0e19bd2c631c8921c44e3de.woff2 +0 -0
  899. package/src/styles/fonts/noto-serif-sc/700/753b5f6fb254bacb6618ace25af3df60.woff2 +0 -0
  900. package/src/styles/fonts/noto-serif-sc/700/76d4244186d118eea245d1385a4de2ec.woff2 +0 -0
  901. package/src/styles/fonts/noto-serif-sc/700/7a86b155111ba20f3e87306ff6beac77.woff2 +0 -0
  902. package/src/styles/fonts/noto-serif-sc/700/7b1e76975b0984e6f83e3f9f8069e784.woff2 +0 -0
  903. package/src/styles/fonts/noto-serif-sc/700/7b6c60131822a0e4d36d980d52509d4e.woff2 +0 -0
  904. package/src/styles/fonts/noto-serif-sc/700/7cbda564cb2dd4799ab9e89d51286aa7.woff2 +0 -0
  905. package/src/styles/fonts/noto-serif-sc/700/7f60eefa15956d6f06dd92404887d58c.woff2 +0 -0
  906. package/src/styles/fonts/noto-serif-sc/700/7f8c15e0ecb102738981d9fa4cb6b921.woff2 +0 -0
  907. package/src/styles/fonts/noto-serif-sc/700/812b5a4b87f3a7b4afc1cfebc864f413.woff2 +0 -0
  908. package/src/styles/fonts/noto-serif-sc/700/812dfb7f8144d01b3cc9d5ce0b472f40.woff2 +0 -0
  909. package/src/styles/fonts/noto-serif-sc/700/84742b1ede4f0bb6d27131298eba21b4.woff2 +0 -0
  910. package/src/styles/fonts/noto-serif-sc/700/8555f0285e3d28e95e2fc0ccccd9caff.woff2 +0 -0
  911. package/src/styles/fonts/noto-serif-sc/700/8e04e64c8f68d292a18d4160fbde8671.woff2 +0 -0
  912. package/src/styles/fonts/noto-serif-sc/700/958efb9b2fa2ea0008ffef009885f9f8.woff2 +0 -0
  913. package/src/styles/fonts/noto-serif-sc/700/9ca9b71010a5faeee7047ef97aeee13b.woff2 +0 -0
  914. package/src/styles/fonts/noto-serif-sc/700/9cd0b77920b9d6c64eb686493123fc76.woff2 +0 -0
  915. package/src/styles/fonts/noto-serif-sc/700/9ebd27835ffcbd794e67151ab046ce68.woff2 +0 -0
  916. package/src/styles/fonts/noto-serif-sc/700/a077f51cfb5cffb4ff4d8e229c0e9e79.woff2 +0 -0
  917. package/src/styles/fonts/noto-serif-sc/700/a397997b579d3945c9c70a979c17a8ad.woff2 +0 -0
  918. package/src/styles/fonts/noto-serif-sc/700/a68d9d5027803832bb28e78cdcd04949.woff2 +0 -0
  919. package/src/styles/fonts/noto-serif-sc/700/a904b05966368bcf90b632c7c2e5f76b.woff2 +0 -0
  920. package/src/styles/fonts/noto-serif-sc/700/aa218a2c45f3749537ce876201e5152b.woff2 +0 -0
  921. package/src/styles/fonts/noto-serif-sc/700/aa28db16818f9eaa8c817f289e1c3270.woff2 +0 -0
  922. package/src/styles/fonts/noto-serif-sc/700/aa96d698491c2540e2dcf7009c65c456.woff2 +0 -0
  923. package/src/styles/fonts/noto-serif-sc/700/ae25c41034ddc1a9e0b41f5034c9aa4b.woff2 +0 -0
  924. package/src/styles/fonts/noto-serif-sc/700/ae289ae3f8cdb54a3a6c07174517afec.woff2 +0 -0
  925. package/src/styles/fonts/noto-serif-sc/700/b02dfa2aa52cbdb1b2f11a9f44335469.woff2 +0 -0
  926. package/src/styles/fonts/noto-serif-sc/700/b2e326f7f9b807451bf9c745df747efe.woff2 +0 -0
  927. package/src/styles/fonts/noto-serif-sc/700/c33c59feccf391f0c5f1f5d24e36d1fe.woff2 +0 -0
  928. package/src/styles/fonts/noto-serif-sc/700/c82fd9456d7465b5e5bd3659e9b14c55.woff2 +0 -0
  929. package/src/styles/fonts/noto-serif-sc/700/c90b7b65d2b9696fbf3a506738f94d68.woff2 +0 -0
  930. package/src/styles/fonts/noto-serif-sc/700/cba6ad3981cb7861428d4be169ee8124.woff2 +0 -0
  931. package/src/styles/fonts/noto-serif-sc/700/cc26525aa2af1f0b929af32ce50a7fba.woff2 +0 -0
  932. package/src/styles/fonts/noto-serif-sc/700/cd0e7b51eddb22a77a09b025c0281434.woff2 +0 -0
  933. package/src/styles/fonts/noto-serif-sc/700/cd6d074f3957d58bac58437fc97e5e33.woff2 +0 -0
  934. package/src/styles/fonts/noto-serif-sc/700/cef249b6d013fb0cc0d574176bc23811.woff2 +0 -0
  935. package/src/styles/fonts/noto-serif-sc/700/d0bd387fda28e58d3c9b3efa2468dd8a.woff2 +0 -0
  936. package/src/styles/fonts/noto-serif-sc/700/da93ae099ff3b7aae27b3f674d3fc721.woff2 +0 -0
  937. package/src/styles/fonts/noto-serif-sc/700/e264213b9e102dabc603adb6e4fda5e6.woff2 +0 -0
  938. package/src/styles/fonts/noto-serif-sc/700/e7c7ef3669ae48c0a736f06ca471e1d7.woff2 +0 -0
  939. package/src/styles/fonts/noto-serif-sc/700/e81a742cacef744130c40de1b90837d8.woff2 +0 -0
  940. package/src/styles/fonts/noto-serif-sc/700/e8b755172122d1d0a5dd453e96b0ff24.woff2 +0 -0
  941. package/src/styles/fonts/noto-serif-sc/700/e99280299c305402eaa5271a3e36c49b.woff2 +0 -0
  942. package/src/styles/fonts/noto-serif-sc/700/e9c66b085052ece66bfadf45f711d3e1.woff2 +0 -0
  943. package/src/styles/fonts/noto-serif-sc/700/ed7c6dafaa6d8bcf015ef0ca574837df.woff2 +0 -0
  944. package/src/styles/fonts/noto-serif-sc/700/f2900a1d30c3a33129f4e2225669bd0e.woff2 +0 -0
  945. package/src/styles/fonts/noto-serif-sc/700/fa7d3b99744d7f2dc9e00864a97a62d6.woff2 +0 -0
  946. package/src/styles/fonts/noto-serif-sc/700/fb0e90665980954719c2eb685b130bc0.woff2 +0 -0
  947. package/src/styles/fonts/noto-serif-sc/noto-serif-sc.css +3615 -0
  948. package/src/styles/fonts/noto-serif-tc/400/008ea9091e332c639ceb18874eacd60c.woff2 +0 -0
  949. package/src/styles/fonts/noto-serif-tc/400/053bd3d7aec0040d0cc50c261a1f4e3e.woff2 +0 -0
  950. package/src/styles/fonts/noto-serif-tc/400/0713613227cc4c686c45a279f8bdc166.woff2 +0 -0
  951. package/src/styles/fonts/noto-serif-tc/400/0e97f44ebc65384c346fe19bcc52fa20.woff2 +0 -0
  952. package/src/styles/fonts/noto-serif-tc/400/1139d32ae2bdeb26c0c8f31330aa9a9f.woff2 +0 -0
  953. package/src/styles/fonts/noto-serif-tc/400/15f8c0df47fd639d1b0d9bd5cf507c9b.woff2 +0 -0
  954. package/src/styles/fonts/noto-serif-tc/400/1668bd859ffe15bed7d5563117d8d5fb.woff2 +0 -0
  955. package/src/styles/fonts/noto-serif-tc/400/190e3f8632494e7c095117f26b1c811e.woff2 +0 -0
  956. package/src/styles/fonts/noto-serif-tc/400/19ad151c22ce1befe0a9ea643fbee570.woff2 +0 -0
  957. package/src/styles/fonts/noto-serif-tc/400/1c820b5295868008ca7c78afa5b7655d.woff2 +0 -0
  958. package/src/styles/fonts/noto-serif-tc/400/1fbe225742c69f4ba9ea5f74922f0ca1.woff2 +0 -0
  959. package/src/styles/fonts/noto-serif-tc/400/2a7cedfcd6e4c7cec36f4fd7b0f329c2.woff2 +0 -0
  960. package/src/styles/fonts/noto-serif-tc/400/2acea04a920f6af31e7db97052f563c6.woff2 +0 -0
  961. package/src/styles/fonts/noto-serif-tc/400/2e98b666924b8e0a09d1aeeefd24bdd2.woff2 +0 -0
  962. package/src/styles/fonts/noto-serif-tc/400/2fd3fceb6faed5e3db768e88d7614dca.woff2 +0 -0
  963. package/src/styles/fonts/noto-serif-tc/400/35cf5dd04315e0b906e1a413d7905a2f.woff2 +0 -0
  964. package/src/styles/fonts/noto-serif-tc/400/387c811226f303af62f1e21aae6f5c83.woff2 +0 -0
  965. package/src/styles/fonts/noto-serif-tc/400/3b41385fc27419c19822060daa0b5cb3.woff2 +0 -0
  966. package/src/styles/fonts/noto-serif-tc/400/3cbe4a697fd595ef42c899de7d3e5445.woff2 +0 -0
  967. package/src/styles/fonts/noto-serif-tc/400/3d83dacbbec3d8532ae9afede21f3aab.woff2 +0 -0
  968. package/src/styles/fonts/noto-serif-tc/400/47479c470fae70f10b7c964a7ecbf274.woff2 +0 -0
  969. package/src/styles/fonts/noto-serif-tc/400/4dc0728df0f2ba70796f45f05654c7ba.woff2 +0 -0
  970. package/src/styles/fonts/noto-serif-tc/400/4dc2bc2c55b47f57d13b63aa6b1c8bd4.woff2 +0 -0
  971. package/src/styles/fonts/noto-serif-tc/400/4e1cc6aafb411b572c8d3511e925ecf1.woff2 +0 -0
  972. package/src/styles/fonts/noto-serif-tc/400/5227dbe9933760a48baff21ebd13fc98.woff2 +0 -0
  973. package/src/styles/fonts/noto-serif-tc/400/526b263e72c189f4b065738aaa6d423a.woff2 +0 -0
  974. package/src/styles/fonts/noto-serif-tc/400/54da934819a917f561b439bfd10f88b6.woff2 +0 -0
  975. package/src/styles/fonts/noto-serif-tc/400/5bfc7a121c35ae42623ef804fb525e0e.woff2 +0 -0
  976. package/src/styles/fonts/noto-serif-tc/400/5f90024544c2907c6c0203c6210c50be.woff2 +0 -0
  977. package/src/styles/fonts/noto-serif-tc/400/649b12d7cee7bb981842946e4547e6ca.woff2 +0 -0
  978. package/src/styles/fonts/noto-serif-tc/400/653bef2ed891ae48d8ed712283080649.woff2 +0 -0
  979. package/src/styles/fonts/noto-serif-tc/400/67d2a81f06ba352f17fbdc3a5e6ea59e.woff2 +0 -0
  980. package/src/styles/fonts/noto-serif-tc/400/68304f3229cf763465f044fccb5892c0.woff2 +0 -0
  981. package/src/styles/fonts/noto-serif-tc/400/688a88911e4da17b609196a959b8b930.woff2 +0 -0
  982. package/src/styles/fonts/noto-serif-tc/400/6db6ddf72c38a78ce44c1327701152e1.woff2 +0 -0
  983. package/src/styles/fonts/noto-serif-tc/400/77a7533bd21ccd33192d142a93555aa8.woff2 +0 -0
  984. package/src/styles/fonts/noto-serif-tc/400/7d65a3d6a65050eb5e6eca43398aeba4.woff2 +0 -0
  985. package/src/styles/fonts/noto-serif-tc/400/7dfc711962c8771f97e7c8898a6bcb65.woff2 +0 -0
  986. package/src/styles/fonts/noto-serif-tc/400/7ef123b62d530fcba73974fa265e0aae.woff2 +0 -0
  987. package/src/styles/fonts/noto-serif-tc/400/80466082a896fd328f30a78593c7c568.woff2 +0 -0
  988. package/src/styles/fonts/noto-serif-tc/400/8a3c84b0df36f851f5fea75ee8757951.woff2 +0 -0
  989. package/src/styles/fonts/noto-serif-tc/400/8b0c8c9f8cfa9fa090d97c5a5efb1f4c.woff2 +0 -0
  990. package/src/styles/fonts/noto-serif-tc/400/8dc035a34c76e6515ca203e2df182588.woff2 +0 -0
  991. package/src/styles/fonts/noto-serif-tc/400/8eb06109812cb80be44f47b8179c2709.woff2 +0 -0
  992. package/src/styles/fonts/noto-serif-tc/400/904324af375d5fd370af1054355a050e.woff2 +0 -0
  993. package/src/styles/fonts/noto-serif-tc/400/911a2092d64d6d6494b254d819af2b91.woff2 +0 -0
  994. package/src/styles/fonts/noto-serif-tc/400/9de02d745b8e25c6411fb152fb067748.woff2 +0 -0
  995. package/src/styles/fonts/noto-serif-tc/400/9eb33a430058d839ebbe2af4b2e0daa9.woff2 +0 -0
  996. package/src/styles/fonts/noto-serif-tc/400/9f5a73aa8ba417688019d628f334db07.woff2 +0 -0
  997. package/src/styles/fonts/noto-serif-tc/400/a0f0c06d5c7a3ffa97706178cce212a8.woff2 +0 -0
  998. package/src/styles/fonts/noto-serif-tc/400/a38c1830367f784181b6f544b0b11bbd.woff2 +0 -0
  999. package/src/styles/fonts/noto-serif-tc/400/a9cf85e27428c14351d30eac8cbc8d91.woff2 +0 -0
  1000. package/src/styles/fonts/noto-serif-tc/400/aa0ce6740f301351761a0615cc8b2e99.woff2 +0 -0
  1001. package/src/styles/fonts/noto-serif-tc/400/bc3f0cb8b55ee11d32b94ca488976f8d.woff2 +0 -0
  1002. package/src/styles/fonts/noto-serif-tc/400/bcb3307527d6d0033bf0f17660b91e71.woff2 +0 -0
  1003. package/src/styles/fonts/noto-serif-tc/400/bf1acc86e17b4229c548828a9d6f455d.woff2 +0 -0
  1004. package/src/styles/fonts/noto-serif-tc/400/c3fbc1f2557c343863a10698f8c966a2.woff2 +0 -0
  1005. package/src/styles/fonts/noto-serif-tc/400/c5c1c0be944ea39a3f50a02d32f5b759.woff2 +0 -0
  1006. package/src/styles/fonts/noto-serif-tc/400/c5f1075caf6d1344ee720de85114a521.woff2 +0 -0
  1007. package/src/styles/fonts/noto-serif-tc/400/cae29b3f8951eaf20d2f61c2206e28d9.woff2 +0 -0
  1008. package/src/styles/fonts/noto-serif-tc/400/d043b8d7a48bb0ac59ee1f1477d88eee.woff2 +0 -0
  1009. package/src/styles/fonts/noto-serif-tc/400/d320b000b5978c7251148a6a154741b8.woff2 +0 -0
  1010. package/src/styles/fonts/noto-serif-tc/400/da13b136efb1d1e4c76575af8f79a698.woff2 +0 -0
  1011. package/src/styles/fonts/noto-serif-tc/400/da2cf0ec56bf69374ee37764c7e3ea3d.woff2 +0 -0
  1012. package/src/styles/fonts/noto-serif-tc/400/daf62255dd60679946f28c442ca62533.woff2 +0 -0
  1013. package/src/styles/fonts/noto-serif-tc/400/dd01a1035345f6921a48525b8ce08f06.woff2 +0 -0
  1014. package/src/styles/fonts/noto-serif-tc/400/e4fb59479cedc87ba79785590bf861ca.woff2 +0 -0
  1015. package/src/styles/fonts/noto-serif-tc/400/e5d00355f73293d40b61299459d17ca5.woff2 +0 -0
  1016. package/src/styles/fonts/noto-serif-tc/400/e647b8d2efc501c0cc0e407249cc7135.woff2 +0 -0
  1017. package/src/styles/fonts/noto-serif-tc/400/e6e60ffb2ebd1828628764b507060aea.woff2 +0 -0
  1018. package/src/styles/fonts/noto-serif-tc/400/f00eb499abb94fa7b799d6d8c9b050e9.woff2 +0 -0
  1019. package/src/styles/fonts/noto-serif-tc/400/f7d36ffff7a75c9c6216d576a57dd00d.woff2 +0 -0
  1020. package/src/styles/fonts/noto-serif-tc/400/f7f3f63e7a149cd89eccab3b52171d05.woff2 +0 -0
  1021. package/src/styles/fonts/noto-serif-tc/400/fcc41f6a067ddd658bba5c9dff234a32.woff2 +0 -0
  1022. package/src/styles/fonts/noto-serif-tc/400/fd6ad889fcf3583bd9b0b6db53aad434.woff2 +0 -0
  1023. package/src/styles/fonts/noto-serif-tc/700/0c055db157e7a13f3103cc2a6b67fec3.woff2 +0 -0
  1024. package/src/styles/fonts/noto-serif-tc/700/0d3f5cc265cb6c439c517f2c4cebbddf.woff2 +0 -0
  1025. package/src/styles/fonts/noto-serif-tc/700/1259e5825b314fe2b8bb96d6e8069ee5.woff2 +0 -0
  1026. package/src/styles/fonts/noto-serif-tc/700/12c518ebfe62818af550c08947e359e7.woff2 +0 -0
  1027. package/src/styles/fonts/noto-serif-tc/700/145831a59caa06d894022fe60212ed21.woff2 +0 -0
  1028. package/src/styles/fonts/noto-serif-tc/700/169a096e61d38a773216f51d1ec2cc06.woff2 +0 -0
  1029. package/src/styles/fonts/noto-serif-tc/700/1884a2b22d314c7d57707f03aec348e0.woff2 +0 -0
  1030. package/src/styles/fonts/noto-serif-tc/700/1e2640116bbba817f43c43cc69371cf1.woff2 +0 -0
  1031. package/src/styles/fonts/noto-serif-tc/700/2573703213da30d3ba18925b100b2c2b.woff2 +0 -0
  1032. package/src/styles/fonts/noto-serif-tc/700/26839c0e47c73514b8d8f660d24d6b19.woff2 +0 -0
  1033. package/src/styles/fonts/noto-serif-tc/700/2a22e14a9ad53f2abb3c7e85017b7d12.woff2 +0 -0
  1034. package/src/styles/fonts/noto-serif-tc/700/2b3e8c5703b91f39f6027f43f0da6f4b.woff2 +0 -0
  1035. package/src/styles/fonts/noto-serif-tc/700/2f27ee4fb2cf6a280e110e09c18ef73e.woff2 +0 -0
  1036. package/src/styles/fonts/noto-serif-tc/700/31342cebfa5ea7fac06b4ea372d96bc5.woff2 +0 -0
  1037. package/src/styles/fonts/noto-serif-tc/700/375329ba0b50b94b35006498e555867c.woff2 +0 -0
  1038. package/src/styles/fonts/noto-serif-tc/700/427577dcb707d1d35eebd155b4222aa7.woff2 +0 -0
  1039. package/src/styles/fonts/noto-serif-tc/700/450a5b53be0a8a778bb0b623e86b652f.woff2 +0 -0
  1040. package/src/styles/fonts/noto-serif-tc/700/477866c8396474a17317dcac3e7a014f.woff2 +0 -0
  1041. package/src/styles/fonts/noto-serif-tc/700/478ebdaadda7775c391c5dcab4e697df.woff2 +0 -0
  1042. package/src/styles/fonts/noto-serif-tc/700/48d6a97a185c799be4fe67aaf7edf213.woff2 +0 -0
  1043. package/src/styles/fonts/noto-serif-tc/700/490edb9fc8a4356aea556eed32287464.woff2 +0 -0
  1044. package/src/styles/fonts/noto-serif-tc/700/4c4bdd0b3f3a52e28f3b643c1c5d43be.woff2 +0 -0
  1045. package/src/styles/fonts/noto-serif-tc/700/4c96411f3693a9a8657a9c1190f82bce.woff2 +0 -0
  1046. package/src/styles/fonts/noto-serif-tc/700/4c9aa12aba2a6a57410eacaff7427916.woff2 +0 -0
  1047. package/src/styles/fonts/noto-serif-tc/700/4cca7233bf8ce5dec2e5d146b993d626.woff2 +0 -0
  1048. package/src/styles/fonts/noto-serif-tc/700/4d0a9128d06ea857f203bf5d007b1ab9.woff2 +0 -0
  1049. package/src/styles/fonts/noto-serif-tc/700/4e5384920bbb155d9d8d74887b09ea5b.woff2 +0 -0
  1050. package/src/styles/fonts/noto-serif-tc/700/50cfd672bfa62512ba090420acf35c87.woff2 +0 -0
  1051. package/src/styles/fonts/noto-serif-tc/700/551b1d7a0b80c8d42af09863cdca7f01.woff2 +0 -0
  1052. package/src/styles/fonts/noto-serif-tc/700/555d990ab3fd7d3d66c6d1fa9a82fec5.woff2 +0 -0
  1053. package/src/styles/fonts/noto-serif-tc/700/5979c33a7eb5963bf8e83e46931b5fb5.woff2 +0 -0
  1054. package/src/styles/fonts/noto-serif-tc/700/59966ee0b069b577510fe68c350da0ee.woff2 +0 -0
  1055. package/src/styles/fonts/noto-serif-tc/700/60a14064ed334f0155795d795e926abe.woff2 +0 -0
  1056. package/src/styles/fonts/noto-serif-tc/700/611b62d5fd9698d9b5ce495ba6f14c93.woff2 +0 -0
  1057. package/src/styles/fonts/noto-serif-tc/700/6e83fe0b6e708eaf1c3003d6dee11488.woff2 +0 -0
  1058. package/src/styles/fonts/noto-serif-tc/700/70861376e5d4f92f8aa7aa1b2749b617.woff2 +0 -0
  1059. package/src/styles/fonts/noto-serif-tc/700/7124d150570d39ced8d45507dc11ca1e.woff2 +0 -0
  1060. package/src/styles/fonts/noto-serif-tc/700/79a7fdf7d9c722b5723ae25e6ff8e203.woff2 +0 -0
  1061. package/src/styles/fonts/noto-serif-tc/700/8c8393bc875f1ee36697a2113f4421ea.woff2 +0 -0
  1062. package/src/styles/fonts/noto-serif-tc/700/8e6c9bb43afb8cbbff7cf1055e67c9bd.woff2 +0 -0
  1063. package/src/styles/fonts/noto-serif-tc/700/90ac4f9d2aa02afdace2843b49fc18bb.woff2 +0 -0
  1064. package/src/styles/fonts/noto-serif-tc/700/90b6f57d77847f512fd11db74fa912f1.woff2 +0 -0
  1065. package/src/styles/fonts/noto-serif-tc/700/913759e6690f9fc0746a20b96f4bdcb4.woff2 +0 -0
  1066. package/src/styles/fonts/noto-serif-tc/700/9154e26efe532a85a27d80902f5a2d6c.woff2 +0 -0
  1067. package/src/styles/fonts/noto-serif-tc/700/94e7ed67f1557b76fead6b6e456a0415.woff2 +0 -0
  1068. package/src/styles/fonts/noto-serif-tc/700/95127a92346c04fec1fa81d6295b0a28.woff2 +0 -0
  1069. package/src/styles/fonts/noto-serif-tc/700/9fbc06b2e3ff16b9d705c76db563ef17.woff2 +0 -0
  1070. package/src/styles/fonts/noto-serif-tc/700/a3b929542e6c5a0644b73a7c8a8b6c03.woff2 +0 -0
  1071. package/src/styles/fonts/noto-serif-tc/700/a8857f5d478f101c053ba02d2f223e90.woff2 +0 -0
  1072. package/src/styles/fonts/noto-serif-tc/700/aa64c9953af43ca65832f413895bb433.woff2 +0 -0
  1073. package/src/styles/fonts/noto-serif-tc/700/ada8f0241244c60ec8d3d59ad37f20a5.woff2 +0 -0
  1074. package/src/styles/fonts/noto-serif-tc/700/b341de0bc0bfe194a6c28dcfb566029e.woff2 +0 -0
  1075. package/src/styles/fonts/noto-serif-tc/700/b846c293981ca5429eabaa967f222f26.woff2 +0 -0
  1076. package/src/styles/fonts/noto-serif-tc/700/be64f9379412876e00fd3a0bfa6b6fe9.woff2 +0 -0
  1077. package/src/styles/fonts/noto-serif-tc/700/befed8a4fa817773fa7109db6fe07f56.woff2 +0 -0
  1078. package/src/styles/fonts/noto-serif-tc/700/c09ee2b219982f8d46ad9968b7e6e0ba.woff2 +0 -0
  1079. package/src/styles/fonts/noto-serif-tc/700/c39ec937c6a8d124e8b68cf829ea5ad4.woff2 +0 -0
  1080. package/src/styles/fonts/noto-serif-tc/700/c3fd21315345ae541f6e98067059fa19.woff2 +0 -0
  1081. package/src/styles/fonts/noto-serif-tc/700/c568a16e3168ceb1f191b70022c492ea.woff2 +0 -0
  1082. package/src/styles/fonts/noto-serif-tc/700/c5e66d60be3375835bbd8d6b797f6eac.woff2 +0 -0
  1083. package/src/styles/fonts/noto-serif-tc/700/cd10a3af2133805d8c92104d1ee6ff18.woff2 +0 -0
  1084. package/src/styles/fonts/noto-serif-tc/700/d15a3317942b7d31978a759fbf2222c8.woff2 +0 -0
  1085. package/src/styles/fonts/noto-serif-tc/700/d740dc2e854aaa7b3dcdd3ed25455eeb.woff2 +0 -0
  1086. package/src/styles/fonts/noto-serif-tc/700/d8325ba7ae651bc30440905bd67b95f1.woff2 +0 -0
  1087. package/src/styles/fonts/noto-serif-tc/700/e2204cf85edcb96c5de5c3dcf240da9d.woff2 +0 -0
  1088. package/src/styles/fonts/noto-serif-tc/700/e3e913e145ddcd9323b2a0972967feb6.woff2 +0 -0
  1089. package/src/styles/fonts/noto-serif-tc/700/f2fb1f1fbf7e44afb53c672ec286a22e.woff2 +0 -0
  1090. package/src/styles/fonts/noto-serif-tc/700/f372129c60aaece937cf7b91ee75c9b8.woff2 +0 -0
  1091. package/src/styles/fonts/noto-serif-tc/700/f5d7487963d43c89da63aaf10f2e6fb7.woff2 +0 -0
  1092. package/src/styles/fonts/noto-serif-tc/700/f75496953a40ff241178240209f56990.woff2 +0 -0
  1093. package/src/styles/fonts/noto-serif-tc/700/f92d74d1d217d21b39075ff23f79f7fd.woff2 +0 -0
  1094. package/src/styles/fonts/noto-serif-tc/700/f9d6d981d8b87b3e469027277f585741.woff2 +0 -0
  1095. package/src/styles/fonts/noto-serif-tc/700/fa8ed469ef290bfeb571418fe0abb628.woff2 +0 -0
  1096. package/src/styles/fonts/noto-serif-tc/700/fb61b690208eff56e6d8432951270901.woff2 +0 -0
  1097. package/src/styles/fonts/noto-serif-tc/700/ff0937ad63cda71ff420945ead55ab4d.woff2 +0 -0
  1098. package/src/styles/fonts/noto-serif-tc/noto-serif-tc.css +3104 -0
  1099. package/src/styles/tokens.css +42 -7
  1100. package/src/styles/ui.css +7597 -3395
  1101. package/src/types/app-context.ts +7 -0
  1102. package/src/types/bindings.ts +77 -27
  1103. package/src/types/config.ts +104 -4
  1104. package/src/types/constants.ts +43 -4
  1105. package/src/types/entities.ts +63 -4
  1106. package/src/types/operations.ts +45 -15
  1107. package/src/types/props.ts +48 -10
  1108. package/src/types/views.ts +51 -8
  1109. package/src/ui/__tests__/color-themes.test.ts +81 -0
  1110. package/src/ui/__tests__/font-themes.test.ts +76 -7
  1111. package/src/ui/color-themes.ts +424 -238
  1112. package/src/ui/compose/ComposeDialog.tsx +149 -91
  1113. package/src/ui/compose/ComposePrompt.tsx +20 -3
  1114. package/src/ui/dash/ActionButtons.tsx +16 -2
  1115. package/src/ui/dash/DangerZone.tsx +10 -1
  1116. package/src/ui/dash/StatusBadge.tsx +3 -3
  1117. package/src/ui/dash/appearance/AdvancedContent.tsx +9 -2
  1118. package/src/ui/dash/appearance/ColorThemeContent.tsx +326 -63
  1119. package/src/ui/dash/appearance/FontThemeContent.tsx +75 -17
  1120. package/src/ui/dash/appearance/NavigationContent.tsx +48 -21
  1121. package/src/ui/dash/settings/AccountContent.tsx +7 -2
  1122. package/src/ui/dash/settings/AccountMenuContent.tsx +242 -111
  1123. package/src/ui/dash/settings/ApiTokensContent.tsx +38 -8
  1124. package/src/ui/dash/settings/AvatarContent.tsx +1 -1
  1125. package/src/ui/dash/settings/DeleteAccountContent.tsx +300 -0
  1126. package/src/ui/dash/settings/GeneralContent.tsx +120 -6
  1127. package/src/ui/dash/settings/SessionsContent.tsx +23 -5
  1128. package/src/ui/dash/settings/SettingsDirectory.tsx +99 -0
  1129. package/src/ui/dash/settings/SettingsRootContent.tsx +176 -221
  1130. package/src/ui/feed/CuratedThreadPreview.tsx +73 -0
  1131. package/src/ui/feed/LinkCard.tsx +52 -36
  1132. package/src/ui/feed/NoteCard.tsx +10 -4
  1133. package/src/ui/feed/PostStatusBadges.tsx +4 -21
  1134. package/src/ui/feed/QuoteCard.tsx +11 -3
  1135. package/src/ui/feed/ThreadPreview.tsx +11 -5
  1136. package/src/ui/feed/TimelineFeed.tsx +53 -15
  1137. package/src/ui/feed/__tests__/timeline-cards.test.ts +172 -0
  1138. package/src/ui/feed/thread-preview-state.ts +2 -4
  1139. package/src/ui/font-themes.ts +211 -43
  1140. package/src/ui/layouts/BaseLayout.tsx +161 -30
  1141. package/src/ui/layouts/SiteLayout.tsx +51 -18
  1142. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +169 -0
  1143. package/src/ui/pages/ArchivePage.tsx +320 -120
  1144. package/src/ui/pages/BrandPage.tsx +927 -0
  1145. package/src/ui/pages/CollectionEditorPage.tsx +155 -0
  1146. package/src/ui/pages/CollectionPage.tsx +482 -23
  1147. package/src/ui/pages/CollectionsPage.tsx +57 -57
  1148. package/src/ui/pages/FeaturedPage.tsx +24 -3
  1149. package/src/ui/pages/HomePage.tsx +13 -0
  1150. package/src/ui/pages/PostPage.tsx +13 -4
  1151. package/src/ui/pages/SearchPage.tsx +12 -2
  1152. package/src/ui/pages/ThemeSamplePage.tsx +1160 -0
  1153. package/src/ui/shared/AdminBreadcrumb.tsx +22 -6
  1154. package/src/ui/shared/CollectionDirectory.tsx +131 -0
  1155. package/src/ui/shared/CollectionsManager.tsx +277 -0
  1156. package/src/ui/shared/DecorativeQuoteMark.tsx +32 -0
  1157. package/src/ui/shared/HomePageBranding.tsx +22 -0
  1158. package/src/ui/shared/JantBrandMark.tsx +35 -0
  1159. package/src/ui/shared/MediaGallery.tsx +106 -36
  1160. package/src/ui/shared/PaginatedPageHeader.tsx +49 -0
  1161. package/src/ui/shared/Pagination.tsx +2 -6
  1162. package/src/ui/shared/PostFooter.tsx +130 -67
  1163. package/src/ui/shared/__tests__/home-page-branding.test.tsx +14 -0
  1164. package/src/ui/shared/__tests__/media-gallery.test.ts +82 -0
  1165. package/src/ui/shared/__tests__/navigation-labels.test.ts +103 -0
  1166. package/src/ui/shared/__tests__/pagination.test.ts +18 -1
  1167. package/src/ui/shared/__tests__/post-footer.test.ts +122 -0
  1168. package/src/ui/shared/collection-management-labels.ts +161 -0
  1169. package/src/ui/shared/navigation-labels.ts +126 -0
  1170. package/src/vendor/datastar.js +1955 -7
  1171. package/dist/client/assets/heic-to-DIRPI3VF.js +0 -1
  1172. package/dist/client/assets/module-RjUF93sV.js +0 -716
  1173. package/dist/client/assets/native-48B9X9Wg.js +0 -1
  1174. package/dist/client/assets/url-FWFqPJPb.js +0 -1
  1175. package/dist/client/client.css +0 -1
  1176. package/dist/client/client.js +0 -33565
  1177. package/src/client/components/collection-sidebar-types.ts +0 -43
  1178. package/src/client/tiptap/paste-image.ts +0 -129
  1179. package/src/lib/emoji-catalog.ts +0 -963
  1180. package/src/lib/icon-catalog.ts +0 -5213
  1181. package/src/ui/shared/CollectionsSidebar.tsx +0 -294
@@ -13,6 +13,13 @@ msgstr ""
13
13
  "Language-Team: \n"
14
14
  "Plural-Forms: \n"
15
15
 
16
+ #. @context: Link showing count of hidden thread posts between curated posts
17
+ #. placeholder {0}: segment.hiddenBeforeCount
18
+ #. placeholder {1}: segment.hiddenBeforeCount === 1 ? "post" : "posts"
19
+ #: src/ui/feed/CuratedThreadPreview.tsx
20
+ msgid "{0} hidden {1}"
21
+ msgstr "{0} hidden {1}"
22
+
16
23
  #. @context: Link showing count of hidden thread posts between root and latest
17
24
  #. placeholder {0}: hiddenCount === 1 ? "post" : "posts"
18
25
  #: src/ui/feed/ThreadPreview.tsx
@@ -44,23 +51,100 @@ msgstr "301 (Permanent)"
44
51
  msgid "302 (Temporary)"
45
52
  msgstr "302 (Temporary)"
46
53
 
54
+ #. @context: Search snippet prefix on sample page
55
+ #: src/ui/pages/ThemeSamplePage.tsx
56
+ msgid "A calmer accent makes"
57
+ msgstr "A calmer accent makes"
58
+
59
+ #. @context: Excerpt for the sample note post
60
+ #. @context: Plain-text summary for the sample note post
61
+ #: src/ui/pages/ThemeSamplePage.tsx
62
+ #: src/ui/pages/ThemeSamplePage.tsx
63
+ msgid "A calmer, warmer accent makes the default theme feel quieter and more intentional."
64
+ msgstr "A calmer, warmer accent makes the default theme feel quieter and more intentional."
65
+
66
+ #. @context: Section title for the usage guidance section on the brand asset page
67
+ #: src/ui/pages/BrandPage.tsx
68
+ msgid "A few simple rules."
69
+ msgstr "A few simple rules."
70
+
71
+ #. @context: Second paragraph on the sample detail article
72
+ #: src/ui/pages/ThemeSamplePage.tsx
73
+ msgid "A good default accent in Jant should feel like editorial structure, not product branding. That means links, emphasis, and thread cues can be visible without turning the page into UI chrome."
74
+ msgstr "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."
75
+
76
+ #. @context: Excerpt for the sample detail article
77
+ #. @context: Plain-text body fallback for the sample detail article
78
+ #. @context: Plain-text summary for the sample detail article
79
+ #: src/ui/pages/ThemeSamplePage.tsx
80
+ #: src/ui/pages/ThemeSamplePage.tsx
81
+ #: src/ui/pages/ThemeSamplePage.tsx
82
+ msgid "A long-form article sample for checking the default palette in a true reading context."
83
+ msgstr "A long-form article sample for checking the default palette in a true reading context."
84
+
85
+ #. @context: Subheading in the sample detail article
86
+ #: src/ui/pages/ThemeSamplePage.tsx
87
+ msgid "A practical checklist"
88
+ msgstr "A practical checklist"
89
+
90
+ #. @context: Excerpt for the sample quote post
91
+ #. @context: Plain-text summary for the sample quote post
92
+ #: src/ui/pages/ThemeSamplePage.tsx
93
+ #: src/ui/pages/ThemeSamplePage.tsx
94
+ msgid "A quote card for judging accent color against softer, citation-heavy content."
95
+ msgstr "A quote card for judging accent color against softer, citation-heavy content."
96
+
97
+ #. @context: Description for the square logo PNG asset card
98
+ #: src/ui/pages/BrandPage.tsx
99
+ msgid "A ready-made 1:1 PNG for decks, mockups, directories, and other square placements."
100
+ msgstr "A ready-made 1:1 PNG for decks, mockups, directories, and other square placements."
101
+
102
+ #. @context: Excerpt for the sample link post
103
+ #. @context: Plain-text summary for the sample link post
104
+ #: src/ui/pages/ThemeSamplePage.tsx
105
+ #: src/ui/pages/ThemeSamplePage.tsx
106
+ msgid "A reference link for checking whether the accent feels editorial instead of promotional."
107
+ msgstr "A reference link for checking whether the accent feels editorial instead of promotional."
108
+
47
109
  #. @context: Help text for site description field
48
110
  #: src/ui/dash/settings/GeneralContent.tsx
49
111
  msgid "A short intro for search engines and feed readers. Plain text only."
50
112
  msgstr "A short intro for search engines and feed readers. Plain text only."
51
113
 
114
+ #. @context: Description for the brand pack card
115
+ #: src/ui/pages/BrandPage.tsx
116
+ msgid "A single ZIP with the main logo, reverse logo, square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and social preview image."
117
+ msgstr "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."
118
+
119
+ #. @context: Main sample article title
120
+ #: src/ui/pages/ThemeSamplePage.tsx
121
+ msgid "A softer blue feels more like ink than product chrome."
122
+ msgstr "A softer blue feels more like ink than product chrome."
123
+
52
124
  #. @context: Settings form field for site description
53
125
  #: src/ui/dash/settings/GeneralContent.tsx
54
126
  msgid "About this blog"
55
127
  msgstr "About this blog"
56
128
 
129
+ #. @context: Thread helper text on sample page
130
+ #: src/ui/pages/ThemeSamplePage.tsx
131
+ msgid "Accent should feel present, not loud."
132
+ msgstr "Accent should feel present, not loud."
133
+
134
+ #. @context: Page title for the account settings menu
57
135
  #. @context: Settings group label for account settings
58
136
  #. @context: Settings item — account settings
137
+ #: src/ui/dash/settings/AccountMenuContent.tsx
59
138
  #: src/ui/dash/settings/SettingsRootContent.tsx
60
139
  #: src/ui/dash/settings/SettingsRootContent.tsx
61
140
  msgid "Account"
62
141
  msgstr "Account"
63
142
 
143
+ #. @context: Error shown when account deletion is blocked in demo mode
144
+ #: src/routes/dash/settings.tsx
145
+ msgid "Account deletion is off in demo mode. The shared demo resets separately."
146
+ msgstr "Account deletion is off in demo mode. The shared demo resets separately."
147
+
64
148
  #. @context: Settings section heading for active sessions
65
149
  #: src/ui/dash/settings/SessionsContent.tsx
66
150
  msgid "Active Sessions"
@@ -81,6 +165,21 @@ msgstr "Add"
81
165
  msgid "Add a custom link to any URL"
82
166
  msgstr "Add a custom link to any URL"
83
167
 
168
+ #. @context: Description for the RSS system navigation toggle
169
+ #: src/ui/shared/navigation-labels.ts
170
+ msgid "Add a link to your main RSS feed. Change what /feed returns in General."
171
+ msgstr "Add a link to your main RSS feed. Change what /feed returns in General."
172
+
173
+ #. @context: Compose link title required error
174
+ #: src/ui/compose/ComposeDialog.tsx
175
+ msgid "Add a title before posting this link."
176
+ msgstr "Add a title before posting this link."
177
+
178
+ #. @context: Compose link URL required error
179
+ #: src/ui/compose/ComposeDialog.tsx
180
+ msgid "Add a URL before posting this link."
181
+ msgstr "Add a URL before posting this link."
182
+
84
183
  #. @context: Alt text panel title
85
184
  #: src/ui/compose/ComposeDialog.tsx
86
185
  msgid "Add alt text"
@@ -101,11 +200,6 @@ msgstr "Add custom CSS to override any styles. Use data attributes like [data-pa
101
200
  msgid "Add custom link to navigation"
102
201
  msgstr "Add custom link to navigation"
103
202
 
104
- #. @context: Menu action to add a divider
105
- #: src/ui/shared/CollectionsSidebar.tsx
106
- msgid "Add Divider"
107
- msgstr "Add Divider"
108
-
109
203
  #. @context: Button and heading for adding custom link
110
204
  #: src/ui/dash/appearance/NavigationContent.tsx
111
205
  msgid "Add Link"
@@ -141,6 +235,36 @@ msgstr "All visibility"
141
235
  msgid "All years"
142
236
  msgstr "All years"
143
237
 
238
+ #. @context: Checkbox for allowing search engine indexing
239
+ #: src/ui/dash/settings/GeneralContent.tsx
240
+ msgid "Allow search engines to index my site"
241
+ msgstr "Allow search engines to index my site"
242
+
243
+ #. @context: Theme mode option description
244
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
245
+ msgid "Always show the dark version of the theme."
246
+ msgstr "Always show the dark version of the theme."
247
+
248
+ #. @context: Theme mode option description
249
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
250
+ msgid "Always show the light version of the theme."
251
+ msgstr "Always show the light version of the theme."
252
+
253
+ #. @context: Alt text for the sample detail article image
254
+ #: src/ui/pages/ThemeSamplePage.tsx
255
+ msgid "An abstract editorial layout in warm paper colors"
256
+ msgstr "An abstract editorial layout in warm paper colors"
257
+
258
+ #. @context: Button label for opening the hidden collection list in the post footer
259
+ #: src/ui/shared/PostFooter.tsx
260
+ msgid "and {count} more"
261
+ msgstr "and {count} more"
262
+
263
+ #. @context: Sample link post body suffix on the theme sample page
264
+ #: src/ui/pages/ThemeSamplePage.tsx
265
+ msgid "and checking whether the accent is guiding attention or pulling too hard."
266
+ msgstr "and checking whether the accent is guiding attention or pulling too hard."
267
+
144
268
  #. @context: Link to API documentation
145
269
  #: src/ui/dash/settings/ApiTokensContent.tsx
146
270
  msgid "API reference"
@@ -153,16 +277,40 @@ msgstr "API reference"
153
277
  msgid "API Tokens"
154
278
  msgstr "API Tokens"
155
279
 
280
+ #. @context: Settings group label for design settings
281
+ #: src/ui/dash/settings/SettingsRootContent.tsx
282
+ msgid "Appearance"
283
+ msgstr "Appearance"
284
+
285
+ #. @context: Compose publish settings help text for public visibility
286
+ #: src/ui/compose/ComposeDialog.tsx
287
+ msgid "Appears in Latest."
288
+ msgstr "Appears in Latest."
289
+
290
+ #. @context: Title for the apple touch icon asset card
291
+ #: src/ui/pages/BrandPage.tsx
292
+ msgid "Apple touch icon"
293
+ msgstr "Apple touch icon"
294
+
156
295
  #. @context: Appearance settings description
157
296
  #: src/ui/dash/appearance/ColorThemeContent.tsx
158
- msgid "Applies to your entire site, including admin pages. All themes support dark mode."
159
- msgstr "Applies to your entire site, including admin pages. All themes support dark mode."
297
+ msgid "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
298
+ msgstr "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
160
299
 
161
300
  #. @context: Archive page title
301
+ #. @context: Built-in navigation label for the archive page
302
+ #. @context: Inactive nav link label on sample page
162
303
  #: src/ui/pages/ArchivePage.tsx
304
+ #: src/ui/pages/ThemeSamplePage.tsx
305
+ #: src/ui/shared/navigation-labels.ts
163
306
  msgid "Archive"
164
307
  msgstr "Archive"
165
308
 
309
+ #. @context: Section heading for the detail article sample on the theme sample page
310
+ #: src/ui/pages/ThemeSamplePage.tsx
311
+ msgid "Article detail page"
312
+ msgstr "Article detail page"
313
+
166
314
  #. @context: Archive media filter - audio
167
315
  #: src/ui/pages/ArchivePage.tsx
168
316
  msgid "Audio"
@@ -183,6 +331,13 @@ msgstr "Authentication isn't set up. Check your server config."
183
331
  msgid "Author (optional)"
184
332
  msgstr "Author (optional)"
185
333
 
334
+ #. @context: Theme mode option label
335
+ #. @context: Theme mode option on sample page
336
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
337
+ #: src/ui/pages/ThemeSamplePage.tsx
338
+ msgid "Auto"
339
+ msgstr "Auto"
340
+
186
341
  #. @context: Description after theming guide link on Custom CSS page
187
342
  #: src/ui/dash/appearance/AdvancedContent.tsx
188
343
  msgid "available CSS variables, data attributes, and examples."
@@ -200,22 +355,94 @@ msgstr "Avatar"
200
355
  msgid "Avatar display updated."
201
356
  msgstr "Avatar display updated."
202
357
 
358
+ #. @context: Usage label for the circle tile asset card
359
+ #: src/ui/pages/BrandPage.tsx
360
+ msgid "Avatar-ready"
361
+ msgstr "Avatar-ready"
362
+
203
363
  #. @context: Link back from the new post page
204
364
  #: src/ui/pages/ComposePage.tsx
205
365
  msgid "Back"
206
366
  msgstr "Back"
207
367
 
368
+ #. @context: Link to backup and restore documentation from account settings
369
+ #: src/ui/dash/settings/AccountMenuContent.tsx
370
+ msgid "Backup & Restore Guide"
371
+ msgstr "Backup & Restore Guide"
372
+
208
373
  #. @context: Settings item description for API tokens
209
374
  #: src/ui/dash/settings/SettingsRootContent.tsx
210
375
  msgid "Bearer tokens for scripts and automation"
211
376
  msgstr "Bearer tokens for scripts and automation"
212
377
 
378
+ #. @context: Sample note post body suffix on the theme sample page
379
+ #: src/ui/pages/ThemeSamplePage.tsx
380
+ msgid "before deciding whether the accent is carrying too much product energy."
381
+ msgstr "before deciding whether the accent is carrying too much product energy."
382
+
383
+ #. @context: Step 1 description for site export before account deletion
384
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
385
+ msgid "Before deleting, download a site export. You won't be able to recover this account after deletion."
386
+ msgstr "Before deleting, download a site export. You won't be able to recover this account after deletion."
387
+
213
388
  #. @context: Settings section heading for avatar
214
389
  #: src/ui/dash/settings/AvatarContent.tsx
215
390
  msgid "Blog Avatar"
216
391
  msgstr "Blog Avatar"
217
392
 
218
- #. @context: Button to cancel form
393
+ #. @context: Browser page title for the public brand asset page
394
+ #. @context: Eyebrow on the public brand asset page
395
+ #: src/routes/pages/brand.tsx
396
+ #: src/ui/pages/BrandPage.tsx
397
+ msgid "Brand assets"
398
+ msgstr "Brand assets"
399
+
400
+ #. @context: Title for the brand pack card
401
+ #. @context: Title for the brand pack card
402
+ #: src/ui/pages/BrandPage.tsx
403
+ #: src/ui/pages/BrandPage.tsx
404
+ msgid "Brand pack"
405
+ msgstr "Brand pack"
406
+
407
+ #. @context: Asset keyword on the public brand asset page
408
+ #. @context: Title for the brand tile asset card
409
+ #: src/ui/pages/BrandPage.tsx
410
+ #: src/ui/pages/BrandPage.tsx
411
+ msgid "Brand tile"
412
+ msgstr "Brand tile"
413
+
414
+ #. @context: Breadcrumb label on collection detail page
415
+ #. @context: Breadcrumb label on collection editor page
416
+ #: src/ui/pages/CollectionEditorPage.tsx
417
+ #: src/ui/pages/CollectionPage.tsx
418
+ msgid "Breadcrumb"
419
+ msgstr "Breadcrumb"
420
+
421
+ #. @context: Secondary hero button label to jump to the file list
422
+ #: src/ui/pages/BrandPage.tsx
423
+ msgid "Browse files"
424
+ msgstr "Browse files"
425
+
426
+ #. @context: Usage label for the favicon asset card
427
+ #: src/ui/pages/BrandPage.tsx
428
+ msgid "Browser tab"
429
+ msgstr "Browser tab"
430
+
431
+ #. @context: Usage label for the brand tile asset card
432
+ #: src/ui/pages/BrandPage.tsx
433
+ msgid "Built-in background"
434
+ msgstr "Built-in background"
435
+
436
+ #. @context: Sample note post second paragraph on the theme sample page
437
+ #: src/ui/pages/ThemeSamplePage.tsx
438
+ msgid "Buttons can stay steady, but links, thread markers, and subtle emphasis should feel closer to ink on paper than dashboard chrome."
439
+ msgstr "Buttons can stay steady, but links, thread markers, and subtle emphasis should feel closer to ink on paper than dashboard chrome."
440
+
441
+ #. @context: Button label to dismiss a dialog or action
442
+ #. @context: Button label to dismiss a dialog or action
443
+ #. @context: Button label to dismiss a dialog or action
444
+ #. @context: Button label to dismiss a dialog or action
445
+ #. @context: Button label to dismiss a dialog or action
219
446
  #. @context: Button to cancel form
220
447
  #. @context: Button to cancel form
221
448
  #. @context: Button to cancel settings changes
@@ -225,10 +452,14 @@ msgstr "Blog Avatar"
225
452
  #: src/routes/dash/custom-urls.tsx
226
453
  #: src/ui/compose/ComposeDialog.tsx
227
454
  #: src/ui/compose/ComposeDialog.tsx
228
- #: src/ui/compose/ComposeDialog.tsx
455
+ #: src/ui/dash/ActionButtons.tsx
456
+ #: src/ui/dash/DangerZone.tsx
457
+ #: src/ui/dash/settings/ApiTokensContent.tsx
229
458
  #: src/ui/dash/settings/AvatarContent.tsx
459
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
230
460
  #: src/ui/dash/settings/GeneralContent.tsx
231
- #: src/ui/shared/CollectionsSidebar.tsx
461
+ #: src/ui/shared/collection-management-labels.ts
462
+ #: src/ui/shared/collection-management-labels.ts
232
463
  msgid "Cancel"
233
464
  msgstr "Cancel"
234
465
 
@@ -239,41 +470,128 @@ msgstr "Cancel"
239
470
  msgid "Change Password"
240
471
  msgstr "Change Password"
241
472
 
242
- #. @context: Settings item description for password change
243
- #: src/ui/dash/settings/AccountMenuContent.tsx
244
- msgid "Change your sign-in password"
245
- msgstr "Change your sign-in password"
473
+ #. @context: Warning shown when changing the canonical RSS feed selection
474
+ #: src/ui/dash/settings/GeneralContent.tsx
475
+ msgid "Changing this updates what subscribers get from /feed."
476
+ msgstr "Changing this updates what subscribers get from /feed."
246
477
 
247
- #. @context: Font theme settings description
248
- #: src/ui/dash/appearance/FontThemeContent.tsx
249
- msgid "Choose a font pairing for your site. All options use system fonts for fast loading."
250
- msgstr "Choose a font pairing for your site. All options use system fonts for fast loading."
478
+ #. @context: Compose custom slug helper while checking whether a manual slug is available
479
+ #: src/ui/compose/ComposeDialog.tsx
480
+ msgid "Checking link..."
481
+ msgstr "Checking link..."
251
482
 
252
483
  #. @context: Password reset page description
253
484
  #: src/routes/auth/reset.tsx
254
485
  msgid "Choose a new password."
255
486
  msgstr "Choose a new password."
256
487
 
488
+ #. @context: Font theme settings description
489
+ #: src/ui/dash/appearance/FontThemeContent.tsx
490
+ msgid "Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm."
491
+ msgstr "Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm."
492
+
493
+ #. @context: Body copy for the logo downloads section
494
+ #: src/ui/pages/BrandPage.tsx
495
+ msgid "Choose the standard logo for most placements and the reverse logo when you need more contrast."
496
+ msgstr "Choose the standard logo for most placements and the reverse logo when you need more contrast."
497
+
498
+ #. @context: Guidance body on the brand asset page
499
+ #: src/ui/pages/BrandPage.tsx
500
+ msgid "Choose the standard logo for websites, docs, directories, and editorial layouts."
501
+ msgstr "Choose the standard logo for websites, docs, directories, and editorial layouts."
502
+
503
+ #. @context: Asset keyword on the public brand asset page
504
+ #. @context: Title for the circle tile asset card
505
+ #: src/ui/pages/BrandPage.tsx
506
+ #: src/ui/pages/BrandPage.tsx
507
+ msgid "Circle tile"
508
+ msgstr "Circle tile"
509
+
510
+ #. @context: Archive filter button label to clear the active filter
511
+ #. @context: Archive filter button label to clear the active filter
512
+ #: src/ui/pages/ArchivePage.tsx
513
+ #: src/ui/pages/ArchivePage.tsx
514
+ msgid "Clear filter"
515
+ msgstr "Clear filter"
516
+
517
+ #. @context: Singular collection count label
518
+ #. @context: Singular collection count label
519
+ #. @context: Singular collection count label
520
+ #. @context: Singular collection count label on an aggregate collection page
521
+ #: src/ui/pages/CollectionPage.tsx
522
+ #: src/ui/pages/CollectionsPage.tsx
523
+ #: src/ui/shared/CollectionsManager.tsx
524
+ #: src/ui/shared/CollectionsManager.tsx
525
+ msgid "collection"
526
+ msgstr "collection"
527
+
257
528
  #. @context: Compose collection selector trigger label
529
+ #. @context: Custom URL target type badge for a collection
258
530
  #. @context: Custom URL type option
259
531
  #: src/routes/dash/custom-urls.tsx
532
+ #: src/routes/dash/custom-urls.tsx
260
533
  #: src/ui/compose/ComposeDialog.tsx
261
534
  msgid "Collection"
262
535
  msgstr "Collection"
263
536
 
537
+ #. @context: Toast shown after creating a collection
538
+ #: src/ui/shared/collection-management-labels.ts
539
+ msgid "Collection created."
540
+ msgstr "Collection created."
541
+
542
+ #. @context: Toast after deleting a collection
543
+ #: src/ui/shared/collection-management-labels.ts
544
+ msgid "Collection deleted."
545
+ msgstr "Collection deleted."
546
+
547
+ #. @context: Collection form field
548
+ #: src/ui/shared/collection-management-labels.ts
549
+ msgid "Collection link"
550
+ msgstr "Collection link"
551
+
552
+ #. @context: Toast after reordering collections
553
+ #: src/ui/shared/CollectionsManager.tsx
554
+ msgid "Collection order updated."
555
+ msgstr "Collection order updated."
556
+
557
+ #. @context: Toast after saving a collection
558
+ #: src/ui/shared/collection-management-labels.ts
559
+ msgid "Collection saved."
560
+ msgstr "Collection saved."
561
+
562
+ #. @context: Plural collection count label
563
+ #. @context: Plural collection count label
564
+ #. @context: Plural collection count label
565
+ #. @context: Plural collection count label on an aggregate collection page
566
+ #: src/ui/pages/CollectionPage.tsx
567
+ #: src/ui/pages/CollectionsPage.tsx
568
+ #: src/ui/shared/CollectionsManager.tsx
569
+ #: src/ui/shared/CollectionsManager.tsx
570
+ msgid "collections"
571
+ msgstr "collections"
572
+
573
+ #. @context: Breadcrumb link to collections page
574
+ #. @context: Breadcrumb link to collections page
575
+ #. @context: Built-in navigation label for the collections page
576
+ #. @context: Collections page heading
264
577
  #. @context: Collections page heading
265
- #. @context: Sidebar heading for collections nav
266
- #. @context: Sidebar heading for collections nav
578
+ #. @context: Inactive nav link label on sample page
579
+ #: src/ui/pages/CollectionEditorPage.tsx
580
+ #: src/ui/pages/CollectionPage.tsx
267
581
  #: src/ui/pages/CollectionsPage.tsx
268
- #: src/ui/shared/CollectionsSidebar.tsx
269
- #: src/ui/shared/CollectionsSidebar.tsx
582
+ #: src/ui/pages/ThemeSamplePage.tsx
583
+ #: src/ui/shared/CollectionsManager.tsx
584
+ #: src/ui/shared/navigation-labels.ts
270
585
  msgid "Collections"
271
586
  msgstr "Collections"
272
587
 
588
+ #. @context: Alert title on theme sample page
589
+ #: src/ui/pages/ThemeSamplePage.tsx
590
+ msgid "Color check"
591
+ msgstr "Color check"
592
+
273
593
  #. @context: Appearance settings heading
274
- #. @context: Settings item description for color theme
275
594
  #: src/ui/dash/appearance/ColorThemeContent.tsx
276
- #: src/ui/dash/settings/SettingsRootContent.tsx
277
595
  msgid "Color theme"
278
596
  msgstr "Color theme"
279
597
 
@@ -282,11 +600,21 @@ msgstr "Color theme"
282
600
  msgid "Color Theme"
283
601
  msgstr "Color Theme"
284
602
 
603
+ #. @context: Inline link label in the sample detail article
604
+ #: src/ui/pages/ThemeSamplePage.tsx
605
+ msgid "Compare it against the theme controls"
606
+ msgstr "Compare it against the theme controls"
607
+
285
608
  #. @context: Setup form submit button
286
609
  #: src/routes/auth/setup.tsx
287
610
  msgid "Complete Setup"
288
611
  msgstr "Complete Setup"
289
612
 
613
+ #. @context: Step 2 heading — user must type confirmation phrase
614
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
615
+ msgid "Confirm account deletion"
616
+ msgstr "Confirm account deletion"
617
+
290
618
  #. @context: Password form field
291
619
  #: src/ui/dash/settings/AccountContent.tsx
292
620
  msgid "Confirm New Password"
@@ -297,11 +625,21 @@ msgstr "Confirm New Password"
297
625
  msgid "Confirm Password"
298
626
  msgstr "Confirm Password"
299
627
 
628
+ #. @context: Controls section heading on sample page
629
+ #: src/ui/pages/ThemeSamplePage.tsx
630
+ msgid "Controls"
631
+ msgstr "Controls"
632
+
300
633
  #. @context: Feedback after copying API token
301
634
  #: src/ui/dash/settings/ApiTokensContent.tsx
302
635
  msgid "Copied"
303
636
  msgstr "Copied"
304
637
 
638
+ #. @context: Button to copy a URL to the clipboard
639
+ #: src/ui/dash/settings/GeneralContent.tsx
640
+ msgid "Copy"
641
+ msgstr "Copy"
642
+
305
643
  #. @context: Button to copy API token to clipboard
306
644
  #. @context: Button to copy API token to clipboard
307
645
  #: src/ui/dash/settings/ApiTokensContent.tsx
@@ -314,10 +652,17 @@ msgstr "Copy Token"
314
652
  msgid "Copy your token now — it won't be shown again."
315
653
  msgstr "Copy your token now — it won't be shown again."
316
654
 
655
+ #. @context: Error toast when copying text to the clipboard fails
656
+ #: src/ui/dash/settings/GeneralContent.tsx
657
+ msgid "Could not copy. Try again."
658
+ msgstr "Could not copy. Try again."
659
+
660
+ #. @context: Error toast when account creation fails
317
661
  #. @context: Error toast when account creation fails
318
662
  #. @context: Error toast when account creation fails
319
663
  #: src/routes/auth/setup.tsx
320
664
  #: src/routes/auth/setup.tsx
665
+ #: src/routes/auth/setup.tsx
321
666
  msgid "Couldn't create your account. Check the details and try again."
322
667
  msgstr "Couldn't create your account. Check the details and try again."
323
668
 
@@ -334,7 +679,7 @@ msgstr "Couldn't publish. Saved as draft."
334
679
  #. @context: Error toast when nav save fails
335
680
  #. @context: Toast when save fails
336
681
  #: src/ui/dash/appearance/NavigationContent.tsx
337
- #: src/ui/shared/CollectionsSidebar.tsx
682
+ #: src/ui/shared/collection-management-labels.ts
338
683
  msgid "Couldn't save. Try again in a moment."
339
684
  msgstr "Couldn't save. Try again in a moment."
340
685
 
@@ -379,6 +724,11 @@ msgstr "Current Password"
379
724
  msgid "Current password doesn't match. Try again."
380
725
  msgstr "Current password doesn't match. Try again."
381
726
 
727
+ #. @context: Thread item label on sample page
728
+ #: src/ui/pages/ThemeSamplePage.tsx
729
+ msgid "Current post"
730
+ msgstr "Current post"
731
+
382
732
  #. @context: Appearance settings heading for custom CSS
383
733
  #. @context: Link to Custom CSS settings from color theme page
384
734
  #. @context: Settings item — custom CSS settings
@@ -393,10 +743,10 @@ msgstr "Custom CSS"
393
743
  msgid "Custom CSS updated."
394
744
  msgstr "Custom CSS updated."
395
745
 
396
- #. @context: Settings item description for custom CSS
397
- #: src/ui/dash/settings/SettingsRootContent.tsx
398
- msgid "Custom styling"
399
- msgstr "Custom styling"
746
+ #. @context: Compose publish settings slug section label
747
+ #: src/ui/compose/ComposeDialog.tsx
748
+ msgid "Custom link"
749
+ msgstr "Custom link"
400
750
 
401
751
  #. @context: Settings item — custom URL settings
402
752
  #. @context: Settings section heading
@@ -405,16 +755,61 @@ msgstr "Custom styling"
405
755
  msgid "Custom URLs"
406
756
  msgstr "Custom URLs"
407
757
 
758
+ #. @context: Destructive badge label on sample page
759
+ #: src/ui/pages/ThemeSamplePage.tsx
760
+ msgid "Danger"
761
+ msgstr "Danger"
762
+
408
763
  #. @context: Section heading for dangerous/destructive actions
764
+ #. @context: Settings group label for destructive account actions
765
+ #. @context: Settings group label for destructive account actions
409
766
  #: src/ui/dash/DangerZone.tsx
767
+ #: src/ui/dash/settings/AccountMenuContent.tsx
768
+ #: src/ui/dash/settings/AccountMenuContent.tsx
410
769
  msgid "Danger Zone"
411
770
  msgstr "Danger Zone"
412
771
 
772
+ #. @context: Theme mode option label
773
+ #. @context: Theme mode option on sample page
774
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
775
+ #: src/ui/pages/ThemeSamplePage.tsx
776
+ msgid "Dark"
777
+ msgstr "Dark"
778
+
779
+ #. @context: Usage label for the reverse logo asset card
780
+ #. @context: Usage label for the reverse logo card
781
+ #: src/ui/pages/BrandPage.tsx
782
+ #: src/ui/pages/BrandPage.tsx
783
+ msgid "Dark backgrounds"
784
+ msgstr "Dark backgrounds"
785
+
413
786
  #. @context: Settings group label for data export/import
414
787
  #: src/ui/dash/settings/AccountMenuContent.tsx
415
788
  msgid "Data"
416
789
  msgstr "Data"
417
790
 
791
+ #. @context: Badge label on sample page
792
+ #. @context: Usage label for the default logo asset card
793
+ #: src/ui/pages/BrandPage.tsx
794
+ #: src/ui/pages/ThemeSamplePage.tsx
795
+ msgid "Default"
796
+ msgstr "Default"
797
+
798
+ #. @context: Usage label for the default logo card
799
+ #: src/ui/pages/BrandPage.tsx
800
+ msgid "Default logo"
801
+ msgstr "Default logo"
802
+
803
+ #. @context: Inline link label in the sample link post body
804
+ #: src/ui/pages/ThemeSamplePage.tsx
805
+ msgid "default note sample"
806
+ msgstr "default note sample"
807
+
808
+ #. @context: Description for the social preview image asset card
809
+ #: src/ui/pages/BrandPage.tsx
810
+ msgid "Default preview image for social shares and link unfurls."
811
+ msgstr "Default preview image for social shares and link unfurls."
812
+
418
813
  #. @context: Button to delete custom URL
419
814
  #. @context: Button to delete item
420
815
  #. @context: Delete collection action
@@ -422,47 +817,83 @@ msgstr "Data"
422
817
  #: src/routes/dash/custom-urls.tsx
423
818
  #: src/ui/dash/ActionButtons.tsx
424
819
  #: src/ui/dash/appearance/NavigationContent.tsx
425
- #: src/ui/shared/CollectionsSidebar.tsx
820
+ #: src/ui/shared/collection-management-labels.ts
426
821
  msgid "Delete"
427
822
  msgstr "Delete"
428
823
 
824
+ #. @context: Page title for account deletion
825
+ #. @context: Settings item — delete account and all data
826
+ #: src/ui/dash/settings/AccountMenuContent.tsx
827
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
828
+ msgid "Delete Account"
829
+ msgstr "Delete Account"
830
+
831
+ #. @context: Final destructive button to delete account and all data
832
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
833
+ msgid "Delete Account Permanently"
834
+ msgstr "Delete Account Permanently"
835
+
429
836
  #. @context: Draft item action
430
837
  #: src/ui/compose/ComposeDialog.tsx
431
838
  msgid "Delete Draft"
432
839
  msgstr "Delete Draft"
433
840
 
841
+ #. @context: Settings item — open the hosted site danger zone in the control plane
842
+ #: src/ui/dash/settings/AccountMenuContent.tsx
843
+ msgid "Delete Hosted Site"
844
+ msgstr "Delete Hosted Site"
845
+
846
+ #. @context: Final browser confirm dialog before account deletion
847
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
848
+ msgid "Delete this blog permanently? This cannot be undone."
849
+ msgstr "Delete this blog permanently? This cannot be undone."
850
+
434
851
  #. @context: Confirm dialog for deleting a collection
435
- #: src/ui/shared/CollectionsSidebar.tsx
852
+ #: src/ui/shared/collection-management-labels.ts
436
853
  msgid "Delete this collection permanently? Posts inside won't be removed."
437
854
  msgstr "Delete this collection permanently? Posts inside won't be removed."
438
855
 
439
- #. @context: Toast after deleting a collection
440
- #: src/ui/shared/CollectionsSidebar.tsx
441
- msgid "Deleted"
442
- msgstr "Deleted"
443
-
444
856
  #. @context: Hint shown on signin page when demo credentials are pre-filled
445
857
  #: src/routes/auth/signin.tsx
446
858
  msgid "Demo credentials are pre-filled — hit Sign In to continue."
447
859
  msgstr "Demo credentials are pre-filled — hit Sign In to continue."
448
860
 
861
+ #. @context: Notice shown on the account page when demo restrictions are enabled
862
+ #: src/ui/dash/settings/AccountMenuContent.tsx
863
+ msgid "Demo mode hides sessions, password changes, and account deletion. Export still works."
864
+ msgstr "Demo mode hides sessions, password changes, and account deletion. Export still works."
865
+
866
+ #. @context: Help text explaining that SEO indexing is locked in demo mode
867
+ #: src/ui/dash/settings/GeneralContent.tsx
868
+ msgid "Demo sites always stay hidden from search engines."
869
+ msgstr "Demo sites always stay hidden from search engines."
870
+
449
871
  #. @context: Alt text textarea placeholder
450
872
  #: src/ui/compose/ComposeDialog.tsx
451
873
  msgid "Describe this for people with visual impairments..."
452
874
  msgstr "Describe this for people with visual impairments..."
453
875
 
454
876
  #. @context: Collection form field
455
- #. @context: Collection form field
456
- #: src/ui/compose/ComposeDialog.tsx
457
- #: src/ui/shared/CollectionsSidebar.tsx
877
+ #: src/ui/shared/collection-management-labels.ts
458
878
  msgid "Description (optional)"
459
879
  msgstr "Description (optional)"
460
880
 
461
- #. @context: Settings group label for design settings
462
- #: src/ui/dash/settings/SettingsRootContent.tsx
881
+ #. @context: Collection label on theme sample content card
882
+ #. @context: Collection tag on sample note post
883
+ #. @context: Collection tag on the sample detail article
884
+ #. @context: Color theme preview collection label
885
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
886
+ #: src/ui/pages/ThemeSamplePage.tsx
887
+ #: src/ui/pages/ThemeSamplePage.tsx
888
+ #: src/ui/pages/ThemeSamplePage.tsx
463
889
  msgid "Design"
464
890
  msgstr "Design"
465
891
 
892
+ #. @context: Title for the sample detail article on the theme sample page
893
+ #: src/ui/pages/ThemeSamplePage.tsx
894
+ msgid "Designing a calmer default accent for Jant"
895
+ msgstr "Designing a calmer default accent for Jant"
896
+
466
897
  #. @context: Redirect destination field
467
898
  #: src/routes/dash/custom-urls.tsx
468
899
  msgid "Destination"
@@ -475,6 +906,11 @@ msgstr "Destination"
475
906
  msgid "Discard"
476
907
  msgstr "Discard"
477
908
 
909
+ #. @context: Confirm dialog shown before discarding attached text edits
910
+ #: src/ui/compose/ComposeDialog.tsx
911
+ msgid "Discard changes?"
912
+ msgstr "Discard changes?"
913
+
478
914
  #. @context: Checkbox to show avatar in the site header
479
915
  #: src/ui/dash/settings/AvatarContent.tsx
480
916
  msgid "Display avatar in my site header"
@@ -485,29 +921,98 @@ msgstr "Display avatar in my site header"
485
921
  msgid "Displayed at the bottom of all posts and pages. Markdown supported."
486
922
  msgstr "Displayed at the bottom of all posts and pages. Markdown supported."
487
923
 
924
+ #. @context: Theme group heading on color theme settings page
925
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
926
+ msgid "Distinctive Mood"
927
+ msgstr "Distinctive Mood"
928
+
929
+ #. @context: Label for a divider item while organizing collections
930
+ #: src/ui/shared/CollectionsManager.tsx
931
+ msgid "Divider"
932
+ msgstr "Divider"
933
+
934
+ #. @context: Guidance body on the brand asset page
935
+ #: src/ui/pages/BrandPage.tsx
936
+ msgid "Do not recolor, stretch, rotate, outline, or add effects to the logo."
937
+ msgstr "Do not recolor, stretch, rotate, outline, or add effects to the logo."
938
+
488
939
  #. @context: Confirm close action sheet subtitle when editing a published post
489
940
  #: src/ui/compose/ComposeDialog.tsx
490
941
  msgid "Do you want to publish your changes or discard them?"
491
942
  msgstr "Do you want to publish your changes or discard them?"
492
943
 
944
+ #. @context: Compose publish settings help text for posts hidden from Latest
945
+ #: src/ui/compose/ComposeDialog.tsx
946
+ msgid "Doesn't appear in Latest. Still appears in collections you add it to."
947
+ msgstr "Doesn't appear in Latest. Still appears in collections you add it to."
948
+
949
+ #. @context: Confirm action sheet - discard text attachment changes button
493
950
  #. @context: Confirm close action sheet - discard button
494
951
  #: src/ui/compose/ComposeDialog.tsx
952
+ #: src/ui/compose/ComposeDialog.tsx
495
953
  msgid "Don't save"
496
954
  msgstr "Don't save"
497
955
 
498
- #. @context: Button to exit reorder mode
956
+ #. @context: Button to exit collection organize mode
499
957
  #. @context: Close attached text panel
500
958
  #. @context: Compose button - update existing post
959
+ #. @context: Primary button in the quick-create collection dialog
501
960
  #: src/ui/compose/ComposeDialog.tsx
502
961
  #: src/ui/compose/ComposeDialog.tsx
503
- #: src/ui/shared/CollectionsSidebar.tsx
962
+ #: src/ui/shared/collection-management-labels.ts
963
+ #: src/ui/shared/CollectionsManager.tsx
504
964
  msgid "Done"
505
965
  msgstr "Done"
506
966
 
507
- #. @context: Settings item description for site export
967
+ #. @context: Step 1 heading user must download a site export before deleting
968
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
969
+ msgid "Download a site export"
970
+ msgstr "Download a site export"
971
+
972
+ #. @context: Settings item description for static site export
508
973
  #: src/ui/dash/settings/AccountMenuContent.tsx
509
- msgid "Download as a Zola static site (.zip)"
510
- msgstr "Download as a Zola static site (.zip)"
974
+ msgid "Download a Zola site ZIP for static publishing or import into another Jant."
975
+ msgstr "Download a Zola site ZIP for static publishing or import into another Jant."
976
+
977
+ #. @context: Primary hero button label for the brand pack ZIP
978
+ #: src/ui/pages/BrandPage.tsx
979
+ msgid "Download Brand Pack"
980
+ msgstr "Download Brand Pack"
981
+
982
+ #. @context: Button to download the site export ZIP before deletion
983
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
984
+ msgid "Download Export ZIP"
985
+ msgstr "Download Export ZIP"
986
+
987
+ #. @context: Alert when site export download fails during account deletion
988
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
989
+ msgid "Download failed. Please try again."
990
+ msgstr "Download failed. Please try again."
991
+
992
+ #. @context: Download button label for a non-SVG brand asset
993
+ #: src/ui/pages/BrandPage.tsx
994
+ msgid "Download file"
995
+ msgstr "Download file"
996
+
997
+ #. @context: Meta description for the public brand asset page
998
+ #: src/routes/pages/brand.tsx
999
+ msgid "Download official Jant logos, icons, and preview assets."
1000
+ msgstr "Download official Jant logos, icons, and preview assets."
1001
+
1002
+ #. @context: Download button label for a PNG logo asset
1003
+ #: src/ui/pages/BrandPage.tsx
1004
+ msgid "Download PNG"
1005
+ msgstr "Download PNG"
1006
+
1007
+ #. @context: Download button label for a logo asset
1008
+ #: src/ui/pages/BrandPage.tsx
1009
+ msgid "Download SVG"
1010
+ msgstr "Download SVG"
1011
+
1012
+ #. @context: Hero title on the public brand asset page
1013
+ #: src/ui/pages/BrandPage.tsx
1014
+ msgid "Download the official Jant logo, icons, and preview files."
1015
+ msgstr "Download the official Jant logo, icons, and preview files."
511
1016
 
512
1017
  #. @context: Post status badge - draft
513
1018
  #: src/ui/dash/StatusBadge.tsx
@@ -536,6 +1041,11 @@ msgstr "Draft saved."
536
1041
  msgid "Drafts"
537
1042
  msgstr "Drafts"
538
1043
 
1044
+ #. @context: Helper text shown while organizing collections
1045
+ #: src/ui/shared/CollectionsManager.tsx
1046
+ msgid "Drag collections and dividers into the order you want."
1047
+ msgstr "Drag collections and dividers into the order you want."
1048
+
539
1049
  #. @context: Placeholder for API token name input
540
1050
  #: src/ui/dash/settings/ApiTokensContent.tsx
541
1051
  msgid "e.g. iOS Shortcuts"
@@ -543,16 +1053,30 @@ msgstr "e.g. iOS Shortcuts"
543
1053
 
544
1054
  #. @context: Button to edit item
545
1055
  #. @context: Per-collection edit action
1056
+ #. @context: Per-collection edit action
1057
+ #. @context: Per-collection edit action
546
1058
  #: src/ui/dash/ActionButtons.tsx
547
- #: src/ui/shared/CollectionsSidebar.tsx
1059
+ #: src/ui/pages/CollectionEditorPage.tsx
1060
+ #: src/ui/pages/CollectionEditorPage.tsx
1061
+ #: src/ui/shared/collection-management-labels.ts
548
1062
  msgid "Edit"
549
1063
  msgstr "Edit"
550
1064
 
1065
+ #. @context: Button to manually edit the collection link
1066
+ #: src/ui/shared/collection-management-labels.ts
1067
+ msgid "Edit link"
1068
+ msgstr "Edit link"
1069
+
551
1070
  #. @context: Compose dialog header title in edit mode
552
1071
  #: src/ui/compose/ComposeDialog.tsx
553
1072
  msgid "Edit post"
554
1073
  msgstr "Edit post"
555
1074
 
1075
+ #. @context: Sample link post title on the theme sample page
1076
+ #: src/ui/pages/ThemeSamplePage.tsx
1077
+ msgid "Editorial interfaces worth borrowing from"
1078
+ msgstr "Editorial interfaces worth borrowing from"
1079
+
556
1080
  #. @context: Setup/signin form field - email
557
1081
  #. @context: Setup/signin form field - email
558
1082
  #: src/routes/auth/setup.tsx
@@ -565,48 +1089,146 @@ msgstr "Email"
565
1089
  msgid "Emoji"
566
1090
  msgstr "Emoji"
567
1091
 
568
- #. @context: Emoji picker tab label
569
- #. @context: Emoji picker tab label
1092
+ #. @context: Compose URL field error message
570
1093
  #: src/ui/compose/ComposeDialog.tsx
571
- #: src/ui/shared/CollectionsSidebar.tsx
572
- msgid "Emojis"
573
- msgstr "Emojis"
1094
+ msgid "Enter a valid URL starting with http://, https://, or mailto:."
1095
+ msgstr "Enter a valid URL starting with http://, https://, or mailto:."
574
1096
 
575
1097
  #. @context: Plural entry count label
576
- #: src/ui/pages/CollectionsPage.tsx
1098
+ #. @context: Plural entry count label
1099
+ #: src/ui/shared/CollectionDirectory.tsx
1100
+ #: src/ui/shared/CollectionsManager.tsx
577
1101
  msgid "entries"
578
1102
  msgstr "entries"
579
1103
 
580
1104
  #. @context: Singular entry count label
581
- #: src/ui/pages/CollectionsPage.tsx
1105
+ #. @context: Singular entry count label
1106
+ #: src/ui/shared/CollectionDirectory.tsx
1107
+ #: src/ui/shared/CollectionsManager.tsx
582
1108
  msgid "entry"
583
1109
  msgstr "entry"
584
1110
 
585
- #. @context: Settings item export site as Zola ZIP
1111
+ #. @context: Usage label for the brand pack card
1112
+ #: src/ui/pages/BrandPage.tsx
1113
+ msgid "Everything in one download"
1114
+ msgstr "Everything in one download"
1115
+
1116
+ #. @context: Section title for the quick-start panel on the brand asset page
1117
+ #: src/ui/pages/BrandPage.tsx
1118
+ msgid "Everything most people need is in one ZIP."
1119
+ msgstr "Everything most people need is in one ZIP."
1120
+
1121
+ #. @context: Intro paragraph on the public brand asset page
1122
+ #: src/ui/pages/BrandPage.tsx
1123
+ msgid "Everything on this page is ready to use for articles, launch posts, directories, and product coverage."
1124
+ msgstr "Everything on this page is ready to use for articles, launch posts, directories, and product coverage."
1125
+
1126
+ #. @context: Settings item description for account settings on the settings home page when demo restrictions are enabled
1127
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1128
+ msgid "Export and demo limits"
1129
+ msgstr "Export and demo limits"
1130
+
1131
+ #. @context: Confirmation text after downloading the site export in delete flow
1132
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
1133
+ msgid "Export downloaded."
1134
+ msgstr "Export downloaded."
1135
+
1136
+ #. @context: Settings item — export a Zola static site ZIP
586
1137
  #: src/ui/dash/settings/AccountMenuContent.tsx
587
- msgid "Export Site"
588
- msgstr "Export Site"
1138
+ msgid "Export Static Site"
1139
+ msgstr "Export Static Site"
1140
+
1141
+ #. @context: Title for the favicon asset card
1142
+ #: src/ui/pages/BrandPage.tsx
1143
+ msgid "Favicon"
1144
+ msgstr "Favicon"
589
1145
 
590
1146
  #. @context: Settings item description for avatar
591
1147
  #: src/ui/dash/settings/SettingsRootContent.tsx
592
- msgid "Favicon and header icon"
593
- msgstr "Favicon and header icon"
1148
+ msgid "Favicon and the profile mark in your header"
1149
+ msgstr "Favicon and the profile mark in your header"
594
1150
 
595
1151
  #. @context: Archive visibility filter - featured posts
596
1152
  #. @context: Browse filter for featured posts
597
1153
  #. @context: Browse filter label
598
1154
  #. @context: Browse filter label
599
1155
  #. @context: Browse filter label for featured posts
1156
+ #. @context: Browser page title for the featured feed
1157
+ #. @context: Browser page title for the featured feed
1158
+ #. @context: Inactive browse tab label on sample page
1159
+ #. @context: Page heading for the featured posts feed
600
1160
  #. @context: Post badge - featured
1161
+ #. @context: Select option for using featured posts as the main RSS feed
1162
+ #. @context: Tooltip and screen reader label for the featured-post icon in the post footer when no featured date is available
1163
+ #: src/routes/pages/featured.tsx
1164
+ #: src/routes/pages/home.tsx
601
1165
  #: src/ui/dash/appearance/NavigationContent.tsx
602
1166
  #: src/ui/dash/appearance/NavigationContent.tsx
603
1167
  #: src/ui/dash/appearance/NavigationContent.tsx
1168
+ #: src/ui/dash/settings/GeneralContent.tsx
604
1169
  #: src/ui/dash/StatusBadge.tsx
605
1170
  #: src/ui/layouts/SiteLayout.tsx
606
1171
  #: src/ui/pages/ArchivePage.tsx
1172
+ #: src/ui/pages/FeaturedPage.tsx
1173
+ #: src/ui/pages/ThemeSamplePage.tsx
1174
+ #: src/ui/shared/PostFooter.tsx
607
1175
  msgid "Featured"
608
1176
  msgstr "Featured"
609
1177
 
1178
+ #. @context: Label for the explicit featured RSS feed URL
1179
+ #: src/ui/dash/settings/GeneralContent.tsx
1180
+ msgid "Featured feed"
1181
+ msgstr "Featured feed"
1182
+
1183
+ #. @context: Tooltip and screen reader label for the featured-post icon in the post footer
1184
+ #: src/ui/shared/PostFooter.tsx
1185
+ msgid "Featured on {date} at {time}"
1186
+ msgstr "Featured on {date} at {time}"
1187
+
1188
+ #. @context: RSS and Atom feed title suffix for the featured posts feed
1189
+ #. @context: RSS autodiscovery title for the featured posts feed
1190
+ #: src/routes/feed/rss.ts
1191
+ #: src/ui/layouts/BaseLayout.tsx
1192
+ msgid "Featured posts"
1193
+ msgstr "Featured posts"
1194
+
1195
+ #. @context: Toast after saving feed settings
1196
+ #: src/routes/dash/settings.tsx
1197
+ msgid "Feed settings updated."
1198
+ msgstr "Feed settings updated."
1199
+
1200
+ #. @context: Toast after copying a feed URL to the clipboard
1201
+ #: src/ui/dash/settings/GeneralContent.tsx
1202
+ msgid "Feed URL copied."
1203
+ msgstr "Feed URL copied."
1204
+
1205
+ #. @context: Settings section heading for RSS feed configuration
1206
+ #: src/ui/dash/settings/GeneralContent.tsx
1207
+ msgid "Feeds"
1208
+ msgstr "Feeds"
1209
+
1210
+ #. @context: Search snippet suffix on sample page
1211
+ #: src/ui/pages/ThemeSamplePage.tsx
1212
+ msgid "feel deliberate instead of washed out."
1213
+ msgstr "feel deliberate instead of washed out."
1214
+
1215
+ #. @context: Table cell in the sample detail article
1216
+ #: src/ui/pages/ThemeSamplePage.tsx
1217
+ msgid "Feel editorial and slightly quieter."
1218
+ msgstr "Feel editorial and slightly quieter."
1219
+
1220
+ #. @context: Sample quote attribution title on the theme sample page
1221
+ #: src/ui/pages/ThemeSamplePage.tsx
1222
+ msgid "Field Notes on Interface Tone"
1223
+ msgstr "Field Notes on Interface Tone"
1224
+
1225
+ #. @context: Color theme preview card title
1226
+ #. @context: Input value on sample page
1227
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1228
+ #: src/ui/pages/ThemeSamplePage.tsx
1229
+ msgid "Field notes on quiet design"
1230
+ msgstr "Field notes on quiet design"
1231
+
610
1232
  #. @context: Error toast when file storage is not set up
611
1233
  #. @context: Error when file storage is not set up
612
1234
  #: src/routes/api/upload.ts
@@ -624,6 +1246,21 @@ msgstr "File uploaded."
624
1246
  msgid "Files"
625
1247
  msgstr "Files"
626
1248
 
1249
+ #. @context: Settings item description for custom CSS
1250
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1251
+ msgid "Fine-grained styling overrides"
1252
+ msgstr "Fine-grained styling overrides"
1253
+
1254
+ #. @context: Label for the list of stable RSS feed URLs
1255
+ #: src/ui/dash/settings/GeneralContent.tsx
1256
+ msgid "Fixed feed URLs"
1257
+ msgstr "Fixed feed URLs"
1258
+
1259
+ #. @context: Theme mode option description
1260
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1261
+ msgid "Follow each visitor's system preference."
1262
+ msgstr "Follow each visitor's system preference."
1263
+
627
1264
  #. @context: Appearance settings heading for font theme
628
1265
  #: src/ui/dash/appearance/FontThemeContent.tsx
629
1266
  msgid "Font theme"
@@ -634,6 +1271,11 @@ msgstr "Font theme"
634
1271
  msgid "Font Theme"
635
1272
  msgstr "Font Theme"
636
1273
 
1274
+ #. @context: Paragraph mentioning code on the sample detail article
1275
+ #: src/ui/pages/ThemeSamplePage.tsx
1276
+ msgid "For the same reason, inline code should stay neutral. Something like theme.siteAccent = soften(green, 12%) should not suddenly become the loudest thing on the page."
1277
+ msgstr "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."
1278
+
637
1279
  #. @context: Search results count - multiple
638
1280
  #. placeholder {0}: String(results.length)
639
1281
  #: src/ui/pages/SearchPage.tsx
@@ -645,6 +1287,11 @@ msgstr "Found {0} results"
645
1287
  msgid "Found 1 result"
646
1288
  msgstr "Found 1 result"
647
1289
 
1290
+ #. @context: Compose dialog - open fullscreen editor
1291
+ #: src/ui/compose/ComposeDialog.tsx
1292
+ msgid "Fullscreen"
1293
+ msgstr "Fullscreen"
1294
+
648
1295
  #. @context: Settings item — general settings
649
1296
  #. @context: Settings section heading
650
1297
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -652,60 +1299,212 @@ msgstr "Found 1 result"
652
1299
  msgid "General"
653
1300
  msgstr "General"
654
1301
 
1302
+ #. @context: Compose publish settings slug summary when no custom slug is set
1303
+ #: src/ui/compose/ComposeDialog.tsx
1304
+ msgid "Generate automatically"
1305
+ msgstr "Generate automatically"
1306
+
655
1307
  #. @context: Button to create new API token
656
1308
  #: src/ui/dash/settings/ApiTokensContent.tsx
657
1309
  msgid "Generate Token"
658
1310
  msgstr "Generate Token"
659
1311
 
1312
+ #. @context: Compose custom slug helper while generating a suggested slug
1313
+ #: src/ui/compose/ComposeDialog.tsx
1314
+ msgid "Generating a link..."
1315
+ msgstr "Generating a link..."
1316
+
660
1317
  #. @context: Compose link title placeholder
661
1318
  #: src/ui/compose/ComposeDialog.tsx
662
1319
  msgid "Give it a title..."
663
1320
  msgstr "Give it a title..."
664
1321
 
1322
+ #. @context: Table cell in the sample detail article
1323
+ #: src/ui/pages/ThemeSamplePage.tsx
1324
+ msgid "Guide the eye without taking over the layout."
1325
+ msgstr "Guide the eye without taking over the layout."
1326
+
1327
+ #. @context: Section kicker for the usage guidance section on the brand asset page
1328
+ #: src/ui/pages/BrandPage.tsx
1329
+ msgid "Guidelines"
1330
+ msgstr "Guidelines"
1331
+
1332
+ #. @context: Usage label for the square tile asset card
1333
+ #: src/ui/pages/BrandPage.tsx
1334
+ msgid "Hard edge"
1335
+ msgstr "Hard edge"
1336
+
1337
+ #. @context: Toast after saving max visible nav links setting
1338
+ #: src/ui/dash/appearance/NavigationContent.tsx
1339
+ msgid "Header link limit updated."
1340
+ msgstr "Header link limit updated."
1341
+
665
1342
  #. @context: Settings item description for navigation
666
1343
  #: src/ui/dash/settings/SettingsRootContent.tsx
667
- msgid "Header links, featured"
668
- msgstr "Header links, featured"
1344
+ msgid "Header links, home feed, and overflow menu"
1345
+ msgstr "Header links, home feed, and overflow menu"
1346
+
1347
+ #. @context: Description for the RSS system navigation toggle. %feed% is either Latest or Featured.
1348
+ #: src/ui/dash/appearance/NavigationContent.tsx
1349
+ msgid "Header RSS points to your %feed% feed (/feed). Change what /feed returns in General."
1350
+ msgstr "Header RSS points to your %feed% feed (/feed). Change what /feed returns in General."
1351
+
1352
+ #. @context: Bullet item in the sample detail article
1353
+ #: src/ui/pages/ThemeSamplePage.tsx
1354
+ msgid "Headings should keep their hierarchy even when the accent gets softer."
1355
+ msgstr "Headings should keep their hierarchy even when the accent gets softer."
669
1356
 
670
1357
  #. @context: Hint text in alt text panel
671
1358
  #: src/ui/compose/ComposeDialog.tsx
672
1359
  msgid "Helps screen readers describe the image"
673
1360
  msgstr "Helps screen readers describe the image"
674
1361
 
1362
+ #. @context: Archive visibility filter for posts hidden from Latest
1363
+ #. @context: Compose publish settings visibility option
1364
+ #. @context: Post badge for posts hidden from Latest
1365
+ #: src/ui/compose/ComposeDialog.tsx
1366
+ #: src/ui/dash/StatusBadge.tsx
1367
+ #: src/ui/pages/ArchivePage.tsx
1368
+ msgid "Hidden from Latest"
1369
+ msgstr "Hidden from Latest"
1370
+
1371
+ #. @context: Compose dropdown option for hiding a post from the Latest view
1372
+ #: src/ui/compose/ComposeDialog.tsx
1373
+ msgid "Hide from Latest"
1374
+ msgstr "Hide from Latest"
1375
+
675
1376
  #. @context: Collection sort order option
676
1377
  #. @context: Collection sort order option
677
- #: src/ui/compose/ComposeDialog.tsx
678
- #: src/ui/shared/CollectionsSidebar.tsx
1378
+ #: src/ui/pages/CollectionPage.tsx
1379
+ #: src/ui/shared/collection-management-labels.ts
679
1380
  msgid "Highest rated"
680
1381
  msgstr "Highest rated"
681
1382
 
1383
+ #. @context: Settings subsection heading for home page settings
1384
+ #: src/ui/dash/settings/GeneralContent.tsx
1385
+ msgid "Home"
1386
+ msgstr "Home"
1387
+
682
1388
  #. @context: Toast after saving home default view setting
683
1389
  #: src/ui/dash/appearance/NavigationContent.tsx
684
- msgid "Home view saved"
685
- msgstr "Home view saved"
1390
+ msgid "Home feed updated."
1391
+ msgstr "Home feed updated."
686
1392
 
687
- #. @context: Icon picker tab label
688
- #. @context: Icon picker tab label
689
- #: src/ui/compose/ComposeDialog.tsx
690
- #: src/ui/shared/CollectionsSidebar.tsx
691
- msgid "Icons"
692
- msgstr "Icons"
1393
+ #. @context: Description for the apple touch icon asset card
1394
+ #: src/ui/pages/BrandPage.tsx
1395
+ msgid "Home screen icon for iPhone and iPad shortcuts."
1396
+ msgstr "Home screen icon for iPhone and iPad shortcuts."
1397
+
1398
+ #. @context: Toast after auto-saving home settings
1399
+ #: src/routes/dash/settings.tsx
1400
+ msgid "Home settings updated."
1401
+ msgstr "Home settings updated."
1402
+
1403
+ #. @context: Generic hosted auth provider label when no explicit provider name is configured
1404
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1405
+ msgid "Hosted account"
1406
+ msgstr "Hosted account"
1407
+
1408
+ #. @context: Confirmation phrase the user must type to delete their account. {siteName} is the blog name.
1409
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
1410
+ msgid "I want to delete {siteName}"
1411
+ msgstr "I want to delete {siteName}"
1412
+
1413
+ #. @context: Section kicker for the icon and preview downloads section
1414
+ #: src/ui/pages/BrandPage.tsx
1415
+ msgid "Icons and previews"
1416
+ msgstr "Icons and previews"
1417
+
1418
+ #. @context: Closing paragraph on the sample detail article
1419
+ #: src/ui/pages/ThemeSamplePage.tsx
1420
+ msgid "If this article still feels like a page you want to keep reading, the palette is probably close."
1421
+ msgstr "If this article still feels like a page you want to keep reading, the palette is probably close."
1422
+
1423
+ #. @context: Alert body on theme sample page
1424
+ #: src/ui/pages/ThemeSamplePage.tsx
1425
+ msgid "If this page feels too branded, the first place to soften is the default theme’s site accent, not the border or body text."
1426
+ msgstr "If this page feels too branded, the first place to soften is the default theme’s site accent, not the border or body text."
693
1427
 
694
1428
  #. @context: Archive media filter - images
695
1429
  #: src/ui/pages/ArchivePage.tsx
696
1430
  msgid "Images"
697
1431
  msgstr "Images"
698
1432
 
699
- #. @context: Checkbox for allowing search engine indexing
700
- #: src/ui/dash/settings/GeneralContent.tsx
701
- msgid "It's OK for search engines to index my site"
702
- msgstr "It's OK for search engines to index my site"
1433
+ #. @context: Link to the thread root from a post footer
1434
+ #: src/ui/shared/PostFooter.tsx
1435
+ msgid "In thread "
1436
+ msgstr "In thread "
1437
+
1438
+ #. @context: Accessible label for the asset keyword list on the public brand page
1439
+ #: src/ui/pages/BrandPage.tsx
1440
+ msgid "Included assets"
1441
+ msgstr "Included assets"
1442
+
1443
+ #. @context: Label above the included collections list on an aggregate collection page
1444
+ #: src/ui/pages/CollectionPage.tsx
1445
+ msgid "Includes"
1446
+ msgstr "Includes"
1447
+
1448
+ #. @context: Site accent sample badge
1449
+ #: src/ui/pages/ThemeSamplePage.tsx
1450
+ msgid "Inline emphasis"
1451
+ msgstr "Inline emphasis"
1452
+
1453
+ #. @context: Table cell in the sample detail article
1454
+ #: src/ui/pages/ThemeSamplePage.tsx
1455
+ msgid "Inline link"
1456
+ msgstr "Inline link"
1457
+
1458
+ #. @context: Sample note summary suffix on the theme sample page
1459
+ #: src/ui/pages/ThemeSamplePage.tsx
1460
+ msgid "instead of judging it as an isolated swatch."
1461
+ msgstr "instead of judging it as an isolated swatch."
1462
+
1463
+ #. @context: Sample quote text on the theme sample page
1464
+ #: src/ui/pages/ThemeSamplePage.tsx
1465
+ msgid "Interfaces for reading should guide the eye, not keep asking for attention."
1466
+ msgstr "Interfaces for reading should guide the eye, not keep asking for attention."
1467
+
1468
+ #. @context: Usage label for the apple touch icon asset card
1469
+ #: src/ui/pages/BrandPage.tsx
1470
+ msgid "iOS home screen"
1471
+ msgstr "iOS home screen"
1472
+
1473
+ #. @context: Accessible label for the Jant logo mark
1474
+ #: src/ui/pages/BrandPage.tsx
1475
+ msgid "Jant logo"
1476
+ msgstr "Jant logo"
1477
+
1478
+ #. @context: Body paragraph on the theme sample page
1479
+ #: src/ui/pages/ThemeSamplePage.tsx
1480
+ msgid "Jant looks best when the accent feels editorial. Buttons can stay sturdy, but inline emphasis should feel like a pen mark, not a dashboard highlight."
1481
+ msgstr "Jant looks best when the accent feels editorial. Buttons can stay sturdy, but inline emphasis should feel like a pen mark, not a dashboard highlight."
1482
+
1483
+ #. @context: Active nav link label on sample page
1484
+ #: src/ui/pages/ThemeSamplePage.tsx
1485
+ msgid "Journal"
1486
+ msgstr "Journal"
1487
+
1488
+ #. @context: Guidance title on the brand asset page
1489
+ #: src/ui/pages/BrandPage.tsx
1490
+ msgid "Keep the artwork unchanged."
1491
+ msgstr "Keep the artwork unchanged."
1492
+
1493
+ #. @context: Collection slug validation error for links that are too long
1494
+ #: src/ui/shared/collection-management-labels.ts
1495
+ msgid "Keep this link under 200 characters."
1496
+ msgstr "Keep this link under 200 characters."
703
1497
 
704
1498
  #. @context: Nav item label field
705
1499
  #: src/ui/dash/appearance/NavigationContent.tsx
706
1500
  msgid "Label"
707
1501
  msgstr "Label"
708
1502
 
1503
+ #. @context: Placeholder for an optional divider label in collections organize mode
1504
+ #: src/ui/shared/CollectionsManager.tsx
1505
+ msgid "Label (optional)"
1506
+ msgstr "Label (optional)"
1507
+
709
1508
  #. @context: Error toast when nav link fields are empty
710
1509
  #: src/ui/dash/appearance/NavigationContent.tsx
711
1510
  msgid "Label and URL are required"
@@ -721,28 +1520,72 @@ msgstr "Label is required"
721
1520
  msgid "Language"
722
1521
  msgstr "Language"
723
1522
 
1523
+ #. @context: Settings subsection heading for language and time zone fields
1524
+ #: src/ui/dash/settings/GeneralContent.tsx
1525
+ msgid "Language & Time"
1526
+ msgstr "Language & Time"
1527
+
1528
+ #. @context: Toast after saving language and time settings
1529
+ #: src/routes/dash/settings.tsx
1530
+ msgid "Language and time updated."
1531
+ msgstr "Language and time updated."
1532
+
724
1533
  #. @context: Token last used date
725
1534
  #. placeholder {0}: formatDate(token.lastUsedAt)
726
1535
  #: src/ui/dash/settings/ApiTokensContent.tsx
727
1536
  msgid "Last used {0}"
728
1537
  msgstr "Last used {0}"
729
1538
 
1539
+ #. @context: Active browse tab label on sample page
730
1540
  #. @context: Browse filter for latest posts
731
1541
  #. @context: Browse filter label
732
1542
  #. @context: Browse filter label
733
1543
  #. @context: Browse filter label for latest posts
1544
+ #. @context: Browser page title for the latest feed
1545
+ #. @context: Browser page title for the latest feed
1546
+ #. @context: Page heading for the latest posts feed
1547
+ #. @context: Select option for using latest posts as the main RSS feed
1548
+ #: src/routes/pages/home.tsx
1549
+ #: src/routes/pages/latest.tsx
734
1550
  #: src/ui/dash/appearance/NavigationContent.tsx
735
1551
  #: src/ui/dash/appearance/NavigationContent.tsx
736
1552
  #: src/ui/dash/appearance/NavigationContent.tsx
1553
+ #: src/ui/dash/settings/GeneralContent.tsx
737
1554
  #: src/ui/layouts/SiteLayout.tsx
1555
+ #: src/ui/pages/HomePage.tsx
1556
+ #: src/ui/pages/ThemeSamplePage.tsx
738
1557
  msgid "Latest"
739
1558
  msgstr "Latest"
740
1559
 
1560
+ #. @context: Label for the explicit latest RSS feed URL
1561
+ #: src/ui/dash/settings/GeneralContent.tsx
1562
+ msgid "Latest feed"
1563
+ msgstr "Latest feed"
1564
+
1565
+ #. @context: RSS and Atom feed title suffix for the latest public posts feed
1566
+ #. @context: RSS autodiscovery title for the latest public posts feed
1567
+ #: src/routes/feed/rss.ts
1568
+ #: src/ui/layouts/BaseLayout.tsx
1569
+ msgid "Latest posts"
1570
+ msgstr "Latest posts"
1571
+
1572
+ #. @context: Compose publish settings slug help text
1573
+ #: src/ui/compose/ComposeDialog.tsx
1574
+ msgid "Leave blank to generate one automatically."
1575
+ msgstr "Leave blank to generate one automatically."
1576
+
741
1577
  #. @context: Suffix after Custom CSS link on color theme page
742
1578
  #: src/ui/dash/appearance/ColorThemeContent.tsx
743
1579
  msgid "lets you override any theme variable."
744
1580
  msgstr "lets you override any theme variable."
745
1581
 
1582
+ #. @context: Theme mode option label
1583
+ #. @context: Theme mode option on sample page
1584
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1585
+ #: src/ui/pages/ThemeSamplePage.tsx
1586
+ msgid "Light"
1587
+ msgstr "Light"
1588
+
746
1589
  #. @context: Nav item type badge
747
1590
  #: src/ui/dash/appearance/NavigationContent.tsx
748
1591
  msgid "link"
@@ -757,11 +1600,26 @@ msgstr "link"
757
1600
  msgid "Link"
758
1601
  msgstr "Link"
759
1602
 
1603
+ #. @context: Description for the archive system navigation toggle
1604
+ #: src/ui/shared/navigation-labels.ts
1605
+ msgid "Link to the post archive"
1606
+ msgstr "Link to the post archive"
1607
+
1608
+ #. @context: Description for the collections system navigation toggle
1609
+ #: src/ui/shared/navigation-labels.ts
1610
+ msgid "Link to your collections page"
1611
+ msgstr "Link to your collections page"
1612
+
760
1613
  #. @context: Post format label plural - links
761
1614
  #: src/ui/pages/ArchivePage.tsx
762
1615
  msgid "Links"
763
1616
  msgstr "Links"
764
1617
 
1618
+ #. @context: Bullet item in the sample detail article
1619
+ #: src/ui/pages/ThemeSamplePage.tsx
1620
+ msgid "Links should read clearly without glowing against the page."
1621
+ msgstr "Links should read clearly without glowing against the page."
1622
+
765
1623
  #. @context: Label for max visible nav links number input
766
1624
  #: src/ui/dash/appearance/NavigationContent.tsx
767
1625
  msgid "Links shown in header"
@@ -772,70 +1630,157 @@ msgstr "Links shown in header"
772
1630
  msgid "List posts:"
773
1631
  msgstr "List posts:"
774
1632
 
1633
+ #. @context: Inline link label in the sample note post body
1634
+ #. @context: Inline link label in the sample note summary
1635
+ #: src/ui/pages/ThemeSamplePage.tsx
1636
+ #: src/ui/pages/ThemeSamplePage.tsx
1637
+ msgid "live theme controls"
1638
+ msgstr "live theme controls"
1639
+
775
1640
  #. @context: Pagination button - load more items
776
1641
  #: src/ui/shared/Pagination.tsx
777
1642
  msgid "Load more"
778
1643
  msgstr "Load more"
779
1644
 
780
- #. @context: Collection sort order option
781
- #. @context: Collection sort order option
782
- #: src/ui/compose/ComposeDialog.tsx
783
- #: src/ui/shared/CollectionsSidebar.tsx
784
- msgid "Lowest rated"
785
- msgstr "Lowest rated"
1645
+ #. @context: Asset keyword on the public brand asset page
1646
+ #. @context: Asset keyword on the public brand asset page
1647
+ #. @context: Title for the default logo asset card
1648
+ #. @context: Title for the default logo card
1649
+ #: src/ui/pages/BrandPage.tsx
1650
+ #: src/ui/pages/BrandPage.tsx
1651
+ #: src/ui/pages/BrandPage.tsx
1652
+ #: src/ui/pages/BrandPage.tsx
1653
+ msgid "Logo"
1654
+ msgstr "Logo"
1655
+
1656
+ #. @context: Section kicker for the logo downloads section
1657
+ #: src/ui/pages/BrandPage.tsx
1658
+ msgid "Logos"
1659
+ msgstr "Logos"
1660
+
1661
+ #. @context: Ordered list item in the sample detail article
1662
+ #: src/ui/pages/ThemeSamplePage.tsx
1663
+ msgid "Look at the footer metadata last, to make sure the accent is not fighting the typography."
1664
+ msgstr "Look at the footer metadata last, to make sure the accent is not fighting the typography."
1665
+
1666
+ #. @context: Theme group description on color theme settings page
1667
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1668
+ msgid "Low-distraction palettes for a cleaner, calmer reading rhythm."
1669
+ msgstr "Low-distraction palettes for a cleaner, calmer reading rhythm."
786
1670
 
787
- #. @context: Settings item description for sessions
1671
+ #. @context: Label for the canonical /feed URL
1672
+ #. @context: RSS autodiscovery title for the site's main feed
1673
+ #: src/ui/dash/settings/GeneralContent.tsx
1674
+ #: src/ui/layouts/BaseLayout.tsx
1675
+ msgid "Main feed"
1676
+ msgstr "Main feed"
1677
+
1678
+ #. @context: Settings field label for the canonical /feed output
1679
+ #: src/ui/dash/settings/GeneralContent.tsx
1680
+ msgid "Main RSS feed"
1681
+ msgstr "Main RSS feed"
1682
+
1683
+ #. @context: Settings item description for hosted account management in the connected provider
1684
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1685
+ msgid "Manage password and hosted access in {providerLabel}"
1686
+ msgstr "Manage password and hosted access in {providerLabel}"
1687
+
1688
+ #. @context: Intro text on the account settings menu page below the title
788
1689
  #: src/ui/dash/settings/AccountMenuContent.tsx
789
- msgid "Manage active sign-in sessions"
790
- msgstr "Manage active sign-in sessions"
1690
+ msgid "Manage sign-in security, exports, and irreversible actions."
1691
+ msgstr "Manage sign-in security, exports, and irreversible actions."
1692
+
1693
+ #. @context: Intro text on the hosted account settings menu page below the title
1694
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1695
+ msgid "Manage this site's active sessions here. Password and hosted access are managed through {providerLabel}."
1696
+ msgstr "Manage this site's active sessions here. Password and hosted access are managed through {providerLabel}."
1697
+
1698
+ #. @context: Color theme preview date label
1699
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1700
+ msgid "March 14"
1701
+ msgstr "March 14"
1702
+
1703
+ #. @context: Date label on theme sample content card
1704
+ #: src/ui/pages/ThemeSamplePage.tsx
1705
+ msgid "March 15"
1706
+ msgstr "March 15"
791
1707
 
792
1708
  #. @context: Placeholder hint for markdown-enabled textareas
793
1709
  #: src/ui/dash/settings/GeneralContent.tsx
794
1710
  msgid "Markdown supported"
795
1711
  msgstr "Markdown supported"
796
1712
 
797
- #. @context: Toast after saving max visible nav links setting
798
- #: src/ui/dash/appearance/NavigationContent.tsx
799
- msgid "Max visible links saved"
800
- msgstr "Max visible links saved"
801
-
802
1713
  #. @context: Compose toolbar - media tooltip
803
1714
  #: src/ui/compose/ComposeDialog.tsx
804
1715
  msgid "Media"
805
1716
  msgstr "Media"
806
1717
 
807
- #. @context: Aria-label for more button
808
- #: src/ui/shared/CollectionsSidebar.tsx
1718
+ #. @context: Aria-label for collections page more button
1719
+ #. @context: Button label for a menu with more actions
1720
+ #. @context: Post menu trigger label in the post footer
1721
+ #: src/routes/dash/custom-urls.tsx
1722
+ #: src/ui/shared/collection-management-labels.ts
1723
+ #: src/ui/shared/PostFooter.tsx
809
1724
  msgid "More actions"
810
1725
  msgstr "More actions"
811
1726
 
1727
+ #. @context: Theme group description on color theme settings page
1728
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1729
+ msgid "More atmospheric palettes with a stronger sense of time, place, or tone."
1730
+ msgstr "More atmospheric palettes with a stronger sense of time, place, or tone."
1731
+
812
1732
  #. @context: Button to show overflow nav links
813
1733
  #: src/ui/layouts/SiteLayout.tsx
814
1734
  msgid "More links"
815
1735
  msgstr "More links"
816
1736
 
1737
+ #. @context: Helper text in the quick-create collection dialog
1738
+ #: src/ui/shared/collection-management-labels.ts
1739
+ msgid "More options are available after you create it."
1740
+ msgstr "More options are available after you create it."
1741
+
1742
+ #. @context: Fallback theme group heading on color theme page
1743
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1744
+ msgid "More Palettes"
1745
+ msgstr "More Palettes"
1746
+
1747
+ #. @context: Secondary badge label on sample page
1748
+ #. @context: Token label on sample page
1749
+ #: src/ui/pages/ThemeSamplePage.tsx
1750
+ #: src/ui/pages/ThemeSamplePage.tsx
1751
+ msgid "Muted"
1752
+ msgstr "Muted"
1753
+
817
1754
  #. @context: Collection title placeholder
818
- #. @context: Collection title placeholder
819
- #: src/ui/compose/ComposeDialog.tsx
820
- #: src/ui/shared/CollectionsSidebar.tsx
1755
+ #: src/ui/shared/collection-management-labels.ts
821
1756
  msgid "My Collection"
822
1757
  msgstr "My Collection"
823
1758
 
824
1759
  #. @context: Settings item description for general
825
1760
  #: src/ui/dash/settings/SettingsRootContent.tsx
826
- msgid "Name, description, language"
827
- msgstr "Name, description, language"
1761
+ msgid "Name, metadata, language, and search defaults"
1762
+ msgstr "Name, metadata, language, and search defaults"
828
1763
 
829
1764
  #. @context: Settings item — navigation settings
830
1765
  #: src/ui/dash/settings/SettingsRootContent.tsx
831
1766
  msgid "Navigation"
832
1767
  msgstr "Navigation"
833
1768
 
1769
+ #. @context: Navigation section heading on sample page
1770
+ #: src/ui/pages/ThemeSamplePage.tsx
1771
+ msgid "Navigation and reading states"
1772
+ msgstr "Navigation and reading states"
1773
+
834
1774
  #. @context: Section heading for nav items
835
1775
  #: src/ui/dash/appearance/NavigationContent.tsx
836
1776
  msgid "Navigation items"
837
1777
  msgstr "Navigation items"
838
1778
 
1779
+ #. @context: Toast after saving navigation item order
1780
+ #: src/ui/dash/appearance/NavigationContent.tsx
1781
+ msgid "Navigation order updated."
1782
+ msgstr "Navigation order updated."
1783
+
839
1784
  #. @context: Label for nav preview section
840
1785
  #. @context: Label for nav preview section
841
1786
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -843,8 +1788,12 @@ msgstr "Navigation items"
843
1788
  msgid "Navigation Preview"
844
1789
  msgstr "Navigation Preview"
845
1790
 
846
- #. @context: Tooltip/aria for add collection button
847
- #: src/ui/shared/CollectionsSidebar.tsx
1791
+ #. @context: Button to create a collection from collections page
1792
+ #. @context: Page title for new collection
1793
+ #. @context: Page title for new collection
1794
+ #: src/ui/pages/CollectionEditorPage.tsx
1795
+ #: src/ui/pages/CollectionEditorPage.tsx
1796
+ #: src/ui/shared/CollectionsManager.tsx
848
1797
  msgid "New Collection"
849
1798
  msgstr "New Collection"
850
1799
 
@@ -857,6 +1806,11 @@ msgstr "New Collection"
857
1806
  msgid "New Custom URL"
858
1807
  msgstr "New Custom URL"
859
1808
 
1809
+ #. @context: Menu action to create a divider on collections page
1810
+ #: src/ui/shared/CollectionsManager.tsx
1811
+ msgid "New Divider"
1812
+ msgstr "New Divider"
1813
+
860
1814
  #. @context: Password form field
861
1815
  #. @context: Password reset form field
862
1816
  #: src/routes/auth/reset.tsx
@@ -865,21 +1819,25 @@ msgid "New Password"
865
1819
  msgstr "New Password"
866
1820
 
867
1821
  #. @context: Browser page title for the new post page
1822
+ #. @context: Collection page quick compose button aria label
868
1823
  #. @context: Page title for the new post page
869
1824
  #: src/routes/pages/new.tsx
1825
+ #: src/ui/pages/CollectionPage.tsx
870
1826
  #: src/ui/pages/ComposePage.tsx
871
1827
  msgid "New post"
872
1828
  msgstr "New post"
873
1829
 
874
1830
  #. @context: Collection sort order option
875
1831
  #. @context: Collection sort order option
876
- #: src/ui/compose/ComposeDialog.tsx
877
- #: src/ui/shared/CollectionsSidebar.tsx
1832
+ #: src/ui/pages/CollectionPage.tsx
1833
+ #: src/ui/shared/collection-management-labels.ts
878
1834
  msgid "Newest first"
879
1835
  msgstr "Newest first"
880
1836
 
881
1837
  #. @context: Pagination button - next page
882
1838
  #. @context: Pagination button - next page
1839
+ #. @context: Pagination next label on sample page
1840
+ #: src/ui/pages/ThemeSamplePage.tsx
883
1841
  #: src/ui/shared/Pagination.tsx
884
1842
  #: src/ui/shared/Pagination.tsx
885
1843
  msgid "Next"
@@ -887,11 +1845,20 @@ msgstr "Next"
887
1845
 
888
1846
  #. @context: Empty state when no sessions exist (shouldn't normally appear)
889
1847
  #: src/ui/dash/settings/SessionsContent.tsx
890
- msgid "No active sessions found."
891
- msgstr "No active sessions found."
1848
+ msgid "No active sessions right now. Signed-in devices show up here."
1849
+ msgstr "No active sessions right now. Signed-in devices show up here."
1850
+
1851
+ #. @context: Compose collection combobox empty state when search has no results
1852
+ #: src/ui/compose/ComposeDialog.tsx
1853
+ msgid "No collections match that search. Try a different name."
1854
+ msgstr "No collections match that search. Try a different name."
892
1855
 
1856
+ #. @context: Empty state message on collections page
1857
+ #. @context: Empty state message on collections page
893
1858
  #. @context: Empty state message on collections page
894
1859
  #: src/ui/pages/CollectionsPage.tsx
1860
+ #: src/ui/shared/CollectionDirectory.tsx
1861
+ #: src/ui/shared/CollectionsManager.tsx
895
1862
  msgid "No collections yet. Start one to organize posts by topic."
896
1863
  msgstr "No collections yet. Start one to organize posts by topic."
897
1864
 
@@ -905,11 +1872,6 @@ msgstr "No custom URLs yet. Create one to add redirects or custom paths for post
905
1872
  msgid "No drafts yet. Save a draft to find it here."
906
1873
  msgstr "No drafts yet. Save a draft to find it here."
907
1874
 
908
- #. @context: Empty state message on featured page
909
- #: src/ui/pages/FeaturedPage.tsx
910
- msgid "No featured posts. Mark a post as featured to highlight it here."
911
- msgstr "No featured posts. Mark a post as featured to highlight it here."
912
-
913
1875
  #. @context: Error toast when no file was selected for upload
914
1876
  #. @context: Error when no file was selected for upload
915
1877
  #: src/routes/api/upload.ts
@@ -917,35 +1879,39 @@ msgstr "No featured posts. Mark a post as featured to highlight it here."
917
1879
  msgid "No file selected. Choose a file to upload."
918
1880
  msgstr "No file selected. Choose a file to upload."
919
1881
 
920
- #. @context: Compose collection combobox empty state when search has no results
921
- #: src/ui/compose/ComposeDialog.tsx
922
- msgid "No matching collections."
923
- msgstr "No matching collections."
924
-
925
1882
  #. @context: Empty state for navigation items
926
1883
  #: src/ui/dash/appearance/NavigationContent.tsx
927
1884
  msgid "No navigation items yet. Add links or enable system items below."
928
1885
  msgstr "No navigation items yet. Add links or enable system items below."
929
1886
 
930
- #. @context: Archive empty state with filters
931
- #: src/ui/pages/ArchivePage.tsx
932
- msgid "No posts match these filters. Try adjusting your selection or clear all filters."
933
- msgstr "No posts match these filters. Try adjusting your selection or clear all filters."
934
-
935
1887
  #. @context: Search empty results
936
1888
  #: src/ui/pages/SearchPage.tsx
937
1889
  msgid "No results. Try different keywords."
938
1890
  msgstr "No results. Try different keywords."
939
1891
 
1892
+ #. @context: Archive empty state with filters applied
1893
+ #: src/ui/pages/ArchivePage.tsx
1894
+ msgid "No threads match these filters. Try adjusting your selection or clear all filters."
1895
+ msgstr "No threads match these filters. Try adjusting your selection or clear all filters."
1896
+
1897
+ #. @context: Color theme preview format label
940
1898
  #. @context: Compose format tab
941
1899
  #. @context: Post format badge - note
942
1900
  #. @context: Post format label - note
1901
+ #. @context: Post format label on theme sample content card
943
1902
  #: src/ui/compose/ComposeDialog.tsx
1903
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
944
1904
  #: src/ui/dash/FormatBadge.tsx
945
1905
  #: src/ui/pages/ArchivePage.tsx
1906
+ #: src/ui/pages/ThemeSamplePage.tsx
946
1907
  msgid "Note"
947
1908
  msgstr "Note"
948
1909
 
1910
+ #. @context: Inline link label in the sample quote commentary
1911
+ #: src/ui/pages/ThemeSamplePage.tsx
1912
+ msgid "note treatment"
1913
+ msgstr "note treatment"
1914
+
949
1915
  #. @context: Post format label plural - notes
950
1916
  #: src/ui/pages/ArchivePage.tsx
951
1917
  msgid "Notes"
@@ -956,29 +1922,77 @@ msgstr "Notes"
956
1922
  msgid "Nothing here yet."
957
1923
  msgstr "Nothing here yet."
958
1924
 
1925
+ #. @context: Empty state message on an aggregate collection page
1926
+ #: src/ui/pages/CollectionPage.tsx
1927
+ msgid "Nothing here yet. Add posts to one of these collections to fill this view."
1928
+ msgstr "Nothing here yet. Add posts to one of these collections to fill this view."
1929
+
1930
+ #. @context: Empty state message on featured page
1931
+ #: src/ui/pages/FeaturedPage.tsx
1932
+ msgid "Nothing in Featured yet. Mark a post as featured to show it here."
1933
+ msgstr "Nothing in Featured yet. Mark a post as featured to show it here."
1934
+
959
1935
  #. @context: Collection sort order option
960
1936
  #. @context: Collection sort order option
961
- #: src/ui/compose/ComposeDialog.tsx
962
- #: src/ui/shared/CollectionsSidebar.tsx
1937
+ #: src/ui/pages/CollectionPage.tsx
1938
+ #: src/ui/shared/collection-management-labels.ts
963
1939
  msgid "Oldest first"
964
1940
  msgstr "Oldest first"
965
1941
 
966
- #. @context: Switch label for setting featured posts as default homepage
967
- #: src/ui/dash/appearance/NavigationContent.tsx
968
- msgid "Open with Featured posts"
969
- msgstr "Open with Featured posts"
1942
+ #. @context: Compose publish settings help text for private visibility
1943
+ #: src/ui/compose/ComposeDialog.tsx
1944
+ msgid "Only visible when signed in."
1945
+ msgstr "Only visible when signed in."
970
1946
 
971
- #. @context: Toast after reordering collections
972
- #. @context: Toast after saving navigation item order
973
- #: src/ui/dash/appearance/NavigationContent.tsx
974
- #: src/ui/shared/CollectionsSidebar.tsx
975
- msgid "Order saved"
976
- msgstr "Order saved"
1947
+ #. @context: Ordered list item in the sample detail article
1948
+ #: src/ui/pages/ThemeSamplePage.tsx
1949
+ msgid "Open a few links and check whether they still feel native to the page."
1950
+ msgstr "Open a few links and check whether they still feel native to the page."
977
1951
 
978
- #. @context: Pagination - current page indicator
979
- #: src/ui/shared/Pagination.tsx
980
- msgid "Page {page}"
981
- msgstr "Page {page}"
1952
+ #. @context: Accessible label for the external-link icon in the post footer
1953
+ #: src/ui/shared/PostFooter.tsx
1954
+ msgid "Open external link"
1955
+ msgstr "Open external link"
1956
+
1957
+ #. @context: Button label to open a raw brand asset in the browser
1958
+ #: src/ui/pages/BrandPage.tsx
1959
+ msgid "Open raw asset"
1960
+ msgstr "Open raw asset"
1961
+
1962
+ #. @context: Button label to open the raw PNG asset in the browser
1963
+ #: src/ui/pages/BrandPage.tsx
1964
+ msgid "Open raw PNG"
1965
+ msgstr "Open raw PNG"
1966
+
1967
+ #. @context: Button label to open the raw SVG asset in the browser
1968
+ #: src/ui/pages/BrandPage.tsx
1969
+ msgid "Open raw SVG"
1970
+ msgstr "Open raw SVG"
1971
+
1972
+ #. @context: Settings item description for the hosted delete-site entry in the account menu
1973
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1974
+ msgid "Open the hosted site controls in {providerLabel} to cancel billing or permanently delete this site."
1975
+ msgstr "Open the hosted site controls in {providerLabel} to cancel billing or permanently delete this site."
1976
+
1977
+ #. @context: Menu action to organize collections
1978
+ #: src/ui/shared/CollectionsManager.tsx
1979
+ msgid "Organize"
1980
+ msgstr "Organize"
1981
+
1982
+ #. @context: Outline badge label on sample page
1983
+ #: src/ui/pages/ThemeSamplePage.tsx
1984
+ msgid "Outline"
1985
+ msgstr "Outline"
1986
+
1987
+ #. @context: Settings item description for color theme
1988
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1989
+ msgid "Palette, surface tone, and overall mood"
1990
+ msgstr "Palette, surface tone, and overall mood"
1991
+
1992
+ #. @context: Theme group description on color theme settings page
1993
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1994
+ msgid "Paper-first palettes with warmer surfaces and a softer, handwritten feel."
1995
+ msgstr "Paper-first palettes with warmer surfaces and a softer, handwritten feel."
982
1996
 
983
1997
  #. @context: Settings item — password settings
984
1998
  #. @context: Setup/signin form field - password
@@ -994,6 +2008,13 @@ msgstr "Password"
994
2008
  msgid "Password changed."
995
2009
  msgstr "Password changed."
996
2010
 
2011
+ #. @context: Error shown when password changes are blocked in demo mode
2012
+ #. @context: Error shown when password reset is blocked in demo mode
2013
+ #: src/routes/auth/reset.tsx
2014
+ #: src/routes/dash/settings.tsx
2015
+ msgid "Password changes are off in demo mode. Sign in with the shared demo credentials."
2016
+ msgstr "Password changes are off in demo mode. Sign in with the shared demo credentials."
2017
+
997
2018
  #. @context: Error toast when new password and confirmation differ
998
2019
  #: src/routes/dash/settings.tsx
999
2020
  msgid "Passwords don't match. Make sure both fields are identical."
@@ -1020,10 +2041,10 @@ msgstr "Paste a URL..."
1020
2041
  msgid "Path"
1021
2042
  msgstr "Path"
1022
2043
 
1023
- #. @context: Link to permanent URL of post
1024
- #: src/ui/shared/PostFooter.tsx
1025
- msgid "Permalink"
1026
- msgstr "Permalink"
2044
+ #. @context: Settings item description for account deletion
2045
+ #: src/ui/dash/settings/AccountMenuContent.tsx
2046
+ msgid "Permanently delete all data and reset the blog"
2047
+ msgstr "Permanently delete all data and reset the blog"
1027
2048
 
1028
2049
  #. @context: Post badge - pinned
1029
2050
  #: src/ui/dash/StatusBadge.tsx
@@ -1031,35 +2052,71 @@ msgid "Pinned"
1031
2052
  msgstr "Pinned"
1032
2053
 
1033
2054
  #. @context: Compose button - publish post
2055
+ #. @context: Custom URL target type badge for a post
1034
2056
  #. @context: Custom URL type option
1035
2057
  #: src/routes/dash/custom-urls.tsx
2058
+ #: src/routes/dash/custom-urls.tsx
1036
2059
  #: src/ui/compose/ComposeDialog.tsx
1037
2060
  msgid "Post"
1038
2061
  msgstr "Post"
1039
2062
 
1040
- #. @context: Compose dropdown option - publish post and mark it as featured
1041
- #: src/ui/compose/ComposeDialog.tsx
1042
- msgid "Post as Featured"
1043
- msgstr "Post as Featured"
1044
-
1045
2063
  #. @context: Compose dropdown option - publish post visible only when logged in
1046
2064
  #: src/ui/compose/ComposeDialog.tsx
1047
2065
  msgid "Post as Private"
1048
2066
  msgstr "Post as Private"
1049
2067
 
1050
- #. @context: Compose dropdown option - publish post with unlisted visibility, hidden from main feed
2068
+ #. @context: Compose publish button for posts hidden from Latest
1051
2069
  #: src/ui/compose/ComposeDialog.tsx
1052
- msgid "Post Unlisted"
1053
- msgstr "Post Unlisted"
2070
+ msgid "Post hidden"
2071
+ msgstr "Post hidden"
2072
+
2073
+ #. @context: Compose publish button for private visibility
2074
+ #: src/ui/compose/ComposeDialog.tsx
2075
+ msgid "Post privately"
2076
+ msgstr "Post privately"
2077
+
2078
+ #. @context: Hover hint for the homepage compose shortcut
2079
+ #: src/ui/compose/ComposePrompt.tsx
2080
+ msgid "Press N to write"
2081
+ msgstr "Press N to write"
2082
+
2083
+ #. @context: Ghost button label on sample page
2084
+ #: src/ui/pages/ThemeSamplePage.tsx
2085
+ msgid "Preview"
2086
+ msgstr "Preview"
1054
2087
 
1055
2088
  #. @context: Pagination button - previous page
1056
2089
  #. @context: Pagination button - previous page
2090
+ #. @context: Pagination previous label on sample page
2091
+ #: src/ui/pages/ThemeSamplePage.tsx
1057
2092
  #: src/ui/shared/Pagination.tsx
1058
2093
  #: src/ui/shared/Pagination.tsx
1059
2094
  msgid "Previous"
1060
2095
  msgstr "Previous"
1061
2096
 
2097
+ #. @context: Token label on sample page
2098
+ #: src/ui/pages/ThemeSamplePage.tsx
2099
+ msgid "Primary"
2100
+ msgstr "Primary"
2101
+
2102
+ #. @context: Table cell in the sample detail article
2103
+ #: src/ui/pages/ThemeSamplePage.tsx
2104
+ msgid "Primary button"
2105
+ msgstr "Primary button"
2106
+
2107
+ #. @context: Description for the default logo asset card
2108
+ #: src/ui/pages/BrandPage.tsx
2109
+ msgid "Primary Jant logo for websites, docs, press coverage, and editorial layouts."
2110
+ msgstr "Primary Jant logo for websites, docs, press coverage, and editorial layouts."
2111
+
2112
+ #. @context: Section title for the logo downloads section
2113
+ #: src/ui/pages/BrandPage.tsx
2114
+ msgid "Primary logo files"
2115
+ msgstr "Primary logo files"
2116
+
1062
2117
  #. @context: Archive visibility filter - private posts
2118
+ #. @context: Compose publish settings visibility option
2119
+ #: src/ui/compose/ComposeDialog.tsx
1063
2120
  #: src/ui/pages/ArchivePage.tsx
1064
2121
  msgid "Private"
1065
2122
  msgstr "Private"
@@ -1070,25 +2127,61 @@ msgid "Processing..."
1070
2127
  msgstr "Processing..."
1071
2128
 
1072
2129
  #. @context: Archive visibility filter - public posts
2130
+ #. @context: Compose publish settings visibility option
2131
+ #: src/ui/compose/ComposeDialog.tsx
1073
2132
  #: src/ui/pages/ArchivePage.tsx
1074
2133
  msgid "Public"
1075
2134
  msgstr "Public"
1076
2135
 
1077
2136
  #. @context: Confirm close action sheet - publish update button for editing published post
2137
+ #. @context: Primary button label on sample page
1078
2138
  #: src/ui/compose/ComposeDialog.tsx
2139
+ #: src/ui/pages/ThemeSamplePage.tsx
1079
2140
  msgid "Publish"
1080
2141
  msgstr "Publish"
1081
2142
 
2143
+ #. @context: Compose publish settings panel title
2144
+ #: src/ui/compose/ComposeDialog.tsx
2145
+ msgid "Publish settings"
2146
+ msgstr "Publish settings"
2147
+
1082
2148
  #. @context: Post status badge - published
1083
2149
  #: src/ui/dash/StatusBadge.tsx
1084
2150
  msgid "Published"
1085
2151
  msgstr "Published"
1086
2152
 
2153
+ #. @context: Tooltip text for the archive tile published timestamp
2154
+ #. @context: Tooltip text for the published timestamp in the post footer
2155
+ #: src/ui/pages/ArchivePage.tsx
2156
+ #: src/ui/shared/PostFooter.tsx
2157
+ msgid "Published on {date} at {time}"
2158
+ msgstr "Published on {date} at {time}"
2159
+
1087
2160
  #. @context: Toast shown after successful deferred publish
1088
2161
  #: src/ui/compose/ComposeDialog.tsx
1089
2162
  msgid "Published!"
1090
2163
  msgstr "Published!"
1091
2164
 
2165
+ #. @context: Search highlight text on sample page
2166
+ #: src/ui/pages/ThemeSamplePage.tsx
2167
+ msgid "quiet design"
2168
+ msgstr "quiet design"
2169
+
2170
+ #. @context: Muted sample label
2171
+ #: src/ui/pages/ThemeSamplePage.tsx
2172
+ msgid "Quiet metadata"
2173
+ msgstr "Quiet metadata"
2174
+
2175
+ #. @context: Theme group heading on color theme settings page
2176
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
2177
+ msgid "Quiet Neutral"
2178
+ msgstr "Quiet Neutral"
2179
+
2180
+ #. @context: Color theme preview card secondary sentence
2181
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
2182
+ msgid "Quiet surfaces let writing lead."
2183
+ msgstr "Quiet surfaces let writing lead."
2184
+
1092
2185
  #. @context: Compose format tab
1093
2186
  #. @context: Post format badge - quote
1094
2187
  #. @context: Post format label - quote
@@ -1098,6 +2191,11 @@ msgstr "Published!"
1098
2191
  msgid "Quote"
1099
2192
  msgstr "Quote"
1100
2193
 
2194
+ #. @context: Bullet item in the sample detail article
2195
+ #: src/ui/pages/ThemeSamplePage.tsx
2196
+ msgid "Quoted or highlighted passages should feel like annotations, not warnings."
2197
+ msgstr "Quoted or highlighted passages should feel like annotations, not warnings."
2198
+
1101
2199
  #. @context: Post format label plural - quotes
1102
2200
  #: src/ui/pages/ArchivePage.tsx
1103
2201
  msgid "Quotes"
@@ -1108,8 +2206,35 @@ msgstr "Quotes"
1108
2206
  msgid "Rate"
1109
2207
  msgstr "Rate"
1110
2208
 
2209
+ #. @context: Ordered list item in the sample detail article
2210
+ #: src/ui/pages/ThemeSamplePage.tsx
2211
+ msgid "Read the page from top to bottom without looking at the swatches."
2212
+ msgstr "Read the page from top to bottom without looking at the swatches."
2213
+
2214
+ #. @context: Inline link label on sample page
2215
+ #: src/ui/pages/ThemeSamplePage.tsx
2216
+ msgid "Read the palette as content first"
2217
+ msgstr "Read the palette as content first"
2218
+
2219
+ #. @context: Color theme preview inline link label
2220
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
2221
+ msgid "Read why"
2222
+ msgstr "Read why"
2223
+
2224
+ #. @context: Collection tag on sample quote post
2225
+ #: src/ui/pages/ThemeSamplePage.tsx
2226
+ msgid "Reading"
2227
+ msgstr "Reading"
2228
+
2229
+ #. @context: Section heading for real post component samples on the theme sample page
2230
+ #: src/ui/pages/ThemeSamplePage.tsx
2231
+ msgid "Real post components"
2232
+ msgstr "Real post components"
2233
+
2234
+ #. @context: Custom URL target type badge for a redirect
1111
2235
  #. @context: Custom URL type option
1112
2236
  #: src/routes/dash/custom-urls.tsx
2237
+ #: src/routes/dash/custom-urls.tsx
1113
2238
  msgid "Redirect"
1114
2239
  msgstr "Redirect"
1115
2240
 
@@ -1120,35 +2245,52 @@ msgstr "Redirect Type"
1120
2245
 
1121
2246
  #. @context: Settings item description for custom URLs
1122
2247
  #: src/ui/dash/settings/SettingsRootContent.tsx
1123
- msgid "Redirects and custom paths"
1124
- msgstr "Redirects and custom paths"
2248
+ msgid "Redirects, vanity paths, and URL control"
2249
+ msgstr "Redirects, vanity paths, and URL control"
2250
+
2251
+ #. @context: Collection tag on sample link post
2252
+ #: src/ui/pages/ThemeSamplePage.tsx
2253
+ msgid "References"
2254
+ msgstr "References"
1125
2255
 
1126
- #. @context: Button to remove icon
1127
- #. @context: Button to remove icon
1128
2256
  #. @context: Button to remove the blog avatar
1129
2257
  #. @context: Remove system item from navigation
1130
- #: src/ui/compose/ComposeDialog.tsx
1131
2258
  #: src/ui/dash/appearance/NavigationContent.tsx
1132
2259
  #: src/ui/dash/settings/AvatarContent.tsx
1133
- #: src/ui/shared/CollectionsSidebar.tsx
1134
2260
  msgid "Remove"
1135
2261
  msgstr "Remove"
1136
2262
 
2263
+ #. @context: Button to remove an uploaded attachment in compose
2264
+ #: src/ui/compose/ComposeDialog.tsx
2265
+ msgid "Remove attachment"
2266
+ msgstr "Remove attachment"
2267
+
1137
2268
  #. @context: Tooltip for divider delete button
1138
- #: src/ui/shared/CollectionsSidebar.tsx
2269
+ #: src/ui/shared/CollectionsManager.tsx
1139
2270
  msgid "Remove Divider"
1140
2271
  msgstr "Remove Divider"
1141
2272
 
1142
- #. @context: Menu action to reorder collections
1143
- #: src/ui/shared/CollectionsSidebar.tsx
1144
- msgid "Reorder"
1145
- msgstr "Reorder"
2273
+ #. @context: Archive tile label for multiple thread replies
2274
+ #: src/ui/pages/ArchivePage.tsx
2275
+ msgid "Replies"
2276
+ msgstr "Replies"
1146
2277
 
2278
+ #. @context: Archive tile label for a single thread reply
1147
2279
  #. @context: Compose button - reply to post
2280
+ #. @context: Reply button label in the post footer
1148
2281
  #: src/ui/compose/ComposeDialog.tsx
2282
+ #: src/ui/pages/ArchivePage.tsx
2283
+ #: src/ui/shared/PostFooter.tsx
1149
2284
  msgid "Reply"
1150
2285
  msgstr "Reply"
1151
2286
 
2287
+ #. @context: Button to restore the automatically generated collection link from the title
2288
+ #. @context: Compose custom slug action that clears the manual slug and falls back to automatic generation
2289
+ #: src/ui/compose/ComposeDialog.tsx
2290
+ #: src/ui/shared/collection-management-labels.ts
2291
+ msgid "Reset link"
2292
+ msgstr "Reset link"
2293
+
1152
2294
  #. @context: Password reset form submit button
1153
2295
  #. @context: Password reset page heading
1154
2296
  #: src/routes/auth/reset.tsx
@@ -1156,6 +2298,17 @@ msgstr "Reply"
1156
2298
  msgid "Reset Password"
1157
2299
  msgstr "Reset Password"
1158
2300
 
2301
+ #. @context: Asset keyword on the public brand asset page
2302
+ #. @context: Title for the reverse logo asset card
2303
+ #. @context: Title for the reverse logo card
2304
+ #. @context: Title for the reverse logo card
2305
+ #: src/ui/pages/BrandPage.tsx
2306
+ #: src/ui/pages/BrandPage.tsx
2307
+ #: src/ui/pages/BrandPage.tsx
2308
+ #: src/ui/pages/BrandPage.tsx
2309
+ msgid "Reverse logo"
2310
+ msgstr "Reverse logo"
2311
+
1159
2312
  #. @context: Button to revoke API token
1160
2313
  #. @context: Button to revoke a session
1161
2314
  #: src/ui/dash/settings/ApiTokensContent.tsx
@@ -1168,10 +2321,10 @@ msgstr "Revoke"
1168
2321
  msgid "Revoke this token? Any scripts using it will stop working."
1169
2322
  msgstr "Revoke this token? Any scripts using it will stop working."
1170
2323
 
1171
- #. @context: Button to save collection
1172
2324
  #. @context: Button to save collection
1173
2325
  #. @context: Button to save settings
1174
2326
  #. @context: Button to save settings changes
2327
+ #. @context: Confirm action sheet - save text attachment changes button
1175
2328
  #. @context: Confirm close action sheet - save draft button
1176
2329
  #. @context: Save nav item changes
1177
2330
  #: src/ui/compose/ComposeDialog.tsx
@@ -1179,7 +2332,7 @@ msgstr "Revoke this token? Any scripts using it will stop working."
1179
2332
  #: src/ui/dash/appearance/NavigationContent.tsx
1180
2333
  #: src/ui/dash/settings/AvatarContent.tsx
1181
2334
  #: src/ui/dash/settings/GeneralContent.tsx
1182
- #: src/ui/shared/CollectionsSidebar.tsx
2335
+ #: src/ui/shared/collection-management-labels.ts
1183
2336
  msgid "Save"
1184
2337
  msgstr "Save"
1185
2338
 
@@ -1198,6 +2351,26 @@ msgstr "Save as Draft"
1198
2351
  msgid "Save CSS"
1199
2352
  msgstr "Save CSS"
1200
2353
 
2354
+ #. @context: Secondary button label on sample page
2355
+ #: src/ui/pages/ThemeSamplePage.tsx
2356
+ msgid "Save draft"
2357
+ msgstr "Save draft"
2358
+
2359
+ #. @context: Confirm action sheet title when closing text attachment editor
2360
+ #: src/ui/compose/ComposeDialog.tsx
2361
+ msgid "Save text attachment?"
2362
+ msgstr "Save text attachment?"
2363
+
2364
+ #. @context: Filled primary button label
2365
+ #: src/ui/pages/ThemeSamplePage.tsx
2366
+ msgid "Save theme"
2367
+ msgstr "Save theme"
2368
+
2369
+ #. @context: Confirm action sheet subtitle when closing text attachment editor
2370
+ #: src/ui/compose/ComposeDialog.tsx
2371
+ msgid "Save these changes to the text attachment, discard them, or keep editing."
2372
+ msgstr "Save these changes to the text attachment, discard them, or keep editing."
2373
+
1201
2374
  #. @context: Confirm close action sheet subtitle
1202
2375
  #: src/ui/compose/ComposeDialog.tsx
1203
2376
  msgid "Save to drafts to edit and post at a later time."
@@ -1208,70 +2381,90 @@ msgstr "Save to drafts to edit and post at a later time."
1208
2381
  msgid "Save to drafts?"
1209
2382
  msgstr "Save to drafts?"
1210
2383
 
1211
- #. @context: Toast after saving a collection
1212
- #: src/ui/shared/CollectionsSidebar.tsx
1213
- msgid "Saved"
1214
- msgstr "Saved"
1215
-
1216
2384
  #. @context: Search icon link in browse nav
1217
2385
  #. @context: Search page title
1218
2386
  #. @context: Search submit button
2387
+ #. @context: Settings section heading for search engine indexing settings
2388
+ #: src/ui/dash/settings/GeneralContent.tsx
1219
2389
  #: src/ui/layouts/SiteLayout.tsx
1220
2390
  #: src/ui/pages/SearchPage.tsx
1221
2391
  #: src/ui/pages/SearchPage.tsx
1222
2392
  msgid "Search"
1223
2393
  msgstr "Search"
1224
2394
 
1225
- #. @context: Emoji picker search placeholder
1226
- #. @context: Emoji picker search placeholder
1227
- #: src/ui/compose/ComposeDialog.tsx
1228
- #: src/ui/shared/CollectionsSidebar.tsx
1229
- msgid "Search emojis..."
1230
- msgstr "Search emojis..."
1231
-
1232
- #. @context: Icon picker search placeholder
1233
- #. @context: Icon picker search placeholder
1234
- #: src/ui/compose/ComposeDialog.tsx
1235
- #: src/ui/shared/CollectionsSidebar.tsx
1236
- msgid "Search icons..."
1237
- msgstr "Search icons..."
1238
-
1239
2395
  #. @context: Search input placeholder
1240
2396
  #: src/ui/pages/SearchPage.tsx
1241
2397
  msgid "Search posts..."
1242
2398
  msgstr "Search posts..."
1243
2399
 
2400
+ #. @context: Toast after saving search settings
2401
+ #. @context: Toast after saving search settings
2402
+ #: src/routes/dash/settings.tsx
2403
+ #: src/routes/dash/settings.tsx
2404
+ msgid "Search settings updated."
2405
+ msgstr "Search settings updated."
2406
+
2407
+ #. @context: Search snippet label on sample page
2408
+ #: src/ui/pages/ThemeSamplePage.tsx
2409
+ msgid "Search snippet"
2410
+ msgstr "Search snippet"
2411
+
1244
2412
  #. @context: Compose collection combobox search placeholder
1245
2413
  #: src/ui/compose/ComposeDialog.tsx
1246
2414
  msgid "Search..."
1247
2415
  msgstr "Search..."
1248
2416
 
1249
- #. @context: Settings section heading for SEO
1250
- #: src/ui/dash/settings/GeneralContent.tsx
1251
- msgid "SEO"
1252
- msgstr "SEO"
2417
+ #. @context: Settings group label for account security settings
2418
+ #: src/ui/dash/settings/AccountMenuContent.tsx
2419
+ msgid "Security"
2420
+ msgstr "Security"
1253
2421
 
1254
- #. @context: Toast after saving SEO settings
1255
- #. @context: Toast after saving SEO settings
2422
+ #. @context: Error toast when CSRF token is invalid or expired
1256
2423
  #: src/routes/dash/settings.tsx
2424
+ msgid "Security token expired. Refresh the page and try again."
2425
+ msgstr "Security token expired. Refresh the page and try again."
2426
+
2427
+ #. @context: Error toast when CSRF token is missing from delete request
1257
2428
  #: src/routes/dash/settings.tsx
1258
- msgid "SEO settings updated."
1259
- msgstr "SEO settings updated."
2429
+ msgid "Security token missing. Refresh the page and try again."
2430
+ msgstr "Security token missing. Refresh the page and try again."
2431
+
2432
+ #. @context: Settings item description for sessions
2433
+ #: src/ui/dash/settings/AccountMenuContent.tsx
2434
+ msgid "See where you're signed in and revoke old sessions"
2435
+ msgstr "See where you're signed in and revoke old sessions"
2436
+
2437
+ #. @context: Error shown when session management is blocked in demo mode
2438
+ #: src/routes/dash/settings.tsx
2439
+ msgid "Session management is off in demo mode. Use the shared demo session instead."
2440
+ msgstr "Session management is off in demo mode. Use the shared demo session instead."
1260
2441
 
1261
2442
  #. @context: Settings item — session management
1262
2443
  #: src/ui/dash/settings/AccountMenuContent.tsx
1263
2444
  msgid "Sessions"
1264
2445
  msgstr "Sessions"
1265
2446
 
1266
- #. @context: Settings item description for account
2447
+ #. @context: Settings item description for account settings on the settings home page
1267
2448
  #: src/ui/dash/settings/SettingsRootContent.tsx
1268
2449
  msgid "Sessions, password, export"
1269
2450
  msgstr "Sessions, password, export"
1270
2451
 
1271
- #. @context: Toast after saving general settings
1272
- #: src/routes/dash/settings.tsx
1273
- msgid "Settings updated."
1274
- msgstr "Settings updated."
2452
+ #. @context: Built-in navigation label for settings
2453
+ #. @context: Page title for the settings home page
2454
+ #: src/ui/dash/settings/SettingsRootContent.tsx
2455
+ #: src/ui/shared/navigation-labels.ts
2456
+ msgid "Settings"
2457
+ msgstr "Settings"
2458
+
2459
+ #. @context: Usage label for the social preview image asset card
2460
+ #: src/ui/pages/BrandPage.tsx
2461
+ msgid "Shared links"
2462
+ msgstr "Shared links"
2463
+
2464
+ #. @context: Checkbox for showing the optional Jant credit link on the home page
2465
+ #: src/ui/dash/settings/GeneralContent.tsx
2466
+ msgid "Show \"Build with Jant\" at the bottom of the home page"
2467
+ msgstr "Show \"Build with Jant\" at the bottom of the home page"
1275
2468
 
1276
2469
  #. @context: Button to collapse expanded thread context
1277
2470
  #. @context: Collapse reply context
@@ -1287,8 +2480,20 @@ msgstr "Show less"
1287
2480
  msgid "Show more"
1288
2481
  msgstr "Show more"
1289
2482
 
2483
+ #. @context: Description for the settings system navigation toggle
2484
+ #: src/ui/shared/navigation-labels.ts
2485
+ msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
2486
+ msgstr "Shows 'Settings' when logged in, 'Sign in' when logged out"
2487
+
2488
+ #. @context: Built-in navigation label shown when auth is required
2489
+ #: src/ui/shared/navigation-labels.ts
2490
+ msgid "Sign in"
2491
+ msgstr "Sign in"
2492
+
1290
2493
  #. @context: Sign in form submit button
1291
2494
  #. @context: Sign in page heading
2495
+ #. @context: Sign in page heading
2496
+ #: src/routes/auth/signin.tsx
1292
2497
  #: src/routes/auth/signin.tsx
1293
2498
  #: src/routes/auth/signin.tsx
1294
2499
  msgid "Sign In"
@@ -1306,10 +2511,17 @@ msgid "Signed in {0}"
1306
2511
  msgstr "Signed in {0}"
1307
2512
 
1308
2513
  #. @context: Settings group label for site settings
2514
+ #. @context: Settings subsection heading for basic site fields
2515
+ #: src/ui/dash/settings/GeneralContent.tsx
1309
2516
  #: src/ui/dash/settings/SettingsRootContent.tsx
1310
2517
  msgid "Site"
1311
2518
  msgstr "Site"
1312
2519
 
2520
+ #. @context: Token label on sample page
2521
+ #: src/ui/pages/ThemeSamplePage.tsx
2522
+ msgid "Site accent"
2523
+ msgstr "Site accent"
2524
+
1313
2525
  #. @context: Settings section heading for site footer
1314
2526
  #: src/ui/dash/settings/GeneralContent.tsx
1315
2527
  msgid "Site Footer"
@@ -1322,12 +2534,30 @@ msgstr "Site Footer"
1322
2534
  msgid "Site Name"
1323
2535
  msgstr "Site Name"
1324
2536
 
1325
- #. @context: Collection form field
1326
- #. @context: Collection form field
1327
- #: src/ui/compose/ComposeDialog.tsx
1328
- #: src/ui/shared/CollectionsSidebar.tsx
1329
- msgid "Slug"
1330
- msgstr "Slug"
2537
+ #. @context: Toast after saving site settings
2538
+ #: src/routes/dash/settings.tsx
2539
+ msgid "Site settings updated."
2540
+ msgstr "Site settings updated."
2541
+
2542
+ #. @context: Description for the favicon asset card
2543
+ #: src/ui/pages/BrandPage.tsx
2544
+ msgid "Small browser icon used in tabs and bookmarks."
2545
+ msgstr "Small browser icon used in tabs and bookmarks."
2546
+
2547
+ #. @context: Asset keyword on the public brand asset page
2548
+ #: src/ui/pages/BrandPage.tsx
2549
+ msgid "Social preview"
2550
+ msgstr "Social preview"
2551
+
2552
+ #. @context: Title for the social preview image asset card
2553
+ #: src/ui/pages/BrandPage.tsx
2554
+ msgid "Social preview image"
2555
+ msgstr "Social preview image"
2556
+
2557
+ #. @context: Color theme preview card body sentence
2558
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
2559
+ msgid "Soft color should still carry a clear reading rhythm."
2560
+ msgstr "Soft color should still carry a clear reading rhythm."
1331
2561
 
1332
2562
  #. @context: Toast when uploads fail and post is auto-saved as draft
1333
2563
  #: src/ui/compose/ComposeDialog.tsx
@@ -1345,10 +2575,13 @@ msgstr "Some uploads failed. Saved as draft."
1345
2575
  msgid "Something doesn't look right. Check the form and try again."
1346
2576
  msgstr "Something doesn't look right. Check the form and try again."
1347
2577
 
2578
+ #. @context: Sort menu label on collection detail page
2579
+ #: src/ui/pages/CollectionPage.tsx
2580
+ msgid "Sort"
2581
+ msgstr "Sort"
2582
+
1348
2583
  #. @context: Collection form field
1349
- #. @context: Collection form field
1350
- #: src/ui/compose/ComposeDialog.tsx
1351
- #: src/ui/shared/CollectionsSidebar.tsx
2584
+ #: src/ui/shared/collection-management-labels.ts
1352
2585
  msgid "Sort Order"
1353
2586
  msgstr "Sort Order"
1354
2587
 
@@ -1357,11 +2590,66 @@ msgstr "Sort Order"
1357
2590
  msgid "Source link (optional)"
1358
2591
  msgstr "Source link (optional)"
1359
2592
 
2593
+ #. @context: Section title for the icon and preview downloads section
2594
+ #: src/ui/pages/BrandPage.tsx
2595
+ msgid "Square assets for avatars, apps, browsers, and shared links"
2596
+ msgstr "Square assets for avatars, apps, browsers, and shared links"
2597
+
2598
+ #. @context: Asset keyword on the public brand asset page
2599
+ #: src/ui/pages/BrandPage.tsx
2600
+ msgid "Square logo"
2601
+ msgstr "Square logo"
2602
+
2603
+ #. @context: Title for the square logo PNG asset card
2604
+ #: src/ui/pages/BrandPage.tsx
2605
+ msgid "Square logo PNG"
2606
+ msgstr "Square logo PNG"
2607
+
2608
+ #. @context: Title for the square tile asset card
2609
+ #: src/ui/pages/BrandPage.tsx
2610
+ msgid "Square tile"
2611
+ msgstr "Square tile"
2612
+
2613
+ #. @context: Heading for the quick-start panel on the brand asset page
2614
+ #: src/ui/pages/BrandPage.tsx
2615
+ msgid "Start here"
2616
+ msgstr "Start here"
2617
+
2618
+ #. @context: Table cell in the sample detail article
2619
+ #: src/ui/pages/ThemeSamplePage.tsx
2620
+ msgid "Stay sturdy and readable."
2621
+ msgstr "Stay sturdy and readable."
2622
+
2623
+ #. @context: Compose custom slug helper label for the suggested slug
2624
+ #: src/ui/compose/ComposeDialog.tsx
2625
+ msgid "Suggested link"
2626
+ msgstr "Suggested link"
2627
+
2628
+ #. @context: Textarea label on sample page
2629
+ #: src/ui/pages/ThemeSamplePage.tsx
2630
+ msgid "Summary"
2631
+ msgstr "Summary"
2632
+
1360
2633
  #. @context: Attached text panel hint
1361
2634
  #: src/ui/compose/ComposeDialog.tsx
1362
2635
  msgid "Supplementary content attached to your post"
1363
2636
  msgstr "Supplementary content attached to your post"
1364
2637
 
2638
+ #. @context: Table header in the sample detail article
2639
+ #: src/ui/pages/ThemeSamplePage.tsx
2640
+ msgid "Surface"
2641
+ msgstr "Surface"
2642
+
2643
+ #. @context: Helper text for theme picker pills on the sample page
2644
+ #: src/ui/pages/ThemeSamplePage.tsx
2645
+ msgid "Switch the palette and mode without opening settings or changing the active site theme."
2646
+ msgstr "Switch the palette and mode without opening settings or changing the active site theme."
2647
+
2648
+ #. @context: Guidance body on the brand asset page
2649
+ #: src/ui/pages/BrandPage.tsx
2650
+ msgid "Switch to the white logo when the standard green version would lose contrast."
2651
+ msgstr "Switch to the white logo when the standard green version would lose contrast."
2652
+
1365
2653
  #. @context: Nav item type badge
1366
2654
  #: src/ui/dash/appearance/NavigationContent.tsx
1367
2655
  msgid "system"
@@ -1406,71 +2694,208 @@ msgstr "That font theme isn't available. Pick another one."
1406
2694
  msgid "That theme isn't available. Pick another one."
1407
2695
  msgstr "That theme isn't available. Pick another one."
1408
2696
 
2697
+ #. @context: Blockquote in the sample detail article
2698
+ #: src/ui/pages/ThemeSamplePage.tsx
2699
+ msgid "The best default color is the one you notice only after reading for a while."
2700
+ msgstr "The best default color is the one you notice only after reading for a while."
2701
+
2702
+ #. @context: Intro copy for the quick-start panel on the brand asset page
2703
+ #: src/ui/pages/BrandPage.tsx
2704
+ msgid "The brand pack includes SVG logos, a transparent square PNG, rounded, square, and circle tiles, plus favicon, Apple touch icon, and the default social preview image."
2705
+ msgstr "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."
2706
+
1409
2707
  #. @context: Custom URL path help text
1410
2708
  #: src/routes/dash/custom-urls.tsx
1411
2709
  msgid "The custom URL path (without leading slash)"
1412
2710
  msgstr "The custom URL path (without leading slash)"
1413
2711
 
1414
- #. @context: Font theme preview sentence for body text
1415
- #. @context: Font theme preview sentence for headings
1416
- #: src/ui/dash/appearance/FontThemeContent.tsx
1417
- #: src/ui/dash/appearance/FontThemeContent.tsx
1418
- msgid "The quick brown fox jumps over the lazy dog."
1419
- msgstr "The quick brown fox jumps over the lazy dog."
2712
+ #. @context: Plain-text body fallback for the sample note post
2713
+ #: src/ui/pages/ThemeSamplePage.tsx
2714
+ msgid "The default accent should feel written, not branded."
2715
+ msgstr "The default accent should feel written, not branded."
2716
+
2717
+ #. @context: Sample note summary prefix on the theme sample page
2718
+ #: src/ui/pages/ThemeSamplePage.tsx
2719
+ msgid "The default accent should support reading first. Start by comparing it against the"
2720
+ msgstr "The default accent should support reading first. Start by comparing it against the"
2721
+
2722
+ #. @context: Sample note post body prefix on the theme sample page
2723
+ #: src/ui/pages/ThemeSamplePage.tsx
2724
+ msgid "The default accent works best when it reads like a fountain-pen underline. Compare it against the"
2725
+ msgstr "The default accent works best when it reads like a fountain-pen underline. Compare it against the"
2726
+
2727
+ #. @context: Caption for the sample detail article image
2728
+ #: src/ui/pages/ThemeSamplePage.tsx
2729
+ msgid "The image should sit quietly inside the article instead of feeling like a card preview."
2730
+ msgstr "The image should sit quietly inside the article instead of feeling like a card preview."
1420
2731
 
1421
2732
  #. @context: Description for max visible nav links, explains overflow behavior
1422
2733
  #: src/ui/dash/appearance/NavigationContent.tsx
1423
2734
  msgid "The rest will be tucked into a ··· menu"
1424
2735
  msgstr "The rest will be tucked into a ··· menu"
1425
2736
 
2737
+ #. @context: Blockquote on the theme sample page
2738
+ #: src/ui/pages/ThemeSamplePage.tsx
2739
+ msgid "The right accent should disappear into the writing until you need it."
2740
+ msgstr "The right accent should disappear into the writing until you need it."
2741
+
1426
2742
  #. @context: Custom URL target slug help text
1427
2743
  #: src/routes/dash/custom-urls.tsx
1428
2744
  msgid "The slug of the target post or collection"
1429
2745
  msgstr "The slug of the target post or collection"
1430
2746
 
2747
+ #. @context: Section heading for theme picker pills
2748
+ #: src/ui/pages/ThemeSamplePage.tsx
2749
+ msgid "Theme"
2750
+ msgstr "Theme"
2751
+
2752
+ #. @context: Browser page title for the public theme sample page
2753
+ #. @context: Eyebrow on the public theme sample page
2754
+ #: src/routes/pages/theme-sample.tsx
2755
+ #: src/ui/pages/ThemeSamplePage.tsx
2756
+ msgid "Theme sample"
2757
+ msgstr "Theme sample"
2758
+
2759
+ #. @context: Fallback theme group description on color theme page
2760
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
2761
+ msgid "Themes that have not been assigned to a named group yet."
2762
+ msgstr "Themes that have not been assigned to a named group yet."
2763
+
1431
2764
  #. @context: Link to theming documentation on Custom CSS page
1432
2765
  #: src/ui/dash/appearance/AdvancedContent.tsx
1433
2766
  msgid "Theming guide"
1434
2767
  msgstr "Theming guide"
1435
2768
 
2769
+ #. @context: Helper text for the real post component section on the theme sample page
2770
+ #: src/ui/pages/ThemeSamplePage.tsx
2771
+ msgid "These are actual feed components with real footers, summaries, and inline links. Use this section to judge whether the theme still feels calm once it is applied to realistic content."
2772
+ msgstr "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."
2773
+
1436
2774
  #. @context: Description for session management
1437
2775
  #: src/ui/dash/settings/SessionsContent.tsx
1438
2776
  msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
1439
2777
  msgstr "These devices are currently signed in to your account. Revoke any session you don't recognize."
1440
2778
 
2779
+ #. @context: Opening paragraph on the sample detail article
2780
+ #: src/ui/pages/ThemeSamplePage.tsx
2781
+ msgid "This article is here to answer a specific question: does the default accent still feel calm once it has to carry a full reading experience?"
2782
+ msgstr "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?"
2783
+
1441
2784
  #. @context: Empty state message
1442
2785
  #: src/ui/pages/CollectionPage.tsx
1443
2786
  msgid "This collection is empty. Add posts from the editor."
1444
2787
  msgstr "This collection is empty. Add posts from the editor."
1445
2788
 
2789
+ #. @context: Help text for choosing whether /feed points to latest or featured posts
2790
+ #: src/ui/dash/settings/GeneralContent.tsx
2791
+ msgid "This controls what /feed returns."
2792
+ msgstr "This controls what /feed returns."
2793
+
2794
+ #. @context: Notice shown on hosted account settings explaining that password and hosted account controls live in the connected hosted auth provider
2795
+ #: src/ui/dash/settings/AccountMenuContent.tsx
2796
+ msgid "This hosted site signs in through {providerLabel}. Manage password and hosted access there."
2797
+ msgstr "This hosted site signs in through {providerLabel}. Manage password and hosted access there."
2798
+
2799
+ #. @context: Collection link help text
2800
+ #: src/ui/shared/collection-management-labels.ts
2801
+ msgid "This is the last part of the collection link."
2802
+ msgstr "This is the last part of the collection link."
2803
+
1446
2804
  #. @context: Help text for avatar upload
1447
2805
  #: src/ui/dash/settings/AvatarContent.tsx
1448
- msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
1449
- msgstr "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
2806
+ msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels."
2807
+ msgstr "This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels."
2808
+
2809
+ #. @context: Sample quote commentary prefix on the theme sample page
2810
+ #: src/ui/pages/ThemeSamplePage.tsx
2811
+ msgid "This is useful as a color check because it puts the accent next to quotation styling, metadata, and a quieter explanatory paragraph. Compare it back to the"
2812
+ msgstr "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"
1450
2813
 
1451
2814
  #. @context: Password reset error heading
1452
2815
  #: src/routes/auth/reset.tsx
1453
2816
  msgid "This Link Has Expired"
1454
2817
  msgstr "This Link Has Expired"
1455
2818
 
2819
+ #. @context: Compose custom slug validation error when the entered slug is already taken
2820
+ #: src/ui/compose/ComposeDialog.tsx
2821
+ msgid "This link is already in use. Choose something else."
2822
+ msgstr "This link is already in use. Choose something else."
2823
+
2824
+ #. @context: Collection slug validation error for reserved paths
2825
+ #. @context: Compose custom slug validation error for reserved paths
2826
+ #: src/ui/compose/ComposeDialog.tsx
2827
+ #: src/ui/shared/collection-management-labels.ts
2828
+ msgid "This link is reserved. Choose something else."
2829
+ msgstr "This link is reserved. Choose something else."
2830
+
2831
+ #. @context: Sample link post body prefix on the theme sample page
2832
+ #: src/ui/pages/ThemeSamplePage.tsx
2833
+ msgid "This reference is useful because it treats links and citations as part of the reading rhythm. Keep that in mind while tuning the"
2834
+ msgstr "This reference is useful because it treats links and citations as part of the reading rhythm. Keep that in mind while tuning the"
2835
+
1456
2836
  #. @context: Password reset error description
1457
2837
  #: src/routes/auth/reset.tsx
1458
2838
  msgid "This reset link is no longer valid. Request a new one to continue."
1459
2839
  msgstr "This reset link is no longer valid. Request a new one to continue."
1460
2840
 
2841
+ #. @context: Error shown when a hosted upload would exceed the shared account media limit
2842
+ #. @context: Error shown when a hosted upload would exceed the shared account media limit
2843
+ #: src/routes/api/upload-multipart.ts
2844
+ #: src/routes/api/upload.ts
2845
+ msgid "This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue."
2846
+ msgstr "This upload would exceed your shared hosted media limit. Remove files or upgrade storage to continue."
2847
+
2848
+ #. @context: Helper text for the detail article sample on the theme sample page
2849
+ #: src/ui/pages/ThemeSamplePage.tsx
2850
+ msgid "This uses the real single-post detail rendering with a longer article, inline image, tables, lists, quotes, and code. The content column stays at the same width as the live site."
2851
+ msgstr "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."
2852
+
2853
+ #. @context: Warning text on account deletion page
2854
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
2855
+ msgid "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2856
+ msgstr "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2857
+
2858
+ #. @context: Archive month header count unit for a single thread
2859
+ #. @context: Archive page summary unit for a single matching thread
2860
+ #. @context: Singular thread count label on collection detail page
2861
+ #: src/ui/pages/ArchivePage.tsx
2862
+ #: src/ui/pages/ArchivePage.tsx
2863
+ #: src/ui/pages/CollectionPage.tsx
2864
+ msgid "thread"
2865
+ msgstr "thread"
2866
+
2867
+ #. @context: Table cell in the sample detail article
2868
+ #: src/ui/pages/ThemeSamplePage.tsx
2869
+ msgid "Thread accent"
2870
+ msgstr "Thread accent"
2871
+
2872
+ #. @context: Thread accents section heading on sample page
2873
+ #: src/ui/pages/ThemeSamplePage.tsx
2874
+ msgid "Thread accents"
2875
+ msgstr "Thread accents"
2876
+
2877
+ #. @context: Archive month header count unit for multiple threads
2878
+ #. @context: Archive page summary unit for multiple matching threads
2879
+ #. @context: Plural thread count label on collection detail page
2880
+ #: src/ui/pages/ArchivePage.tsx
2881
+ #: src/ui/pages/ArchivePage.tsx
2882
+ #: src/ui/pages/CollectionPage.tsx
2883
+ msgid "threads"
2884
+ msgstr "threads"
2885
+
1461
2886
  #. @context: Settings form field
1462
2887
  #: src/ui/dash/settings/GeneralContent.tsx
1463
2888
  msgid "Time Zone"
1464
2889
  msgstr "Time Zone"
1465
2890
 
1466
- #. @context: Collection form field
1467
2891
  #. @context: Collection form field
1468
2892
  #. @context: Compose note title placeholder
1469
2893
  #. @context: Compose toolbar - title tooltip
2894
+ #. @context: Input label on sample page
1470
2895
  #: src/ui/compose/ComposeDialog.tsx
1471
2896
  #: src/ui/compose/ComposeDialog.tsx
1472
- #: src/ui/compose/ComposeDialog.tsx
1473
- #: src/ui/shared/CollectionsSidebar.tsx
2897
+ #: src/ui/pages/ThemeSamplePage.tsx
2898
+ #: src/ui/shared/collection-management-labels.ts
1474
2899
  msgid "Title"
1475
2900
  msgstr "Title"
1476
2901
 
@@ -1481,6 +2906,11 @@ msgstr "Title"
1481
2906
  msgid "Titled"
1482
2907
  msgstr "Titled"
1483
2908
 
2909
+ #. @context: Sample quote commentary suffix on the theme sample page
2910
+ #: src/ui/pages/ThemeSamplePage.tsx
2911
+ msgid "to make sure both still feel like they belong to the same product."
2912
+ msgstr "to make sure both still feel like they belong to the same product."
2913
+
1484
2914
  #. @context: Description for system nav toggles
1485
2915
  #: src/ui/dash/appearance/NavigationContent.tsx
1486
2916
  msgid "Toggle built-in navigation items. Enabled items appear in your navigation alongside links."
@@ -1501,11 +2931,31 @@ msgstr "Token name"
1501
2931
  msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
1502
2932
  msgstr "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
1503
2933
 
2934
+ #. @context: Usage label for the square logo PNG asset card
2935
+ #: src/ui/pages/BrandPage.tsx
2936
+ msgid "Transparent square"
2937
+ msgstr "Transparent square"
2938
+
2939
+ #. @context: Title on the public theme sample page
2940
+ #: src/ui/pages/ThemeSamplePage.tsx
2941
+ msgid "Tune color in a real reading context"
2942
+ msgstr "Tune color in a real reading context"
2943
+
2944
+ #. @context: Intro text on the settings home page below the title
2945
+ #: src/ui/dash/settings/SettingsRootContent.tsx
2946
+ msgid "Tune how your site looks, reads, and runs."
2947
+ msgstr "Tune how your site looks, reads, and runs."
2948
+
1504
2949
  #. @context: Custom URL form field
1505
2950
  #: src/routes/dash/custom-urls.tsx
1506
2951
  msgid "Type"
1507
2952
  msgstr "Type"
1508
2953
 
2954
+ #. @context: Instruction to type confirmation phrase before deletion
2955
+ #: src/ui/dash/settings/DeleteAccountContent.tsx
2956
+ msgid "Type the following phrase to confirm:"
2957
+ msgstr "Type the following phrase to confirm:"
2958
+
1509
2959
  #. @context: Compose quote text placeholder
1510
2960
  #: src/ui/compose/ComposeDialog.tsx
1511
2961
  msgid "Type the quote..."
@@ -1513,21 +2963,14 @@ msgstr "Type the quote..."
1513
2963
 
1514
2964
  #. @context: Settings item description for font theme
1515
2965
  #: src/ui/dash/settings/SettingsRootContent.tsx
1516
- msgid "Typography"
1517
- msgstr "Typography"
2966
+ msgid "Typography choices and reading texture"
2967
+ msgstr "Typography choices and reading texture"
1518
2968
 
1519
2969
  #. @context: Fallback label when session device can't be identified
1520
2970
  #: src/ui/dash/settings/SessionsContent.tsx
1521
2971
  msgid "Unknown device"
1522
2972
  msgstr "Unknown device"
1523
2973
 
1524
- #. @context: Archive visibility filter - unlisted posts
1525
- #. @context: Post badge - unlisted
1526
- #: src/ui/dash/StatusBadge.tsx
1527
- #: src/ui/pages/ArchivePage.tsx
1528
- msgid "Unlisted"
1529
- msgstr "Unlisted"
1530
-
1531
2974
  #. @context: Archive filter - notes without a title
1532
2975
  #. @context: Archive filter - notes without a title
1533
2976
  #: src/ui/pages/ArchivePage.tsx
@@ -1535,6 +2978,11 @@ msgstr "Unlisted"
1535
2978
  msgid "Untitled"
1536
2979
  msgstr "Untitled"
1537
2980
 
2981
+ #. @context: Settings item description for password change
2982
+ #: src/ui/dash/settings/AccountMenuContent.tsx
2983
+ msgid "Update the password you use to sign in"
2984
+ msgstr "Update the password you use to sign in"
2985
+
1538
2986
  #. @context: Button to upload avatar image
1539
2987
  #: src/ui/dash/settings/AvatarContent.tsx
1540
2988
  msgid "Upload Avatar"
@@ -1564,18 +3012,68 @@ msgstr "Uploading..."
1564
3012
  msgid "URL"
1565
3013
  msgstr "URL"
1566
3014
 
1567
- #. @context: Collection path help text
1568
- #. @context: Collection path help text
1569
- #: src/ui/compose/ComposeDialog.tsx
1570
- #: src/ui/shared/CollectionsSidebar.tsx
1571
- msgid "URL-safe identifier (lowercase, numbers, hyphens). For CJK titles, slug will be auto-generated on the server."
1572
- msgstr "URL-safe identifier (lowercase, numbers, hyphens). For CJK titles, slug will be auto-generated on the server."
1573
-
1574
3015
  #. @context: Heading for API token usage examples
1575
3016
  #: src/ui/dash/settings/ApiTokensContent.tsx
1576
3017
  msgid "Usage"
1577
3018
  msgstr "Usage"
1578
3019
 
3020
+ #. @context: Switch label for setting featured posts as default homepage
3021
+ #: src/ui/dash/appearance/NavigationContent.tsx
3022
+ msgid "Use Featured as the home feed"
3023
+ msgstr "Use Featured as the home feed"
3024
+
3025
+ #. @context: Collection slug validation error for invalid characters
3026
+ #. @context: Compose custom slug validation error for invalid characters
3027
+ #: src/ui/compose/ComposeDialog.tsx
3028
+ #: src/ui/shared/collection-management-labels.ts
3029
+ msgid "Use lowercase letters, numbers, and hyphens only."
3030
+ msgstr "Use lowercase letters, numbers, and hyphens only."
3031
+
3032
+ #. @context: Guidance title on the brand asset page
3033
+ #: src/ui/pages/BrandPage.tsx
3034
+ msgid "Use the logo on light backgrounds."
3035
+ msgstr "Use the logo on light backgrounds."
3036
+
3037
+ #. @context: Guidance title on the brand asset page
3038
+ #: src/ui/pages/BrandPage.tsx
3039
+ msgid "Use the reverse logo on dark backgrounds."
3040
+ msgstr "Use the reverse logo on dark backgrounds."
3041
+
3042
+ #. @context: Body copy for the icon and preview downloads section
3043
+ #: src/ui/pages/BrandPage.tsx
3044
+ msgid "Use these when you need a transparent square logo, a shaped tile with a built-in background, a browser icon, or a default preview image."
3045
+ msgstr "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."
3046
+
3047
+ #. @context: Help text for the explicit latest and featured feed URLs
3048
+ #: src/ui/dash/settings/GeneralContent.tsx
3049
+ msgid "Use these when you want a feed URL that never changes."
3050
+ msgstr "Use these when you want a feed URL that never changes."
3051
+
3052
+ #. @context: Description for the default logo card
3053
+ #: src/ui/pages/BrandPage.tsx
3054
+ msgid "Use this for websites, docs, articles, and other light or neutral surfaces."
3055
+ msgstr "Use this for websites, docs, articles, and other light or neutral surfaces."
3056
+
3057
+ #. @context: Description for the reverse logo card
3058
+ #: src/ui/pages/BrandPage.tsx
3059
+ msgid "Use this on dark backgrounds, image-backed surfaces, and any placement where the green logo would lose contrast."
3060
+ msgstr "Use this on dark backgrounds, image-backed surfaces, and any placement where the green logo would lose contrast."
3061
+
3062
+ #. @context: Introductory description on the public theme sample page
3063
+ #: src/ui/pages/ThemeSamplePage.tsx
3064
+ msgid "Use this page to judge buttons, links, cards, forms, thread accents, and quiet surfaces before changing a theme globally."
3065
+ msgstr "Use this page to judge buttons, links, cards, forms, thread accents, and quiet surfaces before changing a theme globally."
3066
+
3067
+ #. @context: Description for choosing featured posts as the main RSS feed
3068
+ #: src/ui/dash/settings/GeneralContent.tsx
3069
+ msgid "Uses featured posts for /feed."
3070
+ msgstr "Uses featured posts for /feed."
3071
+
3072
+ #. @context: Description for choosing the latest posts as the main RSS feed
3073
+ #: src/ui/dash/settings/GeneralContent.tsx
3074
+ msgid "Uses the latest public posts for /feed."
3075
+ msgstr "Uses the latest public posts for /feed."
3076
+
1579
3077
  #. @context: Archive media filter - video
1580
3078
  #: src/ui/pages/ArchivePage.tsx
1581
3079
  msgid "Video"
@@ -1588,16 +3086,41 @@ msgstr "Video"
1588
3086
  msgid "View"
1589
3087
  msgstr "View"
1590
3088
 
3089
+ #. @context: Thread link label on sample page
3090
+ #: src/ui/pages/ThemeSamplePage.tsx
3091
+ msgid "View earlier notes in this thread"
3092
+ msgstr "View earlier notes in this thread"
3093
+
3094
+ #. @context: Compose publish settings section label
3095
+ #: src/ui/compose/ComposeDialog.tsx
3096
+ msgid "Visibility"
3097
+ msgstr "Visibility"
3098
+
1591
3099
  #. @context: Prefix before Custom CSS link on color theme page
1592
3100
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1593
3101
  msgid "Want more control?"
1594
3102
  msgstr "Want more control?"
1595
3103
 
3104
+ #. @context: Theme group heading on color theme settings page
3105
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
3106
+ msgid "Warm Editorial"
3107
+ msgstr "Warm Editorial"
3108
+
1596
3109
  #. @context: Setup page welcome heading
1597
3110
  #: src/routes/auth/setup.tsx
1598
3111
  msgid "Welcome to Jant"
1599
3112
  msgstr "Welcome to Jant"
1600
3113
 
3114
+ #. @context: Table header in the sample detail article
3115
+ #: src/ui/pages/ThemeSamplePage.tsx
3116
+ msgid "What the accent should do"
3117
+ msgstr "What the accent should do"
3118
+
3119
+ #. @context: Section heading in the sample detail article
3120
+ #: src/ui/pages/ThemeSamplePage.tsx
3121
+ msgid "What to look for while tuning it"
3122
+ msgstr "What to look for while tuning it"
3123
+
1601
3124
  #. @context: Compose prompt placeholder text
1602
3125
  #: src/ui/compose/ComposePrompt.tsx
1603
3126
  msgid "What's on your mind?"
@@ -1609,16 +3132,49 @@ msgid "What's on your mind..."
1609
3132
  msgstr "What's on your mind..."
1610
3133
 
1611
3134
  #. @context: Collection description placeholder
1612
- #. @context: Collection description placeholder
1613
- #: src/ui/compose/ComposeDialog.tsx
1614
- #: src/ui/shared/CollectionsSidebar.tsx
3135
+ #: src/ui/shared/collection-management-labels.ts
1615
3136
  msgid "What's this collection about?"
1616
3137
  msgstr "What's this collection about?"
1617
3138
 
1618
3139
  #. @context: Description for featured default toggle, explains what happens when off
1619
3140
  #: src/ui/dash/appearance/NavigationContent.tsx
1620
- msgid "When off, visitors see your latest posts first"
1621
- msgstr "When off, visitors see your latest posts first"
3141
+ msgid "When off, the homepage opens with your latest posts."
3142
+ msgstr "When off, the homepage opens with your latest posts."
3143
+
3144
+ #. @context: Textarea value on sample page
3145
+ #: src/ui/pages/ThemeSamplePage.tsx
3146
+ msgid "When primary is too rigid, the whole page starts reading like product UI instead of writing space."
3147
+ msgstr "When primary is too rigid, the whole page starts reading like product UI instead of writing space."
3148
+
3149
+ #. @context: Sample note summary second paragraph on the theme sample page
3150
+ #: src/ui/pages/ThemeSamplePage.tsx
3151
+ msgid "When the accent is slightly warmer and less literal, the whole page feels more like a writing space and less like product UI."
3152
+ msgstr "When the accent is slightly warmer and less literal, the whole page feels more like a writing space and less like product UI."
3153
+
3154
+ #. @context: Description for backup and restore documentation link in account settings
3155
+ #: src/ui/dash/settings/AccountMenuContent.tsx
3156
+ msgid "When to use site export, database backups, and recovery drills."
3157
+ msgstr "When to use site export, database backups, and recovery drills."
3158
+
3159
+ #. @context: Description for the circle tile asset card
3160
+ #: src/ui/pages/BrandPage.tsx
3161
+ msgid "White logo on the Jant green circle for profile images, badges, and other round placements where you want a ready-made asset."
3162
+ msgstr "White logo on the Jant green circle for profile images, badges, and other round placements where you want a ready-made asset."
3163
+
3164
+ #. @context: Description for the brand tile asset card
3165
+ #: src/ui/pages/BrandPage.tsx
3166
+ msgid "White logo on the Jant green rounded tile for app icon mockups, touch icons, directory listings, and other square placements that should feel softer."
3167
+ msgstr "White logo on the Jant green rounded tile for app icon mockups, touch icons, directory listings, and other square placements that should feel softer."
3168
+
3169
+ #. @context: Description for the square tile asset card
3170
+ #: src/ui/pages/BrandPage.tsx
3171
+ msgid "White logo on the Jant green square tile for platforms and layouts that expect a true edge-to-edge square."
3172
+ msgstr "White logo on the Jant green square tile for platforms and layouts that expect a true edge-to-edge square."
3173
+
3174
+ #. @context: Sample note post title on the theme sample page
3175
+ #: src/ui/pages/ThemeSamplePage.tsx
3176
+ msgid "Why the default accent should feel written, not branded"
3177
+ msgstr "Why the default accent should feel written, not branded"
1622
3178
 
1623
3179
  #. @context: Error toast when sign-in credentials are wrong
1624
3180
  #: src/routes/auth/signin.tsx
@@ -1634,3 +3190,8 @@ msgstr "You have unsaved changes"
1634
3190
  #: src/ui/compose/ComposeDialog.tsx
1635
3191
  msgid "Your thoughts (optional)"
1636
3192
  msgstr "Your thoughts (optional)"
3193
+
3194
+ #. @context: Compose publish settings slug input placeholder
3195
+ #: src/ui/compose/ComposeDialog.tsx
3196
+ msgid "your-post-link"
3197
+ msgstr "your-post-link"