ghost 6.24.0 → 6.25.1

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 (222) hide show
  1. package/components/tryghost-i18n-6.25.1.tgz +0 -0
  2. package/components/tryghost-parse-email-address-6.25.1.tgz +0 -0
  3. package/core/boot.js +3 -1
  4. package/core/built/admin/assets/{PolarAngleAxis-7TlIQL3R.js → PolarAngleAxis-C6ZeSpZB.js} +1 -1
  5. package/core/built/admin/assets/{_baseAssignValue-DJsCJz6y.js → _baseAssignValue-BKAl5FrV.js} +1 -1
  6. package/core/built/admin/assets/{a-large-small-BnBpzYwl.js → a-large-small-B_ulQCIs.js} +1 -1
  7. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
  8. package/core/built/admin/assets/admin-x-settings/{code-editor-view-De3K_osj.mjs → code-editor-view-CBYT1gA1.mjs} +2 -2
  9. package/core/built/admin/assets/admin-x-settings/{index-bGxDzD13.mjs → index-CN5CixaU.mjs} +2 -2
  10. package/core/built/admin/assets/admin-x-settings/{index-5D8KqsFU.mjs → index-CPQODntW.mjs} +2 -2
  11. package/core/built/admin/assets/admin-x-settings/{index-BIUDn7ot.mjs → index-CgTfOd7g.mjs} +9 -9
  12. package/core/built/admin/assets/admin-x-settings/{modals-DuokUyAH.mjs → modals-_y-6HROx.mjs} +2 -2
  13. package/core/built/admin/assets/{at-sign-DC4NtDDM.js → at-sign-B8xWKM0y.js} +1 -1
  14. package/core/built/admin/assets/{audience-CC5U4UxI.js → audience-CBOR--z9.js} +1 -1
  15. package/core/built/admin/assets/{avatar-flipboard-_GQfQXQc.js → avatar-flipboard-IipGb_wZ.js} +1 -1
  16. package/core/built/admin/assets/{bluesky-sharing-BKyzPl9y.js → bluesky-sharing-CkI1QuAm.js} +1 -1
  17. package/core/built/admin/assets/{chart-BCQFlmhJ.js → chart-_slUcr-K.js} +1 -1
  18. package/core/built/admin/assets/{chunk.423.dae9a3bbe7845c3a3cfc.js → chunk.434.de8a15730373eccfeefe.js} +13 -101
  19. package/core/built/admin/assets/{chunk.524.b5e454aa74df4428420c.js → chunk.524.5b9b463506a16221fc91.js} +6 -6
  20. package/core/built/admin/assets/{chunk.582.20635869be68725e6d5c.js → chunk.582.d8eae1661d753befaefd.js} +7 -7
  21. package/core/built/admin/assets/{chunk.123.1255d9e815f933dfdc57.js → chunk.630.3dbb0231a2d871126a80.js} +8 -6
  22. package/core/built/admin/assets/{code-editor-view-BXnjo7qe.js → code-editor-view-BWMqr2JV.js} +1 -1
  23. package/core/built/admin/assets/comments-BeoA0nfK.js +1 -0
  24. package/core/built/admin/assets/{content-helpers-CQXipRWa.js → content-helpers-CmTGdEmL.js} +1 -1
  25. package/core/built/admin/assets/{copy-B-MxRWPu.js → copy-CDHcAPJw.js} +1 -1
  26. package/core/built/admin/assets/{data-list-B2sqn7IE.js → data-list-Crb1ffbp.js} +1 -1
  27. package/core/built/admin/assets/{deleted-feed-item-DQi676Dy.js → deleted-feed-item-DBW0zJQg.js} +1 -1
  28. package/core/built/admin/assets/{dropzone-GgOCfK2j.js → dropzone-B9JUsQlW.js} +3 -3
  29. package/core/built/admin/assets/{edit-profile-COx5FmF9.js → edit-profile-Dz-IhetN.js} +1 -1
  30. package/core/built/admin/assets/{empty-indicator-Bf4Dqk72.js → empty-indicator-2QGnEbtY.js} +1 -1
  31. package/core/built/admin/assets/{en-BkI47Ou-.js → en-BRQS1Z8j.js} +1 -1
  32. package/core/built/admin/assets/{feed-Dzc-8jwd.js → feed-T3kW9UJA.js} +1 -1
  33. package/core/built/admin/assets/filters-ChOMQQZW.js +1 -0
  34. package/core/built/admin/assets/{gh-chart-Ch6dYUac.js → gh-chart-fuWw60Ka.js} +1 -1
  35. package/core/built/admin/assets/{ghost-69e448feab2cb78aba64f7177fa4d6f0.js → ghost-78b4a517ac907213ab47708eef33bc6f.js} +423 -542
  36. package/core/built/admin/assets/{growth-BIBJdcm6.js → growth-D9sCnmon.js} +1 -1
  37. package/core/built/admin/assets/{hash-BGd7HEsT.js → hash-CI1pQ1UC.js} +1 -1
  38. package/core/built/admin/assets/header-OevT95FI.js +1 -0
  39. package/core/built/admin/assets/{inbox-CFzKvW3h.js → inbox-DYY8-M1K.js} +1 -1
  40. package/core/built/admin/assets/{index-Dy8dCc8t.js → index-8CZdLQzu.js} +4 -4
  41. package/core/built/admin/assets/{index-DIO8ceib.js → index-BDAOs7pI.js} +1 -1
  42. package/core/built/admin/assets/{index-BZyG96u1.js → index-BEEgMX-_.js} +1 -1
  43. package/core/built/admin/assets/index-BbveDn8H.css +1 -0
  44. package/core/built/admin/assets/{index-BYXKsmpv.js → index-C-Cpbee5.js} +1 -1
  45. package/core/built/admin/assets/{index-DDJAHYHQ.js → index-CCF2RKxR.js} +12 -12
  46. package/core/built/admin/assets/{index-ZuWSQ3L6.js → index-CEnfjH5h.js} +93 -93
  47. package/core/built/admin/assets/{index-_WMp37yL.js → index-CcFVbffG.js} +1 -1
  48. package/core/built/admin/assets/{index-DpZazR71.js → index-CyMlhfZJ.js} +1 -1
  49. package/core/built/admin/assets/{index-DM98UB_U.js → index-DBZYUfjO.js} +1 -1
  50. package/core/built/admin/assets/{index-D0gRP4Gp.js → index-DJa3pLmx.js} +1 -1
  51. package/core/built/admin/assets/{index-n5opb8tL.js → index-DVqmhe-L.js} +1 -1
  52. package/core/built/admin/assets/{index-S2DGJkmz.js → index-DW5aEj6O.js} +2 -2
  53. package/core/built/admin/assets/{index-CvX5YYEz.js → index-DcFgRUSN.js} +1 -1
  54. package/core/built/admin/assets/{index-7NTHsKgE.js → index-DjgsxHeB.js} +1 -1
  55. package/core/built/admin/assets/index-mqQc8MVd.js +1 -0
  56. package/core/built/admin/assets/{index-CsHjDdYB.js → index-qQZsxgFE.js} +1 -1
  57. package/core/built/admin/assets/{koenig-lexical-8qAZ5o1x.js → koenig-lexical-CsbE6fpi.js} +1 -1
  58. package/core/built/admin/assets/kpis-Dw04ruBN.js +1 -0
  59. package/core/built/admin/assets/{label-CofMdj8x.js → label-tBvn89sm.js} +1 -1
  60. package/core/built/admin/assets/{links-MSlYSad1.js → links-Do4jcjIh.js} +1 -1
  61. package/core/built/admin/assets/{loader-circle-CF5G2g_Z.js → loader-circle-C8exRUku.js} +4 -4
  62. package/core/built/admin/assets/{lucide-react-DZiAu6PQ.js → lucide-react-4VO5Dwow.js} +1 -1
  63. package/core/built/admin/assets/{main-layout-DEVUkqt_.js → main-layout-BAqXRgAx.js} +1 -1
  64. package/core/built/admin/assets/{member-route-mLKS-PsA.js → member-route-D4n-RbQd.js} +1 -1
  65. package/core/built/admin/assets/members-DRLgwCgJ.js +15 -0
  66. package/core/built/admin/assets/{message-square-text-DESy3kSk.js → message-square-text-CC_1bY-Q.js} +5 -5
  67. package/core/built/admin/assets/{minus-DVNwSjD6.js → minus-DSyx9DCe.js} +1 -1
  68. package/core/built/admin/assets/{modals-FYjLOMaQ.js → modals-AryZr_DA.js} +13 -13
  69. package/core/built/admin/assets/{moderation-u4WS46a-.js → moderation-DwKm9LO-.js} +1 -1
  70. package/core/built/admin/assets/{newsletter-Cj0UCg4J.js → newsletter-C0rydPGS.js} +1 -1
  71. package/core/built/admin/assets/{newsletters-_UvhdBE3.js → newsletters-DKdmxfDG.js} +1 -1
  72. package/core/built/admin/assets/{note-CRnFryTp.js → note-996Zos9G.js} +1 -1
  73. package/core/built/admin/assets/{overview-Cr0dGxEU.js → overview-r17hlWAB.js} +1 -1
  74. package/core/built/admin/assets/{pagemenu-BqoDENpI.js → pagemenu-DzpB1AkZ.js} +17 -17
  75. package/core/built/admin/assets/{post-analytics-DIr_rDtL.js → post-analytics-AwufPVFE.js} +1 -1
  76. package/core/built/admin/assets/{post-analytics-context-WA--pwK5.js → post-analytics-context-GFe0lMc-.js} +1 -1
  77. package/core/built/admin/assets/{post-analytics-header-D97SoEaV.js → post-analytics-header-DmGyNvP9.js} +1 -1
  78. package/core/built/admin/assets/{post-share-modal-DBxR7WCX.js → post-share-modal-CTpdCS2X.js} +1 -1
  79. package/core/built/admin/assets/posts/{comments-Bswx2dzs.mjs → comments-Cvt31uBs.mjs} +597 -674
  80. package/core/built/admin/assets/posts/{dialog-67vvNv8e.mjs → dialog-DaViJlnd.mjs} +3 -3
  81. package/core/built/admin/assets/posts/{dropdown-menu-BKZfsAPJ.mjs → dropdown-menu-B4KGMiRI.mjs} +5 -5
  82. package/core/built/admin/assets/posts/{empty-indicator-DTmBQa_3.mjs → empty-indicator-BaD6pCXM.mjs} +2 -2
  83. package/core/built/admin/assets/posts/filters-BsCI4RJg.mjs +2835 -0
  84. package/core/built/admin/assets/posts/{get-site-timezone-D75cHSJ1.mjs → get-site-timezone-Bo-iI2bI.mjs} +2 -2
  85. package/core/built/admin/assets/posts/{growth-BqJWjpAp.mjs → growth-BJxIDp2o.mjs} +14 -14
  86. package/core/built/admin/assets/posts/header-7zhnErbb.mjs +100 -0
  87. package/core/built/admin/assets/posts/{heading-DXxLDQ96.mjs → heading-BCDx_eVF.mjs} +2 -2
  88. package/core/built/admin/assets/posts/{hooks-pVotzebr.mjs → hooks-DQL2O_El.mjs} +2 -2
  89. package/core/built/admin/assets/posts/{index-DZ1HzbGS.mjs → index-0mEgtljt.mjs} +3 -3
  90. package/core/built/admin/assets/posts/{index-By5yPnMZ.mjs → index-BTzJVQ6S.mjs} +10 -10
  91. package/core/built/admin/assets/posts/{input-DdXe2Fjm.mjs → input-DaHXv92f.mjs} +2 -2
  92. package/core/built/admin/assets/posts/{kpis-1MXZeSC9.mjs → kpis-GRsx6fPV.mjs} +10 -10
  93. package/core/built/admin/assets/posts/{links-DGzzdzsH.mjs → links-B1q_pqE9.mjs} +4 -4
  94. package/core/built/admin/assets/posts/{loading-indicator-CSj2spwS.mjs → loading-indicator-DiYqXomj.mjs} +3 -3
  95. package/core/built/admin/assets/posts/{main-layout-CGs25JVH.mjs → main-layout-DeqPTJTe.mjs} +2 -2
  96. package/core/built/admin/assets/posts/{members-BRcED5fL.mjs → members-LABk5yI5.mjs} +4102 -3442
  97. package/core/built/admin/assets/posts/{newsletter-D706LlgM.mjs → newsletter-C_nbHBaP.mjs} +15 -15
  98. package/core/built/admin/assets/posts/{overview-5dG5ypjx.mjs → overview-AJnKv4Ze.mjs} +16 -16
  99. package/core/built/admin/assets/posts/{post-analytics-wvNuOa4c.mjs → post-analytics-b_CKsePp.mjs} +6 -6
  100. package/core/built/admin/assets/posts/{post-analytics-context-BqnFe05q.mjs → post-analytics-context-D6jtpxxm.mjs} +5 -5
  101. package/core/built/admin/assets/posts/{post-analytics-header-Dsi5l6hb.mjs → post-analytics-header-R5UF_tF0.mjs} +11 -11
  102. package/core/built/admin/assets/posts/{post-share-modal-DWe35McY.mjs → post-share-modal-y4BEOajk.mjs} +4 -4
  103. package/core/built/admin/assets/posts/posts-C2hNrf1c.mjs +37 -0
  104. package/core/built/admin/assets/posts/posts.js +1 -1
  105. package/core/built/admin/assets/posts/{reply-B4vwBMwj.mjs → reply-2Uvi3Kxb.mjs} +2 -2
  106. package/core/built/admin/assets/posts/{search-DQuB1WMm.mjs → search-se7meOnL.mjs} +2 -2
  107. package/core/built/admin/assets/posts/{select-BMPHyOdQ.mjs → select-DpUpauFg.mjs} +8 -8
  108. package/core/built/admin/assets/posts/{separator-DgZ2VF9r.mjs → separator-CdBM46dw.mjs} +3 -3
  109. package/core/built/admin/assets/posts/{settings-D-wnf7Qg.mjs → settings-Chhj9xKP.mjs} +2 -2
  110. package/core/built/admin/assets/posts/{sheet-SOdCzxUt.mjs → sheet--k3SiDko.mjs} +3 -3
  111. package/core/built/admin/assets/posts/{skeleton-Du7JXZ_1.mjs → skeleton-CUSLSLoY.mjs} +3 -3
  112. package/core/built/admin/assets/posts/{source-icon-DcBtKbCl.mjs → source-icon-BjYUIoXN.mjs} +3 -3
  113. package/core/built/admin/assets/posts/{stats-CeLav-Hu.mjs → stats-BRdXKaxM.mjs} +4 -4
  114. package/core/built/admin/assets/posts/{table-DlaJMBps.mjs → table-Bgi_UcfL.mjs} +2 -2
  115. package/core/built/admin/assets/posts/{tabs-BQQbtw2g.mjs → tabs-DT8Bh72E.mjs} +14 -14
  116. package/core/built/admin/assets/posts/tags-BCFLnZYl.mjs +399 -0
  117. package/core/built/admin/assets/posts/{tags-CLyaNf39.mjs → tags-Kv2q0o3p.mjs} +2 -2
  118. package/core/built/admin/assets/posts/use-scroll-restoration-CLAUAal3.mjs +517 -0
  119. package/core/built/admin/assets/posts/{use-infinite-virtual-scroll-B_NwiBXK.mjs → virtual-list-window-CQDEqNBL.mjs} +246 -262
  120. package/core/built/admin/assets/posts/{web-TEVKbXSI.mjs → web-CqN0MQU6.mjs} +18 -18
  121. package/core/built/admin/assets/posts-GvXDuhVG.js +1 -0
  122. package/core/built/admin/assets/{referrers-J4vexZCf.js → referrers-Bd9pW-WX.js} +1 -1
  123. package/core/built/admin/assets/{repeat-BxOK9zhN.js → repeat-y6HlMgGO.js} +2 -2
  124. package/core/built/admin/assets/{reply-BoTN-eE0.js → reply-Cc8ryI5v.js} +2 -2
  125. package/core/built/admin/assets/{select-Bd1zcqox.js → select-CGr_5qad.js} +1 -1
  126. package/core/built/admin/assets/{settings-D72z6T_a.js → settings-BPsfSgg3.js} +1 -1
  127. package/core/built/admin/assets/{settings-BGbGoa4s.js → settings-BTd0Adha.js} +19 -19
  128. package/core/built/admin/assets/{sort-button-BOLTpImz.js → sort-button-k76_5HR2.js} +1 -1
  129. package/core/built/admin/assets/{source-icon-BqEM5MvU.js → source-icon-DMt0UskC.js} +1 -1
  130. package/core/built/admin/assets/{sprout-Bf-wc2Vo.js → sprout-Td9eaOoY.js} +2 -2
  131. package/core/built/admin/assets/{square-Cj_bJ0HZ.js → square-Df8vEYlG.js} +1 -1
  132. package/core/built/admin/assets/stats/{audience-BiHYBUzT.mjs → audience-DMTObpL8.mjs} +3 -3
  133. package/core/built/admin/assets/stats/{content-helpers-CIXZiyCm.mjs → content-helpers-ReMp9KJN.mjs} +4 -4
  134. package/core/built/admin/assets/stats/{index-CkKk-p14.mjs → index-6L-yLKFX.mjs} +8 -8
  135. package/core/built/admin/assets/stats/{index-DBB8Oih1.mjs → index-CIUyjeP-.mjs} +5 -5
  136. package/core/built/admin/assets/stats/{index-9zQR4gr0.mjs → index-CMSDpQm3.mjs} +3626 -3513
  137. package/core/built/admin/assets/stats/{index-DErXBfDM.mjs → index-Ca-_KJzy.mjs} +5 -5
  138. package/core/built/admin/assets/stats/{index-DMSmQLxG.mjs → index-CfO5yPSP.mjs} +5 -5
  139. package/core/built/admin/assets/stats/{sort-button-BqY7GFaO.mjs → sort-button-BB_M2CdZ.mjs} +3 -3
  140. package/core/built/admin/assets/stats/{stats-BeJgKX2G.mjs → stats-B2nnuLeU.mjs} +4 -4
  141. package/core/built/admin/assets/stats/stats.js +1 -1
  142. package/core/built/admin/assets/stats/{tabs-CPz357mW.mjs → tabs-DjJG-d3O.mjs} +3 -3
  143. package/core/built/admin/assets/stats/{use-growth-stats-WMYXBQE3.mjs → use-growth-stats-BMT5M7l6.mjs} +3 -3
  144. package/core/built/admin/assets/{stats-DWpHtRym.js → stats-Bs9ZbmXX.js} +1 -1
  145. package/core/built/admin/assets/stats-view-BWoPuaLz.js +1 -0
  146. package/core/built/admin/assets/{step-1-Bjya9Gt0.js → step-1-BUvsuCs0.js} +1 -1
  147. package/core/built/admin/assets/{step-2-CJ6I8JNc.js → step-2-DI9ekXls.js} +1 -1
  148. package/core/built/admin/assets/{step-3-3fs6Y2Kj.js → step-3-DzT_XhaS.js} +2 -2
  149. package/core/built/admin/assets/{table-B4zlzEDP.js → table-BKqaEGAm.js} +1 -1
  150. package/core/built/admin/assets/{tabs-mR5oJGm5.js → tabs-G6Ql8vbf.js} +1 -1
  151. package/core/built/admin/assets/tags-BHm-dlBs.js +1 -0
  152. package/core/built/admin/assets/{tags-CsgMtkFL.js → tags-_taMP0sJ.js} +1 -1
  153. package/core/built/admin/assets/{textarea-CQjEvapR.js → textarea-DcVuGYYq.js} +1 -1
  154. package/core/built/admin/assets/{tiers-CQE0v797.js → tiers-kv-xBoqQ.js} +1 -1
  155. package/core/built/admin/assets/{toggle-group-CR-Z-bJL.js → toggle-group-DsatLdt7.js} +1 -1
  156. package/core/built/admin/assets/{topic-filter-_NyD55eH.js → topic-filter-DkJyIuAf.js} +1 -1
  157. package/core/built/admin/assets/{trash-BFSLkv0z.js → trash-BeZZgbn-.js} +1 -1
  158. package/core/built/admin/assets/{upload-BTxT4v2z.js → upload-BG7KNIn7.js} +4 -4
  159. package/core/built/admin/assets/{use-growth-stats-BGymNu5O.js → use-growth-stats-CNGdl44N.js} +1 -1
  160. package/core/built/admin/assets/use-scroll-restoration-CQ3w0W98.js +1 -0
  161. package/core/built/admin/assets/{use-simple-pagination-Cq7Afp_c.js → use-simple-pagination-BeIJ_5Vv.js} +1 -1
  162. package/core/built/admin/assets/{user-plus-DMl69yKl.js → user-plus-CMxR50-Y.js} +1 -1
  163. package/core/built/admin/assets/{user-round-check-CVuZXUPz.js → user-round-check-2nhPmqP3.js} +1 -1
  164. package/core/built/admin/assets/virtual-list-window-Uq8oKYVG.js +4 -0
  165. package/core/built/admin/assets/{wallet-cards-zHR_y6Sp.js → wallet-cards-CJcVzH0D.js} +1 -1
  166. package/core/built/admin/assets/{web-CmFHgeQw.js → web-BPwTFKrc.js} +1 -1
  167. package/core/built/admin/index.html +7 -7
  168. package/core/frontend/helpers/ghost_head.js +1 -4
  169. package/core/server/data/migrations/versions/6.25/2026-03-26-15-47-00-insert-default-email-design-settings-row.js +42 -0
  170. package/core/server/data/migrations/versions/6.25/2026-03-30-20-22-25-add-email-design-setting-permissions.js +44 -0
  171. package/core/server/data/migrations/versions/6.25/2026-03-30-22-16-43-add-email-design-setting-id-to-automated-emails.js +8 -0
  172. package/core/server/data/migrations/versions/6.25/2026-03-31-13-12-10-backfill-automated-emails-email-design-setting-id.js +45 -0
  173. package/core/server/data/migrations/versions/6.25/2026-03-31-20-31-19-drop-nullable-on-automated-emails-email-design-setting-id.js +3 -0
  174. package/core/server/data/schema/fixtures/fixtures.json +35 -0
  175. package/core/server/data/schema/schema.js +1 -0
  176. package/core/server/data/seeders/importers/comment-reports-importer.js +1 -3
  177. package/core/server/data/seeders/importers/comments-importer.js +3 -2
  178. package/core/server/data/seeders/importers/email-batches-importer.js +3 -3
  179. package/core/server/data/seeders/importers/email-recipients-importer.js +6 -6
  180. package/core/server/data/seeders/importers/emails-importer.js +4 -3
  181. package/core/server/data/seeders/importers/members-click-events-importer.js +1 -1
  182. package/core/server/data/seeders/importers/members-created-events-importer.js +2 -1
  183. package/core/server/data/seeders/importers/members-feedback-importer.js +3 -4
  184. package/core/server/data/seeders/importers/members-login-events-importer.js +3 -2
  185. package/core/server/data/seeders/importers/members-status-events-importer.js +1 -2
  186. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +2 -1
  187. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +4 -2
  188. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +1 -2
  189. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +3 -1
  190. package/core/server/data/seeders/importers/offer-redemptions-importer.js +3 -3
  191. package/core/server/data/seeders/utils/database-date.js +26 -1
  192. package/core/server/models/automated-email.js +27 -0
  193. package/core/server/models/email-design-setting.js +27 -0
  194. package/core/server/services/members/service.js +0 -22
  195. package/core/server/services/stripe/service.js +1 -2
  196. package/core/server/services/verification/verification-webhook-service.js +2 -2
  197. package/core/server/services/verification/verification-webhook-service.ts +2 -2
  198. package/core/server/services/verification-trigger.js +34 -69
  199. package/core/server/services/webhooks/webhook-trigger.js +1 -1
  200. package/core/shared/labs.js +2 -2
  201. package/package.json +10 -28
  202. package/tsconfig.tsbuildinfo +1 -1
  203. package/yarn.lock +423 -107
  204. package/components/tryghost-i18n-6.24.0.tgz +0 -0
  205. package/components/tryghost-parse-email-address-6.24.0.tgz +0 -0
  206. package/core/built/admin/assets/comments-CteqV7ZN.js +0 -1
  207. package/core/built/admin/assets/filters-DXXaCya7.js +0 -1
  208. package/core/built/admin/assets/index-QB-va_sk.css +0 -1
  209. package/core/built/admin/assets/index-nBUk6L1X.js +0 -1
  210. package/core/built/admin/assets/kpis-Cv75oSPY.js +0 -1
  211. package/core/built/admin/assets/members-DcElgZ2t.js +0 -15
  212. package/core/built/admin/assets/posts/filters-Ds_ZaYIU.mjs +0 -2722
  213. package/core/built/admin/assets/posts/posts-DI5YQFp4.mjs +0 -17
  214. package/core/built/admin/assets/posts/tags-CjwolIiT.mjs +0 -395
  215. package/core/built/admin/assets/posts/use-scroll-restoration-YSR5jwQl.mjs +0 -232
  216. package/core/built/admin/assets/posts-CJHEP4C-.js +0 -1
  217. package/core/built/admin/assets/stats-view-CcyaLPwj.js +0 -1
  218. package/core/built/admin/assets/tags-DEFC6GpD.js +0 -1
  219. package/core/built/admin/assets/use-infinite-virtual-scroll-CNqGwgHd.js +0 -4
  220. package/core/built/admin/assets/use-scroll-restoration-BWtb0NrS.js +0 -1
  221. package/core/shared/config/env/config.testing-browser.json +0 -98
  222. /package/core/built/admin/assets/{chunk.423.dae9a3bbe7845c3a3cfc.js.LICENSE.txt → chunk.434.de8a15730373eccfeefe.js.LICENSE.txt} +0 -0
@@ -0,0 +1,399 @@
1
+ import { D as v, j as e, R as u, T as X, n as T, A as Y, B as ee, Z as z, q as se, e as ae, _ as te } from "./index-BTzJVQ6S.mjs";
2
+ import { b as C, P as y, f as re, d as oe, B as N } from "./heading-BCDx_eVF.mjs";
3
+ import { c as E, I as le, u as ne, R as ie } from "./skeleton-CUSLSLoY.mjs";
4
+ import { H as f } from "./header-7zhnErbb.mjs";
5
+ import { M as ce } from "./main-layout-DeqPTJTe.mjs";
6
+ import { u as de, a as ue, L as ge } from "./virtual-list-window-CQDEqNBL.mjs";
7
+ import { T as pe, a as xe, b as P, c as b, d as me, e as h } from "./table-Bgi_UcfL.mjs";
8
+ import { P as fe, T as he } from "./tags-Kv2q0o3p.mjs";
9
+ import { E as ve } from "./empty-indicator-BaD6pCXM.mjs";
10
+ import { L as je } from "./loading-indicator-DiYqXomj.mjs";
11
+ import { d as be } from "./hooks-DQL2O_El.mjs";
12
+ var $ = "Toggle", I = v((s, t) => {
13
+ const { pressed: r, defaultPressed: a, onPressedChange: o, ...l } = s, [n, i] = C({
14
+ prop: r,
15
+ onChange: o,
16
+ defaultProp: a ?? !1,
17
+ caller: $
18
+ });
19
+ return /* @__PURE__ */ e.jsx(
20
+ y.button,
21
+ {
22
+ type: "button",
23
+ "aria-pressed": n,
24
+ "data-state": n ? "on" : "off",
25
+ "data-disabled": s.disabled ? "" : void 0,
26
+ ...l,
27
+ ref: t,
28
+ onClick: re(s.onClick, () => {
29
+ s.disabled || i(!n);
30
+ })
31
+ }
32
+ );
33
+ });
34
+ I.displayName = $;
35
+ var V = I, m = "ToggleGroup", [B] = oe(m, [
36
+ E
37
+ ]), D = E(), _ = u.forwardRef((s, t) => {
38
+ const { type: r, ...a } = s;
39
+ if (r === "single") {
40
+ const o = a;
41
+ return /* @__PURE__ */ e.jsx(Ne, { ...o, ref: t });
42
+ }
43
+ if (r === "multiple") {
44
+ const o = a;
45
+ return /* @__PURE__ */ e.jsx(we, { ...o, ref: t });
46
+ }
47
+ throw new Error(`Missing prop \`type\` expected on \`${m}\``);
48
+ });
49
+ _.displayName = m;
50
+ var [F, H] = B(m), Ne = u.forwardRef((s, t) => {
51
+ const {
52
+ value: r,
53
+ defaultValue: a,
54
+ onValueChange: o = () => {
55
+ },
56
+ ...l
57
+ } = s, [n, i] = C({
58
+ prop: r,
59
+ defaultProp: a ?? "",
60
+ onChange: o,
61
+ caller: m
62
+ });
63
+ return /* @__PURE__ */ e.jsx(
64
+ F,
65
+ {
66
+ scope: s.__scopeToggleGroup,
67
+ type: "single",
68
+ value: u.useMemo(() => n ? [n] : [], [n]),
69
+ onItemActivate: i,
70
+ onItemDeactivate: u.useCallback(() => i(""), [i]),
71
+ children: /* @__PURE__ */ e.jsx(q, { ...l, ref: t })
72
+ }
73
+ );
74
+ }), we = u.forwardRef((s, t) => {
75
+ const {
76
+ value: r,
77
+ defaultValue: a,
78
+ onValueChange: o = () => {
79
+ },
80
+ ...l
81
+ } = s, [n, i] = C({
82
+ prop: r,
83
+ defaultProp: a ?? [],
84
+ onChange: o,
85
+ caller: m
86
+ }), c = u.useCallback(
87
+ (d) => i((p = []) => [...p, d]),
88
+ [i]
89
+ ), g = u.useCallback(
90
+ (d) => i((p = []) => p.filter((j) => j !== d)),
91
+ [i]
92
+ );
93
+ return /* @__PURE__ */ e.jsx(
94
+ F,
95
+ {
96
+ scope: s.__scopeToggleGroup,
97
+ type: "multiple",
98
+ value: n,
99
+ onItemActivate: c,
100
+ onItemDeactivate: g,
101
+ children: /* @__PURE__ */ e.jsx(q, { ...l, ref: t })
102
+ }
103
+ );
104
+ });
105
+ _.displayName = m;
106
+ var [Te, ye] = B(m), q = u.forwardRef(
107
+ (s, t) => {
108
+ const {
109
+ __scopeToggleGroup: r,
110
+ disabled: a = !1,
111
+ rovingFocus: o = !0,
112
+ orientation: l,
113
+ dir: n,
114
+ loop: i = !0,
115
+ ...c
116
+ } = s, g = D(r), d = ne(n), p = { role: "group", dir: d, ...c };
117
+ return /* @__PURE__ */ e.jsx(Te, { scope: r, rovingFocus: o, disabled: a, children: o ? /* @__PURE__ */ e.jsx(
118
+ ie,
119
+ {
120
+ asChild: !0,
121
+ ...g,
122
+ orientation: l,
123
+ dir: d,
124
+ loop: i,
125
+ children: /* @__PURE__ */ e.jsx(y.div, { ...p, ref: t })
126
+ }
127
+ ) : /* @__PURE__ */ e.jsx(y.div, { ...p, ref: t }) });
128
+ }
129
+ ), w = "ToggleGroupItem", O = u.forwardRef(
130
+ (s, t) => {
131
+ const r = H(w, s.__scopeToggleGroup), a = ye(w, s.__scopeToggleGroup), o = D(s.__scopeToggleGroup), l = r.value.includes(s.value), n = a.disabled || s.disabled, i = { ...s, pressed: l, disabled: n }, c = u.useRef(null);
132
+ return a.rovingFocus ? /* @__PURE__ */ e.jsx(
133
+ le,
134
+ {
135
+ asChild: !0,
136
+ ...o,
137
+ focusable: !n,
138
+ active: l,
139
+ ref: c,
140
+ children: /* @__PURE__ */ e.jsx(M, { ...i, ref: t })
141
+ }
142
+ ) : /* @__PURE__ */ e.jsx(M, { ...i, ref: t });
143
+ }
144
+ );
145
+ O.displayName = w;
146
+ var M = u.forwardRef(
147
+ (s, t) => {
148
+ const { __scopeToggleGroup: r, value: a, ...o } = s, l = H(w, r), n = { role: "radio", "aria-checked": s.pressed, "aria-pressed": void 0 }, i = l.type === "single" ? n : void 0;
149
+ return /* @__PURE__ */ e.jsx(
150
+ I,
151
+ {
152
+ ...i,
153
+ ...o,
154
+ ref: t,
155
+ onPressedChange: (c) => {
156
+ c ? l.onItemActivate(a) : l.onItemDeactivate(a);
157
+ }
158
+ }
159
+ );
160
+ }
161
+ ), Q = _, U = O;
162
+ const W = X(
163
+ "inline-flex items-center justify-center gap-2 rounded-xs text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-background data-[state=on]:text-foreground data-[state=on]:shadow-sm dark:hover:bg-background [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.5px]",
164
+ {
165
+ variants: {
166
+ variant: {
167
+ default: "bg-transparent"
168
+ },
169
+ size: {
170
+ default: "h-[26px] min-w-[26px] px-2",
171
+ button: "h-[32px] min-w-[32px] px-3"
172
+ }
173
+ },
174
+ defaultVariants: {
175
+ variant: "default",
176
+ size: "default"
177
+ }
178
+ }
179
+ ), Pe = v(({ className: s, variant: t, size: r, ...a }, o) => /* @__PURE__ */ e.jsx(
180
+ V,
181
+ {
182
+ ref: o,
183
+ className: T(W({ variant: t, size: r, className: s })),
184
+ ...a
185
+ }
186
+ ));
187
+ Pe.displayName = V.displayName;
188
+ const Z = Y({
189
+ size: "default",
190
+ variant: "default"
191
+ }), J = v(({ className: s, variant: t, size: r, children: a, ...o }, l) => /* @__PURE__ */ e.jsx(
192
+ Q,
193
+ {
194
+ ref: l,
195
+ className: T("inline-flex items-center justify-center gap-0.5 bg-gray-100 p-0.5 rounded-md dark:bg-gray-925/70", s),
196
+ ...o,
197
+ children: /* @__PURE__ */ e.jsx(Z.Provider, { value: { variant: t, size: r }, children: a })
198
+ }
199
+ ));
200
+ J.displayName = Q.displayName;
201
+ const G = v(({ className: s, children: t, variant: r, size: a, ...o }, l) => {
202
+ const n = ee(Z);
203
+ return /* @__PURE__ */ e.jsx(
204
+ U,
205
+ {
206
+ ref: l,
207
+ className: T(
208
+ W({
209
+ variant: n.variant || r,
210
+ size: n.size || a
211
+ }),
212
+ s
213
+ ),
214
+ ...o,
215
+ children: t
216
+ }
217
+ );
218
+ });
219
+ G.displayName = U.displayName;
220
+ const Ge = ({ children: s, className: t, ...r }) => /* @__PURE__ */ e.jsx("section", { className: T("flex gap-6 flex-col p-4 lg:p-8 size-full grow", t), ...r, children: s }), Ce = ({ currentTab: s }) => /* @__PURE__ */ e.jsxs(f, { variant: "inline-nav", children: [
221
+ /* @__PURE__ */ e.jsx(f.Title, { children: "Tags" }),
222
+ /* @__PURE__ */ e.jsxs(f.Actions, { children: [
223
+ /* @__PURE__ */ e.jsx(f.ActionGroup, { children: /* @__PURE__ */ e.jsxs(J, { "data-testid": "tags-header-tabs", size: "button", type: "single", value: s, children: [
224
+ /* @__PURE__ */ e.jsx(G, { "aria-label": "Public tags", value: "public", asChild: !0, children: /* @__PURE__ */ e.jsx(z, { to: "/tags", children: "Public tags" }) }),
225
+ /* @__PURE__ */ e.jsx(G, { "aria-label": "Internal tags", value: "internal", asChild: !0, children: /* @__PURE__ */ e.jsx(z, { to: "/tags?type=internal", children: "Internal tags" }) })
226
+ ] }) }),
227
+ /* @__PURE__ */ e.jsx(f.ActionGroup, { children: /* @__PURE__ */ e.jsx(N, { asChild: !0, children: /* @__PURE__ */ e.jsx("a", { className: "font-bold", href: "#/tags/new", children: "New tag" }) }) })
228
+ ] })
229
+ ] }), Ie = ({ children: s }) => /* @__PURE__ */ e.jsx(ce, { children: /* @__PURE__ */ e.jsx("div", { className: "grid w-full grow", children: /* @__PURE__ */ e.jsx("div", { className: "flex h-full flex-col", "data-testid": "tags-page", children: s }) }) }), A = ({ height: s }) => /* @__PURE__ */ e.jsx("tr", { "aria-hidden": "true", className: "flex lg:table-row", children: /* @__PURE__ */ e.jsx("td", { className: "flex lg:table-cell", style: { height: s } }) }), _e = v(function(t, r) {
230
+ return /* @__PURE__ */ e.jsx(
231
+ P,
232
+ {
233
+ ref: r,
234
+ ...t,
235
+ "aria-hidden": "true",
236
+ className: "relative flex flex-col lg:table-row",
237
+ children: /* @__PURE__ */ e.jsx(h, { className: "relative z-10 h-24 animate-pulse", children: /* @__PURE__ */ e.jsx("div", { className: "h-full rounded-md bg-muted", "data-testid": "loading-placeholder" }) })
238
+ }
239
+ );
240
+ });
241
+ function Re({
242
+ items: s,
243
+ totalItems: t,
244
+ hasNextPage: r,
245
+ isFetchingNextPage: a,
246
+ fetchNextPage: o
247
+ }) {
248
+ const l = se(null), { visibleItemCount: n, canLoadMore: i, loadMore: c } = de(t), { visibleItems: g, spaceBefore: d, spaceAfter: p } = ue({
249
+ items: s,
250
+ totalItems: n,
251
+ hasNextPage: r,
252
+ isFetchingNextPage: a,
253
+ fetchNextPage: o,
254
+ parentRef: l
255
+ });
256
+ return /* @__PURE__ */ e.jsxs("div", { ref: l, className: "overflow-hidden", children: [
257
+ /* @__PURE__ */ e.jsxs(
258
+ pe,
259
+ {
260
+ className: "flex table-fixed flex-col lg:table",
261
+ "data-testid": "tags-list",
262
+ children: [
263
+ /* @__PURE__ */ e.jsx(xe, { className: "hidden lg:visible! lg:table-header-group!", children: /* @__PURE__ */ e.jsxs(P, { children: [
264
+ /* @__PURE__ */ e.jsx(b, { className: "w-auto px-4", children: "Tag" }),
265
+ /* @__PURE__ */ e.jsx(b, { className: "w-1/5 px-4", children: "Slug" }),
266
+ /* @__PURE__ */ e.jsx(b, { className: "w-1/5 px-4", children: "No. of posts" }),
267
+ /* @__PURE__ */ e.jsx(b, { className: "w-20 px-4" })
268
+ ] }) }),
269
+ /* @__PURE__ */ e.jsxs(me, { className: "flex flex-col lg:table-row-group", children: [
270
+ /* @__PURE__ */ e.jsx(A, { height: d }),
271
+ g.map(({ key: j, virtualItem: K, item: x, props: R }) => {
272
+ var k, L, S;
273
+ return K.index > s.length - 1 ? /* @__PURE__ */ e.jsx(_e, { ...R }, j) : /* @__PURE__ */ e.jsxs(
274
+ P,
275
+ {
276
+ ...R,
277
+ className: "grid w-full grid-cols-[1fr_5rem] items-center gap-x-4 p-2 hover:bg-muted/50 md:grid-cols-[1fr_auto_5rem] lg:table-row lg:p-0 [&.group:hover_td]:bg-transparent",
278
+ "data-testid": "tag-list-row",
279
+ children: [
280
+ /* @__PURE__ */ e.jsxs(h, { className: "static col-start-1 col-end-1 row-start-1 row-end-1 flex min-w-0 flex-col p-0 md:relative lg:table-cell lg:w-1/2 lg:p-4 xl:w-3/5", children: [
281
+ /* @__PURE__ */ e.jsx(
282
+ "a",
283
+ {
284
+ className: "before:absolute before:top-0 before:left-0 before:z-10 before:h-full before:w-[100vw]",
285
+ href: `#/tags/${x.slug}`,
286
+ children: /* @__PURE__ */ e.jsx("span", { className: "block truncate pb-1 text-lg font-medium", children: x.name })
287
+ }
288
+ ),
289
+ /* @__PURE__ */ e.jsx("span", { className: "block truncate text-muted-foreground", children: x.description })
290
+ ] }),
291
+ /* @__PURE__ */ e.jsx(h, { className: "col-start-1 col-end-1 row-start-2 row-end-2 flex p-0 lg:table-cell lg:p-4", children: /* @__PURE__ */ e.jsx("span", { className: "block truncate", children: x.slug }) }),
292
+ /* @__PURE__ */ e.jsx(h, { className: "col-start-1 col-end-1 row-start-3 row-end-3 flex p-0 md:col-start-2 md:col-end-2 md:row-start-1 md:row-end-3 lg:table-cell lg:p-4", children: (k = x.count) != null && k.posts ? /* @__PURE__ */ e.jsx(
293
+ "a",
294
+ {
295
+ className: "relative z-10 -m-4 inline-block p-4 hover:underline",
296
+ href: `#/posts?tag=${x.slug}`,
297
+ children: `${ae((L = x.count) == null ? void 0 : L.posts)} ${((S = x.count) == null ? void 0 : S.posts) === 1 ? "post" : "posts"}`
298
+ }
299
+ ) : /* @__PURE__ */ e.jsx("span", { className: "text-muted-foreground", children: "0 posts" }) }),
300
+ /* @__PURE__ */ e.jsx(h, { className: "col-start-2 col-end-2 row-start-1 row-end-3 p-0 md:col-start-3 md:col-end-3 lg:table-cell lg:p-4", children: /* @__PURE__ */ e.jsx(
301
+ N,
302
+ {
303
+ "aria-hidden": "true",
304
+ className: "w-12",
305
+ size: "icon",
306
+ tabIndex: -1,
307
+ variant: "outline",
308
+ children: /* @__PURE__ */ e.jsx(fe, {})
309
+ }
310
+ ) })
311
+ ]
312
+ },
313
+ j
314
+ );
315
+ }),
316
+ /* @__PURE__ */ e.jsx(A, { height: p })
317
+ ] })
318
+ ]
319
+ }
320
+ ),
321
+ i && /* @__PURE__ */ e.jsx(ge, { isLoading: a, onClick: c })
322
+ ] });
323
+ }
324
+ const ke = "TagsResponseType", Le = be({
325
+ dataType: ke,
326
+ path: "/tags/",
327
+ defaultNextPageParams: (s, t) => {
328
+ var r, a;
329
+ return (r = s.meta) != null && r.pagination.next ? {
330
+ ...t,
331
+ page: (((a = s.meta) == null ? void 0 : a.pagination.next) || 1).toString()
332
+ } : void 0;
333
+ },
334
+ returnData: (s) => {
335
+ const { pages: t } = s, r = t.flatMap((o) => o.tags), a = t[t.length - 1].meta;
336
+ return {
337
+ tags: r,
338
+ meta: a,
339
+ isEnd: a ? a.pagination.pages === a.pagination.page : !0
340
+ };
341
+ }
342
+ }), Se = ({
343
+ filter: s,
344
+ ...t
345
+ }) => {
346
+ const r = Object.entries(s).map(([a, o]) => `${a}:${o}`).join(",");
347
+ return Le({
348
+ ...t,
349
+ searchParams: {
350
+ limit: "100",
351
+ order: "name asc",
352
+ include: "count.posts",
353
+ filter: r,
354
+ ...t.searchParams
355
+ }
356
+ });
357
+ }, Qe = () => {
358
+ var g, d;
359
+ const { search: s } = te(), r = new URLSearchParams(s).get("type") ?? "public", {
360
+ data: a,
361
+ isError: o,
362
+ isLoading: l,
363
+ isFetchingNextPage: n,
364
+ fetchNextPage: i,
365
+ hasNextPage: c
366
+ } = Se({
367
+ filter: {
368
+ visibility: r
369
+ }
370
+ });
371
+ return /* @__PURE__ */ e.jsxs(Ie, { children: [
372
+ /* @__PURE__ */ e.jsx(Ce, { currentTab: r }),
373
+ /* @__PURE__ */ e.jsx(Ge, { children: l ? /* @__PURE__ */ e.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ e.jsx(je, { size: "lg" }) }) : o ? /* @__PURE__ */ e.jsxs("div", { className: "mb-16 flex h-full flex-col items-center justify-center", children: [
374
+ /* @__PURE__ */ e.jsx("h2", { className: "mb-2 text-xl font-medium", children: "Error loading tags" }),
375
+ /* @__PURE__ */ e.jsx("p", { className: "mb-4 text-muted-foreground", children: "Please reload the page to try again" }),
376
+ /* @__PURE__ */ e.jsx(N, { onClick: () => window.location.reload(), children: "Reload page" })
377
+ ] }) : a != null && a.tags.length ? /* @__PURE__ */ e.jsx(
378
+ Re,
379
+ {
380
+ fetchNextPage: i,
381
+ hasNextPage: c,
382
+ isFetchingNextPage: n,
383
+ items: (a == null ? void 0 : a.tags) ?? [],
384
+ totalItems: ((d = (g = a == null ? void 0 : a.meta) == null ? void 0 : g.pagination) == null ? void 0 : d.total) ?? 0
385
+ }
386
+ ) : /* @__PURE__ */ e.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ e.jsx(
387
+ ve,
388
+ {
389
+ actions: /* @__PURE__ */ e.jsx(N, { asChild: !0, children: /* @__PURE__ */ e.jsx("a", { href: "#/tags/new", children: "Create a new tag" }) }),
390
+ title: "Start organizing your content",
391
+ children: /* @__PURE__ */ e.jsx(he, {})
392
+ }
393
+ ) }) })
394
+ ] });
395
+ };
396
+ export {
397
+ Qe as default
398
+ };
399
+ //# sourceMappingURL=tags-BCFLnZYl.mjs.map
@@ -1,4 +1,4 @@
1
- import { g as a } from "./heading-DXxLDQ96.mjs";
1
+ import { g as a } from "./heading-BCDx_eVF.mjs";
2
2
  /**
3
3
  * @license lucide-react v0.553.0 - ISC
4
4
  *
@@ -39,4 +39,4 @@ export {
39
39
  t as P,
40
40
  l as T
41
41
  };
42
- //# sourceMappingURL=tags-CLyaNf39.mjs.map
42
+ //# sourceMappingURL=tags-Kv2q0o3p.mjs.map