ghost 6.63.0 → 6.65.0

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 (883) hide show
  1. package/bin/create-migration.js +15 -0
  2. package/bin/lib/duplicate-deps.js +204 -0
  3. package/bin/validate-adapters.js +50 -6
  4. package/components/tryghost-adapter-base-scheduling-0.2.4.tgz +0 -0
  5. package/components/tryghost-adapter-base-sso-0.1.3.tgz +0 -0
  6. package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
  7. package/components/tryghost-api-framework-0.0.0.tgz +0 -0
  8. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  9. package/components/{tryghost-kg-default-cards-10.3.5.tgz → tryghost-kg-default-cards-10.3.6.tgz} +0 -0
  10. package/components/tryghost-kg-default-nodes-2.2.1.tgz +0 -0
  11. package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
  12. package/components/{tryghost-kg-lexical-html-renderer-1.5.0.tgz → tryghost-kg-lexical-html-renderer-1.5.1.tgz} +0 -0
  13. package/components/tryghost-limit-service-0.0.0.tgz +0 -0
  14. package/components/tryghost-metafield-types-0.0.0.tgz +0 -0
  15. package/content/themes/casper/assets/built/casper.js +1 -1
  16. package/content/themes/casper/assets/built/screen.css +1 -1
  17. package/content/themes/casper/assets/css/screen.css +15 -2
  18. package/content/themes/casper/assets/js/init.js +37 -9
  19. package/content/themes/casper/package.json +8 -8
  20. package/content/themes/source/assets/built/screen.css +1 -1
  21. package/content/themes/source/assets/built/source.js +1 -1
  22. package/content/themes/source/assets/css/screen.css +15 -2
  23. package/content/themes/source/assets/js/main.js +24 -4
  24. package/content/themes/source/package.json +8 -8
  25. package/core/boot.js +27 -15
  26. package/core/bridge.js +1 -1
  27. package/core/built/admin/assets/Combination-DQ6f9A5P.js +41 -0
  28. package/core/built/admin/assets/{PolarAngleAxis-pkMyqz8g.js → PolarAngleAxis-BBaU7PRV.js} +2 -2
  29. package/core/built/admin/assets/RadialBarChart-Bp20JPnA.js +1 -0
  30. package/core/built/admin/assets/about-Dp43j18M.js +1 -0
  31. package/core/built/admin/assets/accordion-h62UzFhj.js +1 -0
  32. package/core/built/admin/assets/account-migration-CBTbtX6Q.js +1 -0
  33. package/core/built/admin/assets/action-list-DC9QpX-l.js +1 -0
  34. package/core/built/admin/assets/activitypub/{account-migration-KA6Jjf9L.js → account-migration-B1DUZS4Q.js} +8 -8
  35. package/core/built/admin/assets/activitypub/activitypub.js +24 -11
  36. package/core/built/admin/assets/activitypub/avatar-CRGud8yf.js +153 -0
  37. package/core/built/admin/assets/activitypub/{avatar-flipboard-csQaNeYK.js → avatar-flipboard-BZNFAXfm.js} +3 -3
  38. package/core/built/admin/assets/activitypub/{bluesky-sharing-C7nTDMvw.js → bluesky-sharing-Cg_v-LwS.js} +30 -31
  39. package/core/built/admin/assets/activitypub/{chunk-KS7C4IRE-Ck3O4oo2.js → chunk-KS7C4IRE-CTUL98Lc.js} +2498 -1885
  40. package/core/built/admin/assets/activitypub/{content-formatters-CLcjaBwV.js → content-formatters-D7GWP7nH.js} +23 -24
  41. package/core/built/admin/assets/activitypub/{copy-DcOh8kXw.js → copy-CgzTvoeR.js} +2 -2
  42. package/core/built/admin/assets/activitypub/{domain-fZ-X8i4-.js → domain-C3G_nkHU.js} +46 -46
  43. package/core/built/admin/assets/activitypub/{edit-profile-BqMLQV88.js → edit-profile-C8cCY-AK.js} +927 -928
  44. package/core/built/admin/assets/activitypub/{explore-B4yPoP8E.js → explore-NlDT4inq.js} +11 -11
  45. package/core/built/admin/assets/activitypub/{feed-BRC_mvAe.js → feed-DF22jCTV.js} +10 -10
  46. package/core/built/admin/assets/activitypub/{field-COacNgOt.js → field-95-iuTte.js} +4 -4
  47. package/core/built/admin/assets/activitypub/{hash-C7u-irQQ.js → hash-R7LMLnhY.js} +2 -2
  48. package/core/built/admin/assets/activitypub/{inbox-CbTTdDQ3.js → inbox-DUJUiV6x.js} +2 -2
  49. package/core/built/admin/assets/activitypub/{inbox-BW-yvUoN.js → inbox-DerExBzA.js} +416 -414
  50. package/core/built/admin/assets/activitypub/{label-kPMmYI7l.js → label-EwCn1QYc.js} +4 -4
  51. package/core/built/admin/assets/activitypub/layout-Dy6NnW1G.js +1 -0
  52. package/core/built/admin/assets/activitypub/{moderation-CuidJzc0.js → moderation-BSkfiVYo.js} +73 -75
  53. package/core/built/admin/assets/activitypub/{note-CAMRRSqD.js → note-DOnAJTXK.js} +9 -9
  54. package/core/built/admin/assets/activitypub/{notifications-BmNlXGgp.js → notifications-DZc6XTjG.js} +27 -27
  55. package/core/built/admin/assets/activitypub/{onboarding-Dmun9jr_.js → onboarding-8vEIwYTH.js} +3 -3
  56. package/core/built/admin/assets/activitypub/{onboarding-Bqg7fh_L.js → onboarding-DYVqbNmp.js} +2 -2
  57. package/core/built/admin/assets/activitypub/{preferences--oH19wf9.js → preferences-DDok6F2N.js} +1418 -1390
  58. package/core/built/admin/assets/activitypub/{profile-DH_tQx2D.js → profile-DjVa2hUk.js} +254 -255
  59. package/core/built/admin/assets/activitypub/{reply-Cap9PxSH.js → reply-DtXBpHxu.js} +2 -2
  60. package/core/built/admin/assets/activitypub/routes-Cw302e1c.js +4946 -0
  61. package/core/built/admin/assets/activitypub/{separator-CAxxu8VV.js → separator-FpRpVDd3.js} +8 -9
  62. package/core/built/admin/assets/activitypub/settings-yK-puALn.js +314 -0
  63. package/core/built/admin/assets/activitypub/{site-BYps63oh.js → site-CHw0R2PA.js} +2 -2
  64. package/core/built/admin/assets/activitypub/{step-1-CKjR2KAm.js → step-1-737bnvxk.js} +7 -7
  65. package/core/built/admin/assets/activitypub/{step-2-B6PKfOUQ.js → step-2-DBaIsAsM.js} +7 -7
  66. package/core/built/admin/assets/activitypub/{step-3-C-qBbcUo.js → step-3-BBmy9m9V.js} +23 -23
  67. package/core/built/admin/assets/activitypub/tabs-LQ2xirdm.js +1101 -0
  68. package/core/built/admin/assets/activitypub/{topic-filter-DsUOuu0k.js → topic-filter-75Nu0CKj.js} +4 -4
  69. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-CX9snsLs.js → use-activity-pub-queries-CYI2QJMs.js} +58 -58
  70. package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-DsJTGDSS.js → use-navigate-with-base-path-B4jZ8hyg.js} +3924 -1403
  71. package/core/built/admin/assets/activitypub/{use-reply-chain-data-AJi9zkzm.js → use-reply-chain-data-BHmFxc3U.js} +6 -6
  72. package/core/built/admin/assets/activitypub/users-CSjOwpT9.js +886 -0
  73. package/core/built/admin/assets/activitypub/{x-DR8AT3-4.js → x-B9ptWCds.js} +2 -2
  74. package/core/built/admin/assets/add-integration-modal-BwePhq95.js +1 -0
  75. package/core/built/admin/assets/add-newsletter-modal-Zv0I7Msm.js +1 -0
  76. package/core/built/admin/assets/add-recommendation-modal-cdLv0wHy.js +1 -0
  77. package/core/built/admin/assets/analytics-DY8_SaP7.js +1 -0
  78. package/core/built/admin/assets/announcement-bar-modal-C-2yWwag.js +1 -0
  79. package/core/built/admin/assets/api-keys-BHKATUqQ.js +1 -0
  80. package/core/built/admin/assets/{api-keys-BGPzLHzA.js → api-keys-omLA6iYn.js} +1 -1
  81. package/core/built/admin/assets/{audience-ceV3XVHq.js → audience-wRcSN0jV.js} +1 -1
  82. package/core/built/admin/assets/automated-emails-CzUa3v4d.js +1 -0
  83. package/core/built/admin/assets/automations-DupSsSOr.js +1 -0
  84. package/core/built/admin/assets/automations-hDVcRPjh.js +1 -0
  85. package/core/built/admin/assets/avatar-flipboard-DiAGgshK.js +1 -0
  86. package/core/built/admin/assets/badge-CI1Z0xyG.js +1 -0
  87. package/core/built/admin/assets/bluesky-sharing-B8PC1SBj.js +1 -0
  88. package/core/built/admin/assets/box-LUuYRT-1.js +1 -0
  89. package/core/built/admin/assets/brand-icon-CrmbX86T.js +1 -0
  90. package/core/built/admin/assets/breadcrumb-DDDpzLyo.js +1 -0
  91. package/core/built/admin/assets/button-D414TI3B.js +1 -0
  92. package/core/built/admin/assets/calendar-Cp_opo3i.js +1 -0
  93. package/core/built/admin/assets/card-C2dfd5u0.js +1 -0
  94. package/core/built/admin/assets/chart-B_UNLXse.js +63 -0
  95. package/core/built/admin/assets/chart-helpers-Czu_9QpJ.js +1 -0
  96. package/core/built/admin/assets/checkbox-CFFqf0Nh.js +1 -0
  97. package/core/built/admin/assets/{chunk-KS7C4IRE-DCsL4i4D.js → chunk-KS7C4IRE-DhOcHQOU.js} +1 -1
  98. package/core/built/admin/assets/{chunk.254.035b85ec456ebbd7336b.js → chunk.201.6961b57ed7a281ac193e.js} +165 -122
  99. package/core/built/admin/assets/chunk.524.0b850e72ec49a0fa3882.js +25 -0
  100. package/core/built/admin/assets/chunk.582.db2ae9e968256e8d58ac.js +27 -0
  101. package/core/built/admin/assets/{chunk.901.4ccc639821020230bcca.js → chunk.972.4b8c97f93d66db15e751.js} +10625 -10088
  102. package/core/built/admin/assets/clean-tracked-url-dkN05vOf.js +1 -0
  103. package/core/built/admin/assets/code-editor-view-Bd_nnHKk.js +1 -0
  104. package/core/built/admin/assets/code-editor-view-BeU3Yf9M.js +1 -0
  105. package/core/built/admin/assets/color-picker-Bzm1V7qg.js +3 -0
  106. package/core/built/admin/assets/color-picker-field-DP0moHz9.js +1 -0
  107. package/core/built/admin/assets/combobox-6_ruuTuj.js +1 -0
  108. package/core/built/admin/assets/command-B5wfm6pd.js +1 -0
  109. package/core/built/admin/assets/comments-BB26dUSl.js +1 -0
  110. package/core/built/admin/assets/components-CwL6a6As-CCRaoCeP.js +1 -0
  111. package/core/built/admin/assets/{config-kSHvwdTG.js → config-BPljH6wF.js} +1 -1
  112. package/core/built/admin/assets/confirmation-context-znVJD4pX.js +1 -0
  113. package/core/built/admin/assets/container-CHHif8km.js +1 -0
  114. package/core/built/admin/assets/content-api-modal-DOHwl0yZ.js +1 -0
  115. package/core/built/admin/assets/context-menu-BpY46Dlb.js +1 -0
  116. package/core/built/admin/assets/copy-field-DRBx6Ady.js +1 -0
  117. package/core/built/admin/assets/create-ghost-browse-value-source-eIXo5Qws.js +1 -0
  118. package/core/built/admin/assets/{custom-field-type-option-BAuW0F-E.js → custom-field-type-option-DrSlETOI.js} +1 -1
  119. package/core/built/admin/assets/custom-integration-modal-Dgo425Ec.js +1 -0
  120. package/core/built/admin/assets/data-list-DM8yqpXi.js +1 -0
  121. package/core/built/admin/assets/date-range-select-DdC23c13.js +1 -0
  122. package/core/built/admin/assets/design-and-theme-modal-CbSu9IT4.js +2 -0
  123. package/core/built/admin/assets/detail-page-CN4NdhpV.js +1 -0
  124. package/core/built/admin/assets/dirty-confirm-dialog-BT_Vq9TD.js +1 -0
  125. package/core/built/admin/assets/disabled-sources-indicator-C5xtW0Q2.js +1 -0
  126. package/core/built/admin/assets/dist-B40T-RCQ.js +1 -0
  127. package/core/built/admin/assets/dist-BRQkNYN1.js +11 -0
  128. package/core/built/admin/assets/dist-Bm-PB47a.js +6 -0
  129. package/core/built/admin/assets/{dist-B6bJuxL3.js → dist-C2lYC76d.js} +1 -1
  130. package/core/built/admin/assets/dist-Cm2qbZKL.js +1 -0
  131. package/core/built/admin/assets/dist-CrlaEoaK.js +1 -0
  132. package/core/built/admin/assets/{dist-BtaTA7Ii.js → dist-D7yMk931.js} +1 -1
  133. package/core/built/admin/assets/{dist-zwwGt8Yf.js → dist-DNAdeRyr.js} +1 -1
  134. package/core/built/admin/assets/dist-DS6zpxid.js +1 -0
  135. package/core/built/admin/assets/dist-DVVKsyPh.js +23 -0
  136. package/core/built/admin/assets/dist-DxfQlAmn.js +1 -0
  137. package/core/built/admin/assets/dist-DziNzWI2.js +1 -0
  138. package/core/built/admin/assets/dist-nmRzULcD.js +1 -0
  139. package/core/built/admin/assets/domain-BPReCZa8.js +1 -0
  140. package/core/built/admin/assets/dropzone-B2auMkf2.js +5 -0
  141. package/core/built/admin/assets/edit-profile-B7XTBzKe.js +1 -0
  142. package/core/built/admin/assets/editor-BcaC9dqm.js +8 -0
  143. package/core/built/admin/assets/editor-screen-FuMpItC8.js +27 -0
  144. package/core/built/admin/assets/email-previews-Bs-JDhIw.js +1 -0
  145. package/core/built/admin/assets/email-sending-status-context-C76KYL1V.js +1 -0
  146. package/core/built/admin/assets/email-sending-status-provider-9d81o1C2.js +1 -0
  147. package/core/built/admin/assets/{emails-vFMk4yYl.js → emails-CgvIIz3q.js} +1 -1
  148. package/core/built/admin/assets/embed-signup-form-modal-CbVbMsxl.js +8 -0
  149. package/core/built/admin/assets/empty-indicator-CSQts7GV.js +1 -0
  150. package/core/built/admin/assets/esm--rhhUGIG.js +2 -0
  151. package/core/built/admin/assets/explore-DbSXFTJN.js +1 -0
  152. package/core/built/admin/assets/feature-flag-overrides-context-CrcQKm9Z.js +1 -0
  153. package/core/built/admin/assets/feature-image-placeholder-DFXA4vfJ.js +1 -0
  154. package/core/built/admin/assets/feed-W7RlF-Gp.js +1 -0
  155. package/core/built/admin/assets/feedback-BTPBQLT5.js +1 -0
  156. package/core/built/admin/assets/field-BXEh3ptU.js +1 -0
  157. package/core/built/admin/assets/filter-sources-DHK2IoCk.js +1 -0
  158. package/core/built/admin/assets/filters-0SYNTqyQ.js +1 -0
  159. package/core/built/admin/assets/filters-DTtZKQyq.js +1 -0
  160. package/core/built/admin/assets/first-promoter-modal-DcoN_OXu.js +1 -0
  161. package/core/built/admin/assets/focus-koenig-editor-on-bottom-click-CkFA8EkI.js +1 -0
  162. package/core/built/admin/assets/framework-provider-DB-svAju.js +4 -0
  163. package/core/built/admin/assets/{ghost-b4e8a403baba61905cd7560e30b9732d.js → ghost-25495154132af7305cb7b646fd83f48f.js} +580 -523
  164. package/core/built/admin/assets/gift-link-modal-BX-Q1TOk.js +1 -0
  165. package/core/built/admin/assets/{gift-links-CfLSnst2.js → gift-links-D8gl_yJS.js} +1 -1
  166. package/core/built/admin/assets/global-data-context-3MItMry2.js +1 -0
  167. package/core/built/admin/assets/grid-BEUIDQX7.js +1 -0
  168. package/core/built/admin/assets/growth-G6PLO4aF.js +1 -0
  169. package/core/built/admin/assets/growth-tkD-fBOY.js +3 -0
  170. package/core/built/admin/assets/heading-ih-fOVqF.js +1 -0
  171. package/core/built/admin/assets/history-modal-Ca-gStoq.js +1 -0
  172. package/core/built/admin/assets/hooks-DYfTEQLk.js +2 -0
  173. package/core/built/admin/assets/html-field-B3CrKV9Y.js +1 -0
  174. package/core/built/admin/assets/iframe-buffering-Bq1el-gw.js +1 -0
  175. package/core/built/admin/assets/images-H-BIm8OQ.js +1 -0
  176. package/core/built/admin/assets/{inbox-gJHG7_xd.js → inbox-DBbDVMPz.js} +35 -35
  177. package/core/built/admin/assets/index-DOF2jDq0.js +4 -0
  178. package/core/built/admin/assets/index-JrrNchW1.css +2 -0
  179. package/core/built/admin/assets/index.es-Ct5XQNSj.js +1 -0
  180. package/core/built/admin/assets/input-group-CvH-3d3F.js +1 -0
  181. package/core/built/admin/assets/input-surface-CL23Mlh8.js +1 -0
  182. package/core/built/admin/assets/integration-header-C7GXGis_.js +1 -0
  183. package/core/built/admin/assets/{integrations-B4kuRBFY.js → integrations-DnJrZnHv.js} +1 -1
  184. package/core/built/admin/assets/invite-user-modal-EJ2_6RpV.js +1 -0
  185. package/core/built/admin/assets/isPlainObject-BzzgUf1E.js +1 -0
  186. package/core/built/admin/assets/jsx-runtime-BlNNh7jY.js +1 -0
  187. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +3 -3
  188. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +1 -1
  189. package/core/built/admin/assets/{koenig-lexical-CGXb0F8o.js → koenig-lexical-Dkwee5FG.js} +1 -1
  190. package/core/built/admin/assets/koenig-loader-BzXCXHoA.js +2 -0
  191. package/core/built/admin/assets/kpi-card-iCDUTgOR.js +1 -0
  192. package/core/built/admin/assets/kpi-card-jTnpLKGr.js +1 -0
  193. package/core/built/admin/assets/kpi-helpers-Criu0YAf.js +1 -0
  194. package/core/built/admin/assets/kpi-tabs-DbOmmyOo.js +1 -0
  195. package/core/built/admin/assets/label-Du0yqMqL.js +1 -0
  196. package/core/built/admin/assets/label-picker-Bq1XXr1D.js +1 -0
  197. package/core/built/admin/assets/labels-0x2NfLtC.js +1 -0
  198. package/core/built/admin/assets/layout-Ckwzsnsu.js +1 -0
  199. package/core/built/admin/assets/lib-CCz2mjm8.js +2 -0
  200. package/core/built/admin/assets/link-helpers-o9GgBTni.js +1 -0
  201. package/core/built/admin/assets/links-Ctujreuh.js +1 -0
  202. package/core/built/admin/assets/list-page-CH_wnDC3.js +1 -0
  203. package/core/built/admin/assets/luxon-BXCsmep3.js +1 -0
  204. package/core/built/admin/assets/member-activity-CsAh6MxK.js +1 -0
  205. package/core/built/admin/assets/member-activity-feed-0ytsQbtY.js +1 -0
  206. package/core/built/admin/assets/member-custom-fields-CTFGnnYv.js +1 -0
  207. package/core/built/admin/assets/member-detail-QU3vB1ML.js +1 -0
  208. package/core/built/admin/assets/members-CtMVO_AB.js +4 -0
  209. package/core/built/admin/assets/modal-page-8Ipfl51B.js +1 -0
  210. package/core/built/admin/assets/moderation-B8VtA-W0.js +1 -0
  211. package/core/built/admin/assets/multi-select-combobox-_9wEYmGv.js +1 -0
  212. package/core/built/admin/assets/navigation-modal-CGcjJvkc.js +1 -0
  213. package/core/built/admin/assets/newsletter-BpHjjqmq.js +1 -0
  214. package/core/built/admin/assets/newsletter-detail-modal-DzTbGOyo.js +1 -0
  215. package/core/built/admin/assets/newsletter-emails-BMKH4Osp.js +1 -0
  216. package/core/built/admin/assets/newsletters-BxC84_cL.js +1 -0
  217. package/core/built/admin/assets/{newsletters-Rq1M3GD-.js → newsletters-Dz77m__5.js} +1 -1
  218. package/core/built/admin/assets/note-BPtEzzZS.js +1 -0
  219. package/core/built/admin/assets/notifications-ng3ulEdp.js +1 -0
  220. package/core/built/admin/assets/{nql-BLpCn7qX.js → nql-DnDc7UuU.js} +1 -1
  221. package/core/built/admin/assets/nql-lang-CeTB_Bhv.js +19 -0
  222. package/core/built/admin/assets/{offers--e2nGvkW.js → offers-ByWSK0rR.js} +1 -1
  223. package/core/built/admin/assets/offers-container-modal-CwqnRa3T.js +1 -0
  224. package/core/built/admin/assets/onboarding-B4hfBi9a.js +1 -0
  225. package/core/built/admin/assets/onboarding-DV_XbHts.js +1 -0
  226. package/core/built/admin/assets/onboarding-route-CplZzd7F.js +1 -0
  227. package/core/built/admin/assets/overview-B0yD9OoX.js +1 -0
  228. package/core/built/admin/assets/overview-C4eJzQqi.js +1 -0
  229. package/core/built/admin/assets/page-header-CdCpekG9.js +1 -0
  230. package/core/built/admin/assets/pagemenu-CKQD9hoP.js +1 -0
  231. package/core/built/admin/assets/{pages-CjDY2CBI.js → pages-DZ_YGB1D.js} +1 -1
  232. package/core/built/admin/assets/pages-route-CKsnxIvw.js +1 -0
  233. package/core/built/admin/assets/papaparse.min-BlhnCUXn.js +10 -0
  234. package/core/built/admin/assets/pintura-modal-C5jzeyGk.js +1 -0
  235. package/core/built/admin/assets/portal-frame-DYo0bh0E.js +1 -0
  236. package/core/built/admin/assets/portal-modal-C0d8xjKa.js +1 -0
  237. package/core/built/admin/assets/post-analytics-C5C7IyAm.js +1 -0
  238. package/core/built/admin/assets/post-analytics-context-bt2YTBAC.js +1 -0
  239. package/core/built/admin/assets/post-analytics-header-DKWHwoK2.js +1 -0
  240. package/core/built/admin/assets/post-analytics-provider-BqCPPxmW.js +1 -0
  241. package/core/built/admin/assets/post-share-modal-wxmqbAv_.js +1 -0
  242. package/core/built/admin/assets/posts-list-screen-B978ZO0R.js +2 -0
  243. package/core/built/admin/assets/posts-route-CDqxKazl.js +1 -0
  244. package/core/built/admin/assets/{posts-pCPrhQeR.js → posts-tcoO3iRG.js} +1 -1
  245. package/core/built/admin/assets/preferences-CnejTRc4.js +5 -0
  246. package/core/built/admin/assets/preview-chrome-C7yZWVLZ.js +1 -0
  247. package/core/built/admin/assets/preview-modal-CFUxUGHp.js +1 -0
  248. package/core/built/admin/assets/profile-ClRGiOqA.js +1 -0
  249. package/core/built/admin/assets/prop-types-6lTeqvom.js +1 -0
  250. package/core/built/admin/assets/radio-group-CTmLo0h9.js +1 -0
  251. package/core/built/admin/assets/react-BXwhMTuc.js +1 -0
  252. package/core/built/admin/assets/{jsx-runtime-DX3WBWVO.js → react-dom-CMOtJ5MH.js} +2 -2
  253. package/core/built/admin/assets/{referrers-D8oHPmDB.js → referrers-1R8bPpoV.js} +1 -1
  254. package/core/built/admin/assets/router-provider-DDZvgS3V.js +1 -0
  255. package/core/built/admin/assets/select-D_4xWFYv.js +1 -0
  256. package/core/built/admin/assets/settings-BRl7-7a9.js +1 -0
  257. package/core/built/admin/assets/settings-BoQcPa-y.js +4 -0
  258. package/core/built/admin/assets/settings-breadcrumbs-C9Yxl81q.js +1 -0
  259. package/core/built/admin/assets/{dist-B3keLvjj.js → shade-scope-Cccj-c7I-D0XwkdKQ.js} +5 -3
  260. package/core/built/admin/assets/share-modal-DBqZobuR.js +1 -0
  261. package/core/built/admin/assets/simple-pagination-D5t_ox6x.js +1 -0
  262. package/core/built/admin/assets/skeleton-CPcTiTSX.js +1 -0
  263. package/core/built/admin/assets/slack-modal-BF9ex8cd.js +1 -0
  264. package/core/built/admin/assets/sort-button-C0EXGjnS.js +1 -0
  265. package/core/built/admin/assets/source-icon-BzzftCQ2.js +1 -0
  266. package/core/built/admin/assets/{stats-D9PDLS3x.js → stats-Cvp8Ep5m.js} +1 -1
  267. package/core/built/admin/assets/stats-view-CzpGoHzF.js +1 -0
  268. package/core/built/admin/assets/step-1-CBUYUPPF.js +1 -0
  269. package/core/built/admin/assets/step-2-CEIXUwQa.js +1 -0
  270. package/core/built/admin/assets/step-3-C1HA5i1N.js +2 -0
  271. package/core/built/admin/assets/stripe-button-DMFsLs80.js +1 -0
  272. package/core/built/admin/assets/stripe-connect-modal-CEvxCUTv.js +1 -0
  273. package/core/built/admin/assets/switch-DoOJF2yg.js +1 -0
  274. package/core/built/admin/assets/table-BDYbUHJz.js +1 -0
  275. package/core/built/admin/assets/tabs-BZyz4ZCH.js +1 -0
  276. package/core/built/admin/assets/tag-detail-CFzaz_9E.js +2 -0
  277. package/core/built/admin/assets/tag-picker-BKUCZuRc.js +1 -0
  278. package/core/built/admin/assets/tags-Bs1FiD7m.js +1 -0
  279. package/core/built/admin/assets/{tags-ChfdwJyS.js → tags-NwZ7BPK6.js} +1 -1
  280. package/core/built/admin/assets/testimonials-modal-CVm0_7E-.js +1 -0
  281. package/core/built/admin/assets/text-BLI0C8Mc.js +1 -0
  282. package/core/built/admin/assets/textarea-C5qolByg.js +1 -0
  283. package/core/built/admin/assets/themes-DtcEFQWm.js +1 -0
  284. package/core/built/admin/assets/tier-detail-modal-Cmwzi-e7.js +1 -0
  285. package/core/built/admin/assets/{tiers-BCpIOGQr.js → tiers-6mPzCXlM.js} +1 -1
  286. package/core/built/admin/assets/toggle-group-BTL1QsWY.js +1 -0
  287. package/core/built/admin/assets/topic-filter-BMjhquv7.js +1 -0
  288. package/core/built/admin/assets/transistor-modal-hMv53jF8.js +1 -0
  289. package/core/built/admin/assets/trend-badge-1w_HEzkG.js +1 -0
  290. package/core/built/admin/assets/unsplash-modal-jzC8lEB2.js +1 -0
  291. package/core/built/admin/assets/use-analytics-data-B3lGOxsC.js +1 -0
  292. package/core/built/admin/assets/use-availability-DnKqOyqd.js +1 -0
  293. package/core/built/admin/assets/{use-check-theme-limit-error-DRUjK4YM.js → use-check-theme-limit-error-C1tc2P4N.js} +2 -2
  294. package/core/built/admin/assets/use-email-sending-status-DNMtL5B9.js +1 -0
  295. package/core/built/admin/assets/use-filter-params-DU-aiaTb.js +1 -0
  296. package/core/built/admin/assets/use-filterable-api-CxCrnPxG.js +1 -0
  297. package/core/built/admin/assets/use-form-DJKZJhQh.js +1 -0
  298. package/core/built/admin/assets/use-growth-stats-E13rMQUE.js +1 -0
  299. package/core/built/admin/assets/use-host-limits-mpTkZIq8.js +1 -0
  300. package/core/built/admin/assets/use-limiter-DlL7au90.js +19 -0
  301. package/core/built/admin/assets/use-navigate-with-base-path-BzgNwMAx.js +1 -0
  302. package/core/built/admin/assets/use-pintura-config-CtEV1JQY.js +1 -0
  303. package/core/built/admin/assets/use-pintura-editor-CaxE64kD.js +1 -0
  304. package/core/built/admin/assets/use-post-referrers-DyPjyBSN.js +1 -0
  305. package/core/built/admin/assets/use-query-params-DlOHCo-R.js +1 -0
  306. package/core/built/admin/assets/use-reply-chain-data-BST2OgCM.js +1 -0
  307. package/core/built/admin/assets/use-router-history-entry-CKx9LhqD.js +1 -0
  308. package/core/built/admin/assets/use-sending-eta-DR9ueMH8.js +1 -0
  309. package/core/built/admin/assets/use-setting-group-ldtX1Vsk.js +1 -0
  310. package/core/built/admin/assets/use-settings-navigation-CzGU4sus.js +1 -0
  311. package/core/built/admin/assets/use-staff-users-DoeXaPsb.js +1 -0
  312. package/core/built/admin/assets/use-tinybird-query-BaBNCaj0.js +1 -0
  313. package/core/built/admin/assets/use-tinybird-token-CnZ19NDf.js +1 -0
  314. package/core/built/admin/assets/use-unsaved-changes-guard-CKVPWz_F.js +1 -0
  315. package/core/built/admin/assets/use-upgrade-route-CVjDlNSs.js +1 -0
  316. package/core/built/admin/assets/{use-url-input-fvp-TpPx.js → use-url-input-C5KHJw79.js} +1 -1
  317. package/core/built/admin/assets/user-detail-modal-Dm0KfPeR.js +1 -0
  318. package/core/built/admin/assets/{users-DVNWrqg9.js → users-C60_hpn6.js} +1 -1
  319. package/core/built/admin/assets/{validator-Cr0sMKuW.js → validator-DlFQP70j.js} +1 -1
  320. package/core/built/admin/assets/{vendor-2dd263291938d407802568d3357ec69e.js → vendor-97e91ff8dd1457c668f9ef103ee1a77b.js} +2748 -2977
  321. package/core/built/admin/assets/virtual-list-tAuPUICw.js +1 -0
  322. package/core/built/admin/assets/web-BQlKcW2x.js +2 -0
  323. package/core/built/admin/assets/web-NTT5DkEz.js +1 -0
  324. package/core/built/admin/assets/zapier-modal-DsHG9Oev.js +1 -0
  325. package/core/built/admin/index.html +35 -34
  326. package/core/cli/command.js +17 -2
  327. package/core/frontend/apps/private-blogging/index.js +2 -2
  328. package/core/frontend/apps/private-blogging/lib/middleware.js +1 -1
  329. package/core/frontend/apps/private-blogging/lib/router.js +1 -1
  330. package/core/frontend/helpers/cancel_link.js +3 -3
  331. package/core/frontend/helpers/content.js +2 -2
  332. package/core/frontend/helpers/content_api_url.js +1 -1
  333. package/core/frontend/helpers/date.js +1 -1
  334. package/core/frontend/helpers/foreach.js +5 -5
  335. package/core/frontend/helpers/get.js +7 -4
  336. package/core/frontend/helpers/ghost_head.js +2 -2
  337. package/core/frontend/helpers/has.js +1 -3
  338. package/core/frontend/helpers/link.js +7 -7
  339. package/core/frontend/helpers/link_class.js +2 -2
  340. package/core/frontend/helpers/navigation.js +1 -2
  341. package/core/frontend/helpers/recommendations.js +5 -6
  342. package/core/frontend/helpers/tiers.js +1 -1
  343. package/core/frontend/helpers/total_members.js +1 -1
  344. package/core/frontend/helpers/total_paid_members.js +1 -1
  345. package/core/frontend/meta/asset-url.js +1 -16
  346. package/core/frontend/meta/author-url.js +1 -1
  347. package/core/frontend/meta/modified-date.js +1 -1
  348. package/core/frontend/meta/published-date.js +1 -1
  349. package/core/frontend/meta/schema.js +3 -8
  350. package/core/frontend/meta/structured-data.js +1 -2
  351. package/core/frontend/services/asset-hash/index.js +32 -2
  352. package/core/frontend/services/assets-minification/minifier.js +1 -1
  353. package/core/frontend/services/data/entry-lookup.js +1 -1
  354. package/core/frontend/services/data/fetch-data.js +2 -2
  355. package/core/frontend/services/rendering/format-response.js +1 -1
  356. package/core/frontend/services/rendering/renderer.js +3 -0
  357. package/core/frontend/services/rendering/templates.js +1 -1
  358. package/core/frontend/services/routing/controllers/static.js +1 -1
  359. package/core/frontend/services/routing/controllers/unsubscribe.js +2 -1
  360. package/core/frontend/services/routing/parent-router.js +1 -1
  361. package/core/frontend/services/routing/registry.js +1 -1
  362. package/core/frontend/services/rss/generate-feed.js +1 -1
  363. package/core/frontend/services/sitemap/base-site-map-generator.js +68 -97
  364. package/core/frontend/services/sitemap/site-map-index-generator.js +16 -21
  365. package/core/frontend/services/sitemap/site-map-manager.js +82 -43
  366. package/core/frontend/services/sitemap/sitemap-xml.js +72 -0
  367. package/core/frontend/services/theme-engine/active.js +2 -4
  368. package/core/frontend/services/theme-engine/handlebars/utils.js +8 -8
  369. package/core/frontend/services/theme-engine/i18n/i18n.js +15 -6
  370. package/core/frontend/services/theme-engine/i18next/theme-i18n.js +1 -1
  371. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +1 -1
  372. package/core/frontend/services/theme-engine/preview.js +1 -1
  373. package/core/frontend/utils/member-count.js +2 -2
  374. package/core/frontend/web/middleware/llms-discovery.js +34 -43
  375. package/core/frontend/web/routers/serve-public-file.js +1 -1
  376. package/core/server/adapters/route-settings/S3RouteSettingsStore.js +1 -1
  377. package/core/server/adapters/scheduling/README.md +4 -0
  378. package/core/server/adapters/scheduling/get-scheduler-idempotency-key.js +21 -0
  379. package/core/server/adapters/storage/LocalFilesStorage.js +12 -2
  380. package/core/server/adapters/storage/LocalStorageBase.js +15 -1
  381. package/core/server/api/endpoints/actions.js +2 -1
  382. package/core/server/api/endpoints/automated-emails.js +11 -4
  383. package/core/server/api/endpoints/automations.js +77 -49
  384. package/core/server/api/endpoints/db.js +1 -1
  385. package/core/server/api/endpoints/emails.js +11 -6
  386. package/core/server/api/endpoints/index.js +1 -1
  387. package/core/server/api/endpoints/invites.js +2 -1
  388. package/core/server/api/endpoints/labels.js +6 -2
  389. package/core/server/api/endpoints/mail.js +1 -1
  390. package/core/server/api/endpoints/member-metafields.js +2 -2
  391. package/core/server/api/endpoints/member-signin-urls.js +1 -1
  392. package/core/server/api/endpoints/members.js +23 -7
  393. package/core/server/api/endpoints/oembed.js +1 -1
  394. package/core/server/api/endpoints/pages.js +2 -6
  395. package/core/server/api/endpoints/posts.js +4 -12
  396. package/core/server/api/endpoints/settings.js +2 -2
  397. package/core/server/api/endpoints/snippets.js +2 -1
  398. package/core/server/api/endpoints/tags.js +6 -2
  399. package/core/server/api/endpoints/themes.js +5 -5
  400. package/core/server/api/endpoints/users.js +2 -6
  401. package/core/server/api/endpoints/utils/api-filter-utils.js +62 -3
  402. package/core/server/api/endpoints/utils/serializers/input/pages.js +2 -2
  403. package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -2
  404. package/core/server/api/endpoints/utils/serializers/input/tags.js +1 -1
  405. package/core/server/api/endpoints/utils/serializers/input/utils/slug-filter-order.js +4 -4
  406. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +8 -5
  407. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +1 -1
  408. package/core/server/api/endpoints/utils/serializers/output/pages.js +4 -4
  409. package/core/server/api/endpoints/utils/serializers/output/posts.js +4 -4
  410. package/core/server/api/endpoints/utils/serializers/output/search-index.js +11 -11
  411. package/core/server/api/endpoints/utils/serializers/output/settings.js +1 -1
  412. package/core/server/api/endpoints/utils/serializers/output/utils/clean.js +2 -0
  413. package/core/server/api/endpoints/utils/serializers/output/utils/extra-attrs.js +6 -3
  414. package/core/server/api/endpoints/utils/validators/input/automated_emails.js +23 -33
  415. package/core/server/api/endpoints/utils/validators/input/settings.js +18 -4
  416. package/core/server/data/exporter/exporter.js +3 -3
  417. package/core/server/data/exporter/table-lists.js +4 -5
  418. package/core/server/data/importer/handlers/image.js +1 -2
  419. package/core/server/data/importer/handlers/json.js +1 -3
  420. package/core/server/data/importer/handlers/markdown.js +4 -8
  421. package/core/server/data/importer/import-manager.js +1 -1
  422. package/core/server/data/importer/importers/content-file-importer.js +4 -8
  423. package/core/server/data/importer/importers/data/base.js +10 -10
  424. package/core/server/data/importer/importers/data/custom-theme-settings-importer.js +1 -1
  425. package/core/server/data/importer/importers/data/data-importer.js +3 -4
  426. package/core/server/data/importer/importers/data/posts-importer.js +10 -10
  427. package/core/server/data/importer/importers/data/products-importer.js +3 -3
  428. package/core/server/data/importer/importers/data/settings-importer.js +10 -4
  429. package/core/server/data/importer/importers/data/stripe-prices-importer.js +1 -1
  430. package/core/server/data/importer/importers/data/stripe-products-importer.js +1 -1
  431. package/core/server/data/importer/importers/data/tags-importer.js +1 -1
  432. package/core/server/data/importer/importers/data/users-importer.js +2 -2
  433. package/core/server/data/importer/importers/json-to-html.js +12 -9
  434. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +1 -1
  435. package/core/server/data/migrations/versions/6.64/2026-09-03-15-40-25-add-member-access-to-members-metafields.js +12 -0
  436. package/core/server/data/migrations/versions/6.64/2026-09-08-11-01-12-add-posts-auto-excerpt-and-reading-time-columns.js +17 -0
  437. package/core/server/data/migrations/versions/6.64/2026-09-09-13-56-18-add-automation-run-updated-at-indexes.js +6 -0
  438. package/core/server/data/migrations/versions/6.64/2026-09-09-13-56-18-add-tinybird-syncs-table.js +10 -0
  439. package/core/server/data/migrations/versions/6.65/2026-09-16-15-35-26-add-members-metafield-change-events.js +17 -0
  440. package/core/server/data/schema/fixtures/fixture-manager.js +3 -3
  441. package/core/server/data/schema/index.js +1 -1
  442. package/core/server/data/schema/schema.js +54 -2
  443. package/core/server/data/schema/validator.js +96 -123
  444. package/core/server/data/seeders/importers/automations-importer.js +0 -1
  445. package/core/server/data/seeders/importers/comments-importer.js +1 -1
  446. package/core/server/data/seeders/importers/email-recipients-importer.js +3 -3
  447. package/core/server/data/seeders/importers/emails-importer.js +1 -1
  448. package/core/server/data/seeders/importers/members-importer.js +1 -1
  449. package/core/server/data/seeders/importers/members-login-events-importer.js +2 -2
  450. package/core/server/data/seeders/importers/members-newsletters-importer.js +1 -1
  451. package/core/server/data/seeders/importers/members-paid-subscription-events-importer.js +1 -1
  452. package/core/server/data/seeders/importers/members-status-events-importer.js +1 -1
  453. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +1 -1
  454. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +2 -2
  455. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +2 -2
  456. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +1 -1
  457. package/core/server/data/seeders/utils/blog-info.js +4 -3
  458. package/core/server/data/seeders/utils/event-generator.js +72 -46
  459. package/core/server/data/tinybird/datasources/_mv_automation_run_steps.datasource +10 -0
  460. package/core/server/data/tinybird/datasources/_mv_automation_runs.datasource +10 -0
  461. package/core/server/data/tinybird/datasources/_mv_pending_automation_runs.datasource +10 -0
  462. package/core/server/data/tinybird/datasources/automation_run_events.datasource +12 -0
  463. package/core/server/data/tinybird/datasources/automation_run_step_events.datasource +12 -0
  464. package/core/server/data/tinybird/endpoints/api_automation_browse_stats.pipe +43 -0
  465. package/core/server/data/tinybird/fixtures/automation_run_events.ndjson +7 -0
  466. package/core/server/data/tinybird/fixtures/automation_run_step_events.ndjson +8 -0
  467. package/core/server/data/tinybird/pipes/mv_automation_run_steps.pipe +13 -0
  468. package/core/server/data/tinybird/pipes/mv_automation_runs.pipe +15 -0
  469. package/core/server/data/tinybird/pipes/mv_hits.pipe +25 -20
  470. package/core/server/data/tinybird/pipes/mv_pending_automation_runs.pipe +7 -0
  471. package/core/server/data/tinybird/scripts/docker-analytics-manager.js +2 -2
  472. package/core/server/data/tinybird/tests/api_automation_browse_stats.yaml +18 -0
  473. package/core/server/ghost-server.js +4 -22
  474. package/core/server/lib/generate-password.js +54 -0
  475. package/core/server/lib/image/image-size.js +1 -3
  476. package/core/server/lib/public-jwk.js +77 -0
  477. package/core/server/lib/request-external.js +53 -117
  478. package/core/server/models/base/plugins/actions.js +2 -3
  479. package/core/server/models/base/plugins/crud.js +1 -2
  480. package/core/server/models/base/plugins/events.js +4 -4
  481. package/core/server/models/base/plugins/raw-knex.js +3 -3
  482. package/core/server/models/base/plugins/sanitize.js +1 -1
  483. package/core/server/models/benefit.js +1 -1
  484. package/core/server/models/collection.js +1 -1
  485. package/core/server/models/comment.js +3 -3
  486. package/core/server/models/invite.js +2 -5
  487. package/core/server/models/label.js +3 -6
  488. package/core/server/models/member.js +7 -10
  489. package/core/server/models/newsletter.js +1 -1
  490. package/core/server/models/permission.js +3 -6
  491. package/core/server/models/post.js +20 -23
  492. package/core/server/models/product.js +4 -1
  493. package/core/server/models/relations/authors.js +9 -12
  494. package/core/server/models/role.js +2 -5
  495. package/core/server/models/settings.js +3 -3
  496. package/core/server/models/tag.js +2 -5
  497. package/core/server/models/user.js +19 -19
  498. package/core/server/models/webhook.js +2 -4
  499. package/core/server/notify.js +2 -2
  500. package/core/server/services/adapter-manager/base-classes.js +21 -3
  501. package/core/server/services/adapter-manager/utils.js +6 -1
  502. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +2 -2
  503. package/core/server/services/auth/api-key/admin.js +2 -2
  504. package/core/server/services/auth/api-key/content.js +1 -1
  505. package/core/server/services/auth/passwordreset.js +1 -1
  506. package/core/server/services/auth/setup.js +1 -3
  507. package/core/server/services/automations/README.md +19 -0
  508. package/core/server/services/automations/automations-api.js +46 -1
  509. package/core/server/services/automations/poll.js +3 -1
  510. package/core/server/services/automations/service.js +2 -2
  511. package/core/server/services/automations/tinybird-automation-stats.js +56 -0
  512. package/core/server/services/automations/welcome-email-automation-poll.js +199 -293
  513. package/core/server/services/comments/comments-controller.js +9 -30
  514. package/core/server/services/comments/comments-service-email-renderer.js +1 -1
  515. package/core/server/services/comments/comments-service-emails.js +1 -1
  516. package/core/server/services/comments/comments-service.js +27 -58
  517. package/core/server/services/comments/comments-stats-service.js +1 -1
  518. package/core/server/services/content-import/import/media.js +1 -1
  519. package/core/server/services/content-import/import/staged-file.js +9 -9
  520. package/core/server/services/content-import/index.js +1 -1
  521. package/core/server/services/custom-redirects/validation.js +1 -1
  522. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +38 -84
  523. package/core/server/services/email-analytics/email-analytics-service.js +19 -3
  524. package/core/server/services/email-analytics/index.js +44 -23
  525. package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.js +31 -60
  526. package/core/server/services/email-rendering/finalize.js +7 -2
  527. package/core/server/services/email-service/README.md +38 -0
  528. package/core/server/services/email-service/batch-sending-service.js +13 -14
  529. package/core/server/services/email-service/email-renderer.js +57 -16
  530. package/core/server/services/email-service/email-service-wrapper.js +4 -3
  531. package/core/server/services/email-service/email-service.js +76 -42
  532. package/core/server/services/email-service/email-templates/partials/feedback-button.hbs +2 -1
  533. package/core/server/services/email-service/email-templates/partials/styles.hbs +0 -6
  534. package/core/server/services/email-service/email-templates/template.hbs +1 -1
  535. package/core/server/services/email-service/jobs/send-email-job.js +12 -0
  536. package/core/server/services/email-service/mailgun-email-provider.js +7 -2
  537. package/core/server/services/email-service/sending-service.js +1 -1
  538. package/core/server/services/email-service/sending-status.js +10 -4
  539. package/core/server/services/gifts/gift-email-service.js +10 -3
  540. package/core/server/services/gifts/gift-service.js +12 -3
  541. package/core/server/services/gifts/index.js +1 -2
  542. package/core/server/services/gifts/jobs/index.js +12 -24
  543. package/core/server/services/gifts/jobs/send-gift-reminders-job.js +6 -46
  544. package/core/server/services/i18n.js +1 -1
  545. package/core/server/services/identity-tokens/identity-token-service-wrapper.js +3 -4
  546. package/core/server/services/invitations/accept.js +2 -2
  547. package/core/server/services/jobs/job-service.js +0 -28
  548. package/core/server/services/jobs-service/jobs-service.js +5 -0
  549. package/core/server/services/jobs-service/register-job-handlers.js +17 -1
  550. package/core/server/services/lib/mailgun-client.js +16 -1
  551. package/core/server/services/lib/mailgun-recipient-message-id.js +49 -0
  552. package/core/server/services/limits.js +18 -2
  553. package/core/server/services/mail/ghost-mailer.js +1 -1
  554. package/core/server/services/member-attribution/member-attribution-service.js +1 -1
  555. package/core/server/services/member-attribution/referrer-translator.js +1 -1
  556. package/core/server/services/member-welcome-emails/service.js +1 -1
  557. package/core/server/services/members/account-service.js +3 -3
  558. package/core/server/services/members/api.js +1 -1
  559. package/core/server/services/members/import-export/import/importer.js +25 -16
  560. package/core/server/services/members/import-export/import/spool.js +11 -15
  561. package/core/server/services/members/import-export/index.js +11 -8
  562. package/core/server/services/members/jobs/index.js +1 -1
  563. package/core/server/services/members/jobs/members-import-job.js +18 -0
  564. package/core/server/services/members/member-avatar.js +18 -0
  565. package/core/server/services/members/members-api/controllers/member-controller.js +2 -2
  566. package/core/server/services/members/members-api/controllers/router-controller.js +7 -2
  567. package/core/server/services/members/members-api/controllers/well-known-controller.js +2 -1
  568. package/core/server/services/members/members-api/members-api.js +4 -4
  569. package/core/server/services/members/members-api/repositories/event-repository.js +40 -1
  570. package/core/server/services/members/members-api/repositories/member-repository.js +55 -17
  571. package/core/server/services/members/members-api/repositories/product-repository.js +1 -1
  572. package/core/server/services/members/members-api/services/member-bread-service.js +19 -19
  573. package/core/server/services/members/members-api/services/token-service.js +11 -12
  574. package/core/server/services/members/middleware.js +9 -2
  575. package/core/server/services/members/request-integrity-token-provider.js +2 -1
  576. package/core/server/services/members/service.js +7 -2
  577. package/core/server/services/members/stats/members-stats.js +2 -2
  578. package/core/server/services/members-events/event-storage.js +2 -2
  579. package/core/server/services/members-metafields/access.js +31 -20
  580. package/core/server/services/members-metafields/actions.js +24 -2
  581. package/core/server/services/members-metafields/bindings-service.js +5 -5
  582. package/core/server/services/members-metafields/codec.js +9 -2
  583. package/core/server/services/members-metafields/definitions-service.js +57 -52
  584. package/core/server/services/members-metafields/index.js +3 -2
  585. package/core/server/services/members-metafields/models.js +2 -0
  586. package/core/server/services/members-metafields/queries.js +45 -11
  587. package/core/server/services/members-metafields/schema.js +51 -1
  588. package/core/server/services/members-metafields/serializers.js +1 -0
  589. package/core/server/services/members-metafields/values-service.js +132 -21
  590. package/core/server/services/mentions/mention-discovery-service.js +1 -1
  591. package/core/server/services/mentions/mention-sending-service.js +3 -3
  592. package/core/server/services/mentions/mention.js +4 -5
  593. package/core/server/services/mentions/mentions-api.js +4 -1
  594. package/core/server/services/mentions-jobs/job-service.js +0 -28
  595. package/core/server/services/milestones/milestones-service.js +1 -1
  596. package/core/server/services/newsletters/newsletters-service.js +1 -1
  597. package/core/server/services/notifications/notifications.js +3 -3
  598. package/core/server/services/oembed/oembed-service.js +115 -14
  599. package/core/server/services/permissions/can-this.js +1 -2
  600. package/core/server/services/post-scheduling/post-scheduling.js +8 -1
  601. package/core/server/services/posts/post-scheduling.js +27 -0
  602. package/core/server/services/settings/settings-bread-service.js +3 -3
  603. package/core/server/services/settings/settings-utils.js +1 -1
  604. package/core/server/services/settings-helpers/settings-helpers.js +1 -1
  605. package/core/server/services/staff/staff-service-emails.js +14 -10
  606. package/core/server/services/stats/posts-stats-service.js +10 -10
  607. package/core/server/services/stats/referrers-stats-service.js +1 -1
  608. package/core/server/services/stats/stats-service.js +12 -3
  609. package/core/server/services/stats/subscription-stats-service.js +3 -3
  610. package/core/server/services/stats/utils/tinybird.js +8 -1
  611. package/core/server/services/stripe/stripe-api.js +3 -3
  612. package/core/server/services/stripe/stripe-migrations.js +6 -6
  613. package/core/server/services/themes/storage.js +21 -26
  614. package/core/server/services/themes/theme-storage.js +2 -2
  615. package/core/server/services/tier-checkout-config/service.js +17 -1
  616. package/core/server/services/tiers/tier.js +15 -15
  617. package/core/server/services/tinybird/tinybird-service.js +1 -0
  618. package/core/server/services/tinybird-sync/get-ingest-config.js +39 -0
  619. package/core/server/services/tinybird-sync/index.js +31 -0
  620. package/core/server/services/tinybird-sync/sync-table-to-tinybird.js +149 -0
  621. package/core/server/services/tinybird-sync/tinybird-sync-service.js +67 -0
  622. package/core/server/services/update-check/update-check-service.js +3 -3
  623. package/core/server/services/webhooks/serialize.js +1 -1
  624. package/core/server/web/api/app.js +0 -5
  625. package/core/server/web/api/endpoints/admin/routes.js +33 -34
  626. package/core/server/web/api/middleware/upload.js +29 -2
  627. package/core/server/web/parent/middleware/index.js +1 -1
  628. package/core/server/web/parent/middleware/log-request.js +5 -0
  629. package/core/server/web/parent/middleware/queue-request.js +104 -59
  630. package/core/server/web/shared/middleware/api/spam-prevention.js +2 -2
  631. package/core/server/web/well-known.js +12 -16
  632. package/core/shared/config/defaults.json +7 -3
  633. package/core/shared/custom-theme-settings-cache/custom-theme-settings-service.js +1 -1
  634. package/core/shared/{flush-logs.js → flush.js} +7 -3
  635. package/core/shared/labs.js +5 -2
  636. package/core/shared/settings-cache/cache-manager.js +1 -1
  637. package/core/shared/timing-safe-string-equal.js +26 -0
  638. package/nodemon.json +1 -1
  639. package/package.json +47 -48
  640. package/patches/@elastic__elasticsearch@8.19.2.patch +67 -0
  641. package/patches/juice@11.1.1.patch +46 -0
  642. package/pnpm-lock.yaml +571 -2107
  643. package/pnpm-workspace.yaml +38 -28
  644. package/scripts/prune.mts +70 -3
  645. package/tsconfig.json +1 -1
  646. package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
  647. package/core/built/admin/assets/Combination-B0l4MKVh.js +0 -41
  648. package/core/built/admin/assets/RadialBarChart-JAKoS4KT.js +0 -1
  649. package/core/built/admin/assets/_baseAssignValue-C_vooEQc.js +0 -1
  650. package/core/built/admin/assets/about-C1C3s5-g.js +0 -1
  651. package/core/built/admin/assets/accordion-CxGsDKwa.js +0 -1
  652. package/core/built/admin/assets/account-migration-CbUhW6gk.js +0 -1
  653. package/core/built/admin/assets/action-list-C4v0-du8.js +0 -1
  654. package/core/built/admin/assets/activitypub/avatar-DVJF5bxP.js +0 -261
  655. package/core/built/admin/assets/activitypub/layout-BL4_jtuV.js +0 -1
  656. package/core/built/admin/assets/activitypub/routes-DdyY9uFF.js +0 -7181
  657. package/core/built/admin/assets/activitypub/settings-B6EEcVkW.js +0 -315
  658. package/core/built/admin/assets/activitypub/tabs-DLhZtVde.js +0 -1083
  659. package/core/built/admin/assets/activitypub/users-inweyKL5.js +0 -1499
  660. package/core/built/admin/assets/add-integration-modal-BT_onDJy.js +0 -1
  661. package/core/built/admin/assets/add-newsletter-modal-Cx1kQpiY.js +0 -1
  662. package/core/built/admin/assets/add-recommendation-modal-B5nvAhvr.js +0 -1
  663. package/core/built/admin/assets/analytics-DjoJWPI7.js +0 -1
  664. package/core/built/admin/assets/announcement-bar-modal-Dwd0EGFP.js +0 -1
  665. package/core/built/admin/assets/api-keys-BoeacM-s.js +0 -1
  666. package/core/built/admin/assets/automated-emails-BLesE41L.js +0 -1
  667. package/core/built/admin/assets/automations-BN4u3GR8.js +0 -1
  668. package/core/built/admin/assets/automations-C-ZTUwW3.js +0 -1
  669. package/core/built/admin/assets/avatar-flipboard-C6Kj3Awu.js +0 -1
  670. package/core/built/admin/assets/bluesky-sharing-vzh-oPXL.js +0 -1
  671. package/core/built/admin/assets/box-CdfQAP_F.js +0 -1
  672. package/core/built/admin/assets/brand-icon-CrIGOA3Z.js +0 -1
  673. package/core/built/admin/assets/breadcrumb-CaLk2b7D.js +0 -1
  674. package/core/built/admin/assets/build-CsiH26uS.js +0 -1
  675. package/core/built/admin/assets/button-Dvcv1QSR.js +0 -1
  676. package/core/built/admin/assets/calendar-Bl9RLcZX.js +0 -1
  677. package/core/built/admin/assets/card--VNbfgo3.js +0 -1
  678. package/core/built/admin/assets/chart-BrhA41Zi.js +0 -63
  679. package/core/built/admin/assets/chart-helpers-FHywU0pj.js +0 -1
  680. package/core/built/admin/assets/checkbox-BtayFtjg.js +0 -1
  681. package/core/built/admin/assets/chunk.524.e6975095fccdf22d90f8.js +0 -32
  682. package/core/built/admin/assets/chunk.582.98b485f9b2802f540897.js +0 -34
  683. package/core/built/admin/assets/code-editor-view-C3ZfoF1X.js +0 -1
  684. package/core/built/admin/assets/code-editor-view-CAyRWy1s.js +0 -1
  685. package/core/built/admin/assets/color-picker-G4kGR7rp.js +0 -3
  686. package/core/built/admin/assets/color-picker-field-DQFVTNnT.js +0 -1
  687. package/core/built/admin/assets/combobox-BnYzgEB4.js +0 -1
  688. package/core/built/admin/assets/command-C_vyTikI.js +0 -1
  689. package/core/built/admin/assets/comments-aBrxfnZf.js +0 -1
  690. package/core/built/admin/assets/components-CwL6a6As-B0E0-NBJ.js +0 -1
  691. package/core/built/admin/assets/confirmation-context-DwXX_Y5h.js +0 -1
  692. package/core/built/admin/assets/container-BuQG1wuP.js +0 -1
  693. package/core/built/admin/assets/content-api-modal-D2G0nJP6.js +0 -1
  694. package/core/built/admin/assets/context-menu-DOVB6yaz.js +0 -1
  695. package/core/built/admin/assets/copy-field-DCJwh9qf.js +0 -1
  696. package/core/built/admin/assets/create-ghost-browse-value-source-5C53jJaX.js +0 -1
  697. package/core/built/admin/assets/custom-integration-modal-AbJGVyKc.js +0 -1
  698. package/core/built/admin/assets/data-list-CA2jYGPq.js +0 -1
  699. package/core/built/admin/assets/date-range-select-BY3K-ukj.js +0 -1
  700. package/core/built/admin/assets/design-and-theme-modal-BvEy4_pC.js +0 -2
  701. package/core/built/admin/assets/detail-page-Dnv-CdR1.js +0 -1
  702. package/core/built/admin/assets/dirty-confirm-dialog-DVPuGz3U.js +0 -1
  703. package/core/built/admin/assets/disabled-sources-indicator-Cy7Zp4c8.js +0 -1
  704. package/core/built/admin/assets/dist-4m6pHdc0.js +0 -23
  705. package/core/built/admin/assets/dist-8YJUlf3B.js +0 -1
  706. package/core/built/admin/assets/dist-CZgIBXQN.js +0 -1
  707. package/core/built/admin/assets/dist-CiHx7vA5.js +0 -6
  708. package/core/built/admin/assets/dist-DIC8yz5C.js +0 -1
  709. package/core/built/admin/assets/dist-Dcsslyo72.js +0 -1
  710. package/core/built/admin/assets/dist-Dgt2cr6a.js +0 -1
  711. package/core/built/admin/assets/dist-ECAUrdGc.js +0 -1
  712. package/core/built/admin/assets/dist-JLOy8o0Q.js +0 -1
  713. package/core/built/admin/assets/dist-Ndy-PuGN.js +0 -1
  714. package/core/built/admin/assets/dist-Z97pCNqS.js +0 -11
  715. package/core/built/admin/assets/domain-Dl61QGuk.js +0 -1
  716. package/core/built/admin/assets/dropzone-Dtz5Rmjt.js +0 -5
  717. package/core/built/admin/assets/edit-profile-DNJSMDwm.js +0 -1
  718. package/core/built/admin/assets/editor-DbAen9zf.js +0 -8
  719. package/core/built/admin/assets/editor-screen-BFWThIai.js +0 -26
  720. package/core/built/admin/assets/email-sending-status-context-CWDOD1FN.js +0 -1
  721. package/core/built/admin/assets/email-sending-status-provider-DCPkDICt.js +0 -1
  722. package/core/built/admin/assets/embed-signup-form-modal-DGqsORxS.js +0 -8
  723. package/core/built/admin/assets/empty-indicator-D9QdpuNX.js +0 -1
  724. package/core/built/admin/assets/en-B1jX3WMs.js +0 -1
  725. package/core/built/admin/assets/esm-CXo5SEPy.js +0 -2
  726. package/core/built/admin/assets/explore-nnRr1Fja.js +0 -1
  727. package/core/built/admin/assets/feature-flag-overrides-context-DQjdJFAk.js +0 -1
  728. package/core/built/admin/assets/feature-image-placeholder-BrIHmPs8.js +0 -1
  729. package/core/built/admin/assets/feed-BNUcNu-W.js +0 -1
  730. package/core/built/admin/assets/feedback-DJ4Zb9rZ.js +0 -1
  731. package/core/built/admin/assets/field-C93_Mg6j.js +0 -1
  732. package/core/built/admin/assets/filter-bar-Da1qxybu.js +0 -1
  733. package/core/built/admin/assets/filter-sources-CGJb4C5r.js +0 -1
  734. package/core/built/admin/assets/filters--kKP-EC8.js +0 -1
  735. package/core/built/admin/assets/filters-DxA_a4FP.js +0 -1
  736. package/core/built/admin/assets/first-promoter-modal-BYDtrz2S.js +0 -1
  737. package/core/built/admin/assets/focus-koenig-editor-on-bottom-click-BbSnGOtK.js +0 -1
  738. package/core/built/admin/assets/framework-provider-DqI25epG.js +0 -4
  739. package/core/built/admin/assets/gift-link-modal-B7u5bD4e.js +0 -1
  740. package/core/built/admin/assets/global-data-context-gAMDH9u1.js +0 -1
  741. package/core/built/admin/assets/grid-Dj29PY05.js +0 -1
  742. package/core/built/admin/assets/growth-Cd1uO9d2.js +0 -1
  743. package/core/built/admin/assets/growth-aG32xfdE.js +0 -3
  744. package/core/built/admin/assets/heading-Dh5SFVjL.js +0 -1
  745. package/core/built/admin/assets/history-modal-Df8lW8h-.js +0 -1
  746. package/core/built/admin/assets/hooks-Cy_-oZ4o.js +0 -2
  747. package/core/built/admin/assets/html-field-DA4eU7eq.js +0 -1
  748. package/core/built/admin/assets/iframe-buffering-B2OKJzbz.js +0 -1
  749. package/core/built/admin/assets/images-KXmyO3Ss.js +0 -1
  750. package/core/built/admin/assets/index-BHHXtR5C.css +0 -2
  751. package/core/built/admin/assets/index-CgMCwsxN.js +0 -4
  752. package/core/built/admin/assets/index.es-CY6-yuw9.js +0 -1
  753. package/core/built/admin/assets/inline-BWSs_VzR.js +0 -1
  754. package/core/built/admin/assets/input-group-BE8rM2y1.js +0 -1
  755. package/core/built/admin/assets/input-surface-BsrIZeSF.js +0 -1
  756. package/core/built/admin/assets/integration-header-Bm6IDb1A.js +0 -1
  757. package/core/built/admin/assets/invite-user-modal-B4CuNcx4.js +0 -1
  758. package/core/built/admin/assets/koenig-loader-BeM5rFPX.js +0 -2
  759. package/core/built/admin/assets/kpi-card-B21aToe8.js +0 -1
  760. package/core/built/admin/assets/kpi-card-pz6Wv4Ae.js +0 -1
  761. package/core/built/admin/assets/kpi-helpers-Dq5jelmP.js +0 -1
  762. package/core/built/admin/assets/kpi-tabs-DEZHpKUt.js +0 -1
  763. package/core/built/admin/assets/label-OLCzze8N.js +0 -1
  764. package/core/built/admin/assets/label-picker-BigOvMPV.js +0 -1
  765. package/core/built/admin/assets/labels-Dr0SgUQD.js +0 -1
  766. package/core/built/admin/assets/layout-DUTL8SH5.js +0 -1
  767. package/core/built/admin/assets/lib-7QPTI0FS.js +0 -1
  768. package/core/built/admin/assets/limit-service-BhiEvqcP.js +0 -20
  769. package/core/built/admin/assets/link-helpers-BRAg9SCj.js +0 -1
  770. package/core/built/admin/assets/links-BDHPTlyj.js +0 -1
  771. package/core/built/admin/assets/list-page-BucXJ0hi.js +0 -1
  772. package/core/built/admin/assets/luxon-D1RVjjpq.js +0 -1
  773. package/core/built/admin/assets/member-custom-fields-TRTHCAz9.js +0 -1
  774. package/core/built/admin/assets/member-detail-b6dRwc3C.js +0 -1
  775. package/core/built/admin/assets/members-Czt5lJSc.js +0 -4
  776. package/core/built/admin/assets/modal-page-xCivTMvI.js +0 -1
  777. package/core/built/admin/assets/moderation-ZWefD9uH.js +0 -1
  778. package/core/built/admin/assets/multi-select-combobox-CT13MTo-.js +0 -1
  779. package/core/built/admin/assets/navigation-modal-C8FEhBK5.js +0 -1
  780. package/core/built/admin/assets/newsletter-5VYW4RyJ.js +0 -1
  781. package/core/built/admin/assets/newsletter-detail-modal-ChjC0ZqH.js +0 -1
  782. package/core/built/admin/assets/newsletter-emails-DZH6I-PY.js +0 -1
  783. package/core/built/admin/assets/newsletters-DOC9KBcX.js +0 -1
  784. package/core/built/admin/assets/note-DIV-Pojr.js +0 -1
  785. package/core/built/admin/assets/notifications-s20-H49V.js +0 -1
  786. package/core/built/admin/assets/nql-lang-CaWrLesS.js +0 -19
  787. package/core/built/admin/assets/offers-container-modal-BmG5M5Tv.js +0 -1
  788. package/core/built/admin/assets/onboarding-CUuy9unR.js +0 -1
  789. package/core/built/admin/assets/onboarding-pXyct0Jm.js +0 -1
  790. package/core/built/admin/assets/onboarding-route-CK4pcXoR.js +0 -1
  791. package/core/built/admin/assets/overview-CaPsciMs.js +0 -1
  792. package/core/built/admin/assets/overview-a8GfcsKX.js +0 -1
  793. package/core/built/admin/assets/page-header-DM_KyoFI.js +0 -1
  794. package/core/built/admin/assets/pagemenu-vgZVUVKR.js +0 -1
  795. package/core/built/admin/assets/pages-route-BzKZYdV5.js +0 -1
  796. package/core/built/admin/assets/papaparse.min-cQwnxGCG.js +0 -10
  797. package/core/built/admin/assets/pintura-modal-DExCF1ii.js +0 -1
  798. package/core/built/admin/assets/portal-frame-Cqanidq4.js +0 -1
  799. package/core/built/admin/assets/portal-modal-oinBgA27.js +0 -1
  800. package/core/built/admin/assets/post-analytics-C5oJ1dWV.js +0 -1
  801. package/core/built/admin/assets/post-analytics-context-D0Mw-Pmv.js +0 -1
  802. package/core/built/admin/assets/post-analytics-header-OATo3X_r.js +0 -1
  803. package/core/built/admin/assets/post-analytics-provider-tOpIVGT5.js +0 -1
  804. package/core/built/admin/assets/post-share-modal-DvhC1XgV.js +0 -1
  805. package/core/built/admin/assets/posts-list-screen-o4ZjbgS3.js +0 -2
  806. package/core/built/admin/assets/posts-route-9F--xdIb.js +0 -1
  807. package/core/built/admin/assets/preferences--vNubsqD.js +0 -5
  808. package/core/built/admin/assets/preview-chrome-BljUBlOk.js +0 -1
  809. package/core/built/admin/assets/preview-modal-YYbzlYdO.js +0 -1
  810. package/core/built/admin/assets/profile-BllKV3dR.js +0 -1
  811. package/core/built/admin/assets/prop-types-DeUPn3oD.js +0 -1
  812. package/core/built/admin/assets/radio-group-DL8GI8rt.js +0 -1
  813. package/core/built/admin/assets/react-Bb3IsNbi.js +0 -1
  814. package/core/built/admin/assets/rolldown-runtime-DAXXjFlN.js +0 -1
  815. package/core/built/admin/assets/router-provider-BSvTXgZY.js +0 -1
  816. package/core/built/admin/assets/select-v5YbA3Mw.js +0 -1
  817. package/core/built/admin/assets/settings-PEsZupw1.js +0 -4
  818. package/core/built/admin/assets/settings-breadcrumbs-NwPnCTC7.js +0 -1
  819. package/core/built/admin/assets/settings-u_s1CRkr.js +0 -1
  820. package/core/built/admin/assets/shade-app-CcS3f8MZ-vwURazk8.js +0 -3
  821. package/core/built/admin/assets/share-modal-SskCmVGL.js +0 -1
  822. package/core/built/admin/assets/skeleton-Ce9GgUpf.js +0 -1
  823. package/core/built/admin/assets/slack-modal-XxSJiYgo.js +0 -1
  824. package/core/built/admin/assets/sort-button-Cx1KtINE.js +0 -1
  825. package/core/built/admin/assets/source-icon-Bdp9Im_5.js +0 -1
  826. package/core/built/admin/assets/stack-B2eszIiq.js +0 -1
  827. package/core/built/admin/assets/stats-view-W2g6Jsd-.js +0 -1
  828. package/core/built/admin/assets/step-1-BQYzvBzr.js +0 -1
  829. package/core/built/admin/assets/step-2-xES32xJV.js +0 -1
  830. package/core/built/admin/assets/step-3-DA_XK5kW.js +0 -2
  831. package/core/built/admin/assets/stripe-button-CVsLHelt.js +0 -1
  832. package/core/built/admin/assets/stripe-connect-modal-ClmLOMGS.js +0 -1
  833. package/core/built/admin/assets/switch-CI4gLWqb.js +0 -1
  834. package/core/built/admin/assets/table-BenqVupI.js +0 -1
  835. package/core/built/admin/assets/tabs-eBBlxPp8.js +0 -1
  836. package/core/built/admin/assets/tag-detail-Ce8Se2qd.js +0 -2
  837. package/core/built/admin/assets/tag-picker-C3UR-uJ-.js +0 -1
  838. package/core/built/admin/assets/tags-B-kJxCs7.js +0 -1
  839. package/core/built/admin/assets/testimonials-modal-9Q6fT06V.js +0 -1
  840. package/core/built/admin/assets/text-BQDSDsKs.js +0 -1
  841. package/core/built/admin/assets/textarea-DJ1Q5V39.js +0 -1
  842. package/core/built/admin/assets/tier-detail-modal-CDyYdqK7.js +0 -1
  843. package/core/built/admin/assets/toggle-group-CviIkyok.js +0 -1
  844. package/core/built/admin/assets/topic-filter-I2jCBGxm.js +0 -1
  845. package/core/built/admin/assets/transistor-modal-p53u3W8y.js +0 -1
  846. package/core/built/admin/assets/trend-badge-CideVzQd.js +0 -1
  847. package/core/built/admin/assets/types-uYQ1HgqL.js +0 -1
  848. package/core/built/admin/assets/unsplash-modal-DY8UcKcE.js +0 -1
  849. package/core/built/admin/assets/use-analytics-data-DAIGcr2f.js +0 -1
  850. package/core/built/admin/assets/use-filter-params-JkZhIS8L.js +0 -1
  851. package/core/built/admin/assets/use-filterable-api-BVEVMrhZ.js +0 -1
  852. package/core/built/admin/assets/use-form-vRjI0Kwk.js +0 -1
  853. package/core/built/admin/assets/use-growth-stats-937CUj6j.js +0 -1
  854. package/core/built/admin/assets/use-host-limits-D0Dv3tKA.js +0 -1
  855. package/core/built/admin/assets/use-limiter-CohWfzvK.js +0 -2
  856. package/core/built/admin/assets/use-navigate-with-base-path-BkxcPj5l.js +0 -1
  857. package/core/built/admin/assets/use-pintura-config-xgytjU35.js +0 -1
  858. package/core/built/admin/assets/use-pintura-editor-CaV1mbfO.js +0 -1
  859. package/core/built/admin/assets/use-post-referrers-BCQI7fDg.js +0 -1
  860. package/core/built/admin/assets/use-query-params-BfzuqbcD.js +0 -1
  861. package/core/built/admin/assets/use-reply-chain-data-CYRhoaxY.js +0 -1
  862. package/core/built/admin/assets/use-router-history-entry-NOKcd--l.js +0 -1
  863. package/core/built/admin/assets/use-setting-group-bLKMwoBT.js +0 -1
  864. package/core/built/admin/assets/use-settings-navigation-B-qrriKD.js +0 -1
  865. package/core/built/admin/assets/use-simple-pagination-CNPd6Rf6.js +0 -1
  866. package/core/built/admin/assets/use-staff-users-pRIMIyiW.js +0 -1
  867. package/core/built/admin/assets/use-tinybird-query-CmdbCS9X.js +0 -1
  868. package/core/built/admin/assets/use-tinybird-token-KLne235s.js +0 -1
  869. package/core/built/admin/assets/use-unsaved-changes-guard-7-ug0JdH.js +0 -1
  870. package/core/built/admin/assets/use-upgrade-route-Dm_qqKr0.js +0 -1
  871. package/core/built/admin/assets/user-detail-modal-D3KlGYv-.js +0 -1
  872. package/core/built/admin/assets/virtual-list-CZ3RK2Yf.js +0 -1
  873. package/core/built/admin/assets/web-ClEJsCAj.js +0 -2
  874. package/core/built/admin/assets/web-X9rdnrtq.js +0 -1
  875. package/core/built/admin/assets/zapier-modal-DfVhV17j.js +0 -1
  876. package/core/frontend/services/sitemap/utils.js +0 -17
  877. package/core/server/services/automations/get-scheduler-idempotency-key.js +0 -13
  878. package/core/server/web/api/testmode/index.js +0 -1
  879. package/core/server/web/api/testmode/jobs/cpu-hog.js +0 -15
  880. package/core/server/web/api/testmode/jobs/graceful-job.js +0 -50
  881. package/core/server/web/api/testmode/jobs/say-hello.js +0 -17
  882. package/core/server/web/api/testmode/routes.js +0 -120
  883. /package/core/built/admin/assets/{chunk.901.4ccc639821020230bcca.js.LICENSE.txt → chunk.972.4b8c97f93d66db15e751.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ import{i as e,s as t,t as n}from"./react-BXwhMTuc.js";import{p as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{t as a}from"./use-tinybird-query-BaBNCaj0.js";import{r as o}from"./posts-tcoO3iRG.js";import{s}from"./config-BPljH6wF.js";import{t as c}from"./analytics-53FOa2wq.js";import{H as l}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as u}from"./button-D414TI3B.js";import{t as d}from"./badge-CI1Z0xyG.js";import{Gn as f,Hn as p,Jn as m,Kn as h,Mi as g,S as _,Si as v,Wn as y,qn as b}from"./index-DOF2jDq0.js";import{t as x}from"./share-modal-DBqZobuR.js";import{r as S}from"./pages-DZ_YGB1D.js";import{n as C,r as w}from"./gift-links-D8gl_yJS.js";var T=t(n(),1);function E(e,t){return!e||!t?``:`${e}?gift=${encodeURIComponent(t)}`}var D={members:`members-only`,paid:`paid-members-only`,tiers:`paid-members-only`};function O(e){return e&&D[e]||``}var k=({postUuid:e,token:t,tokenLoading:n=!1,tokenError:r=null,enabled:i=!0})=>{let{data:o,isLoading:c}=s(),l=o?.config?.stats,{isLoading:u}=v(),d=g(),f=(0,T.useMemo)(()=>({site_uuid:l?.id||``,post_uuid:e||``,gift_link:t||``}),[l?.id,e,t]),{data:p,loading:m,error:h}=a({endpoint:`api_gift_link_visits`,statsConfig:l||{id:``},params:f,enabled:i&&d&&!!l?.id&&!!e&&!!t}),_=m||c||u||n,y=h||r||null;return{usage:(0,T.useMemo)(()=>{if(!d||!t||y||!Array.isArray(p))return;let e=p[0];return{visits:Number(e?.visits)||0,views:Number(e?.views)||0}},[p,t,y,d]),loading:_,error:y}},A=({postId:e,resource:t=`posts`,enabled:n=!0})=>{let r=t===`posts`,{data:i,isLoading:a}=o({searchParams:{filter:`id:${e}`,include:_},enabled:n&&r}),{data:s,isLoading:c}=S({searchParams:{filter:`id:${e}`},enabled:n&&!r});if(r){let e=i?.posts?.[0];return{post:e&&{url:e.url,title:e.title,visibility:e.visibility,uuid:e.uuid},isLoading:a}}let l=s?.pages?.[0];return{post:l&&{url:l.url,title:l.title,visibility:l.visibility,uuid:l.uuid},isLoading:c}},j=e({default:()=>P}),M=i();function N(e){return e===0?`No visitors yet`:`${l(e)} ${e===1?`visitor`:`visitors`}`}var P=({open:e,onOpenChange:t,postId:n,resource:i=`posts`,source:a})=>{let o=r(),{mutateAsync:s}=w(),{mutateAsync:l}=C(),{post:g}=A({postId:n,resource:i,enabled:e}),[_,v]=(0,T.useState)(void 0),[S,D]=(0,T.useState)(`idle`),[O,j]=(0,T.useState)(!1),[P,F]=(0,T.useState)(!1),I=(0,T.useRef)(null),L=(0,T.useRef)(null),{usage:R}=k({postUuid:g?.uuid,token:_,enabled:e});(0,T.useEffect)(()=>{if(!e){L.current=null,F(!1);return}let t=L.current;(t?.postId!==n||t.resource!==i)&&(t={postId:n,resource:i,request:s({id:n,resource:i})},L.current=t);let r=!1;return F(!0),t.request.then(e=>{r||v(e.gift_links[0]?.token)}).catch(e=>{r||o(e)}).finally(()=>{r||F(!1)}),()=>{r=!0}},[e,n,i,s,o]),(0,T.useEffect)(()=>{S===`confirm`&&I.current?.focus()},[S]);let z=i===`pages`?`page`:`post`,B=g?.visibility??`unknown`,V=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!e){V.current=!1;return}V.current||!g||(V.current=!0,c(`Gift Link Modal Opened`,{postType:z,visibility:B,source:a}))},[e,g,z,B,a]);let H=E(g?.url,_),U=`Anyone you share this link with will be able to access this ${z} without becoming a ${g?.visibility===`members`?`member`:`paid member`}.`,W=(0,T.useCallback)(async()=>{if(!O){j(!0);try{let e=await l({id:n,resource:i});v(e.gift_links[0]?.token),D(`idle`),c(`Gift Link Reset`,{postType:z,visibility:B,source:a})}catch(e){o(e)}finally{j(!1)}}},[O,l,n,i,o,z,B,a]),G=(0,T.useCallback)(e=>{e||D(`idle`),t(e)},[t]);return(0,M.jsx)(p,{open:e,onOpenChange:G,children:(0,M.jsxs)(y,{className:`max-w-lg gap-5`,children:[S===`idle`&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(b,{className:`gap-3`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(m,{className:`text-xl leading-none`,children:`Gift link`}),R&&(0,M.jsx)(d,{"data-testid":`gift-link-views`,variant:`secondary`,children:N(R.visits)})]}),(0,M.jsx)(f,{className:`text-sm leading-5`,children:U})]}),(0,M.jsx)(x.CopyURLBox,{className:`w-full min-w-0`,copyURL:P?`Generating link…`:H,children:(0,M.jsx)(x.CopyButton,{className:`shrink-0`,copyURL:H,"data-testid":`copy-gift-link`,disabled:P||!H,icon:`link`,size:`sm`,onClick:()=>c(`Gift Link Copied`,{postType:z,visibility:B,source:a})})}),(0,M.jsxs)(h,{className:`sm:items-center sm:justify-between`,children:[(0,M.jsx)(u,{className:`border-destructive/20 text-destructive hover:border-destructive hover:bg-transparent hover:text-destructive dark:border-state-danger/50 dark:text-state-danger dark:hover:border-state-danger dark:hover:bg-transparent dark:hover:text-state-danger`,"data-testid":`reset-gift-link`,disabled:!H,variant:`outline`,onClick:()=>D(`confirm`),children:`Reset`}),(0,M.jsx)(u,{variant:`outline`,onClick:()=>G(!1),children:`Close`})]})]}),S===`confirm`&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(b,{children:[(0,M.jsx)(m,{children:`Reset gift link`}),(0,M.jsxs)(f,{children:[`Are you sure you want to reset this link? Anyone with the current link will lose access to this `,z,`.`]})]}),(0,M.jsxs)(h,{children:[(0,M.jsx)(u,{ref:I,disabled:O,variant:`outline`,onClick:()=>D(`idle`),children:`Cancel`}),(0,M.jsx)(u,{"data-testid":`confirm-reset-gift-link`,disabled:O,variant:`destructive`,onClick:()=>{W()},children:O?`Resetting`:`Reset link`})]})]})]})})};export{O as i,j as n,k as r,P as t};
@@ -1 +1 @@
1
- import{i as e,n as t}from"./hooks-Cy_-oZ4o.js";var n=`GiftLinksResponseType`,r=({id:e,resource:t=`posts`})=>`/${t}/${e}/gift_links/`,i=e({dataType:n,path:e=>r({id:e})}),a=(e,t)=>{let n=i(e,t),r=n.data?.gift_links?.[0];return{...n,giftLink:r,token:r?.token}},o=t({method:`PUT`,path:r,invalidateQueries:{dataType:n}}),s=t({method:`POST`,path:r,invalidateQueries:{dataType:n}}),c=t({method:`PUT`,path:()=>`/gift_links/remove_all/`,invalidateQueries:{dataType:n}});export{c as i,s as n,o as r,a as t};
1
+ import{i as e,n as t}from"./hooks-DYfTEQLk.js";var n=`GiftLinksResponseType`,r=({id:e,resource:t=`posts`})=>`/${t}/${e}/gift_links/`,i=e({dataType:n,path:e=>r({id:e})}),a=(e,t)=>{let n=i(e,t),r=n.data?.gift_links?.[0];return{...n,giftLink:r,token:r?.token}},o=t({method:`PUT`,path:r,invalidateQueries:{dataType:n}}),s=t({method:`POST`,path:r,invalidateQueries:{dataType:n}}),c=t({method:`PUT`,path:()=>`/gift_links/remove_all/`,invalidateQueries:{dataType:n}});export{c as i,s as n,o as r,a as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";var n=e(t(),1),r=(0,n.createContext)(void 0),i=()=>(0,n.useContext)(r);export{i as n,r as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{L as r}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{ei as i,ni as a,ti as o}from"./index-DOF2jDq0.js";var s=e(t(),1),c=n(),l={1:`grid-cols-1`,2:`grid-cols-2`,3:`grid-cols-3`,4:`grid-cols-4`,5:`grid-cols-5`,6:`grid-cols-6`,12:`grid-cols-12`},u=s.forwardRef(function({className:e,columns:t=1,gap:n=`md`,align:s=`stretch`,justify:u=`start`,...d},f){return(0,c.jsx)(`div`,{ref:f,className:r(`grid`,l[t],o[n],i[s],a[u],e),...d})});u.displayName=`Grid`;export{u as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{i as r,n as i,t as a}from"./source-icon-BzzftCQ2.js";import{h as o}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as s}from"./router-provider-DDZvgS3V.js";import{H as c,L as l}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{Bn as u,L as d,c as f,g as p,t as m,u as h}from"./button-D414TI3B.js";import{n as g,t as _}from"./skeleton-CPcTiTSX.js";import{a as v,i as y,n as b,o as x,r as S,t as C}from"./card-C2dfd5u0.js";import{t as w}from"./empty-indicator-CSQts7GV.js";import{a as T,c as E,n as D,r as O,s as k,t as A}from"./table-BDYbUHJz.js";import{Di as j,cn as M,dn as ee,fn as N,ki as P,ln as F,m as I,sn as L,un as R,yn as z}from"./index-DOF2jDq0.js";import{t as B}from"./disabled-sources-indicator-C5xtW0Q2.js";import{t as V}from"./chart-helpers-Czu_9QpJ.js";import{t as te}from"./use-analytics-data-B3lGOxsC.js";import{a as H,i as U,n as W,r as G,t as K}from"./kpi-card-iCDUTgOR.js";import{r as q,t as J}from"./post-analytics-header-DKWHwoK2.js";import{t as Y}from"./use-post-referrers-DyPjyBSN.js";var X=e(t(),1),Z=n(),Q=`https://www.google.com/s2/favicons?domain=ghost.org&sz=64`,$=({headerStyle:e=`table`,children:t=`Source`,data:n,mode:r,defaultSourceIconUrl:i=Q})=>{let o=P();if(r===`growth`)return(0,Z.jsxs)(A,{children:[(0,Z.jsx)(k,{children:(0,Z.jsxs)(E,{children:[(0,Z.jsx)(T,{className:`min-w-[320px]`,variant:e===`table`?`default`:`cardhead`,children:t}),(0,Z.jsx)(T,{className:`w-[110px] text-right`,children:`Free members`}),o&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(T,{className:`w-[110px] text-right`,children:`Paid members`}),(0,Z.jsx)(T,{className:`w-[100px] text-right`,children:`MRR impact`})]})]})}),(0,Z.jsx)(D,{children:n?.map(e=>(0,Z.jsxs)(E,{className:`last:border-none`,children:[(0,Z.jsx)(O,{children:e.linkUrl?(0,Z.jsxs)(`a`,{className:`group flex items-center gap-2`,href:e.linkUrl,rel:`noreferrer`,target:`_blank`,children:[(0,Z.jsx)(a,{defaultSourceIconUrl:i,displayName:e.displayName,iconSrc:e.iconSrc}),(0,Z.jsx)(`span`,{className:`group-hover:underline`,children:e.displayName})]}):(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(a,{defaultSourceIconUrl:i,displayName:e.displayName,iconSrc:e.iconSrc}),(0,Z.jsx)(`span`,{children:e.displayName})]})}),(0,Z.jsxs)(O,{className:`text-right font-mono text-sm`,children:[`+`,c(e.free_members||0)]}),o&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(O,{className:`text-right font-mono text-sm`,children:[`+`,c(e.paid_members||0)]}),(0,Z.jsxs)(O,{className:`text-right font-mono text-sm`,children:[`+$`,c(V(e.mrr||0))]})]})]},e.source))})]})},ne=({title:e=`Top sources`,description:t,data:n,mode:a=`visits`,range:o=30,totalVisitors:s=0,siteUrl:c,siteIcon:u,defaultSourceIconUrl:f=Q,getPeriodText:h,className:g})=>{let _=j(),T=X.useMemo(()=>r({data:n,mode:a,siteUrl:c,siteIcon:u,defaultSourceIconUrl:f}),[n,c,u,a,f]),E=X.useMemo(()=>i({processedData:T,totalVisitors:s,mode:a}),[T,s,a]),D=E.slice(0,10),O=t||(a===`growth`?`Where did your growth come from?`:`How readers found your ${o?`site`:`post`}${o&&h?` ${h(o)}`:``}`),k=a===`growth`?`Sources`:`Top sources`,A=a===`growth`?`Where did your growth come from?`:`How readers found your ${o?`site`:`post`}${o&&h?` ${h(o)}`:``}`;return(0,Z.jsxs)(C,{className:l(`group/datalist w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]`,g),"data-testid":`top-sources-card`,children:[D.length<=0&&(0,Z.jsxs)(v,{children:[(0,Z.jsx)(x,{children:e}),(0,Z.jsx)(S,{children:O})]}),(0,Z.jsx)(b,{children:a===`growth`&&!_?(0,Z.jsx)(B,{className:`py-10`}):D.length>0?(0,Z.jsx)($,{data:D,defaultSourceIconUrl:f,getPeriodText:h,headerStyle:`card`,mode:a,range:o,children:(0,Z.jsxs)(v,{children:[(0,Z.jsx)(x,{children:e}),(0,Z.jsx)(S,{children:O})]})}):(0,Z.jsx)(`div`,{className:`py-20 text-center text-sm text-gray-700`,children:(0,Z.jsx)(w,{className:`h-full`,description:a===`growth`&&`Once someone signs up on this post, sources will show here`,title:`No sources data available ${h?h(o):``}`,children:(0,Z.jsx)(p,{strokeWidth:1.5})})})}),E.length>10&&(0,Z.jsx)(y,{children:(0,Z.jsxs)(L,{children:[(0,Z.jsx)(N,{asChild:!0,children:(0,Z.jsxs)(m,{variant:`subtle`,children:[`View all `,(0,Z.jsx)(d,{})]})}),(0,Z.jsxs)(M,{className:`overflow-y-auto pt-0 sm:max-w-[420px]`,children:[(0,Z.jsxs)(R,{className:`sticky top-0 z-40 -mx-6 bg-surface-elevated/60 p-6 backdrop-blur`,children:[(0,Z.jsx)(ee,{children:k}),(0,Z.jsx)(F,{children:A})]}),(0,Z.jsx)(`div`,{className:`group/datalist`,children:(0,Z.jsx)($,{data:E,defaultSourceIconUrl:f,getPeriodText:h,mode:a,range:o})})]})]})})]})},re=()=>{let{site:e}=te(),{postId:t}=o(),{stats:n,totals:r,isLoading:i,currencySymbol:a}=Y(t||``),l=P(),d=s(),p=e=>d(I({filter:e})),m=e.url,y=e.icon,w=`flex flex-col items-stretch gap-6`,T=``;return l||(w=`grid grid-cols-1 border rounded-md`,T=`border-none hover:shadow-none`),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(J,{currentTab:`Growth`}),(0,Z.jsx)(q,{children:i?(0,Z.jsxs)(`div`,{className:w,children:[(0,Z.jsx)(C,{className:T,children:(0,Z.jsx)(b,{className:`grid grid-cols-3 p-0`,children:Array.from({length:3},(e,t)=>(0,Z.jsxs)(`div`,{className:`h-[98px] gap-1 border-r px-6 py-5 last:border-r-0`,children:[(0,Z.jsx)(_,{className:`w-2/3`}),(0,Z.jsx)(_,{className:`h-7 w-12`})]},t))})}),(0,Z.jsxs)(C,{className:T,children:[(0,Z.jsxs)(v,{children:[(0,Z.jsx)(x,{children:`Top sources`}),(0,Z.jsx)(S,{children:`Where did your growth come from?`})]}),(0,Z.jsxs)(b,{children:[(0,Z.jsx)(z,{}),(0,Z.jsx)(g,{className:`pt-6`})]})]})]}):(0,Z.jsxs)(`div`,{className:w,children:[(0,Z.jsxs)(C,{className:T,"data-testid":`members-card`,children:[(0,Z.jsxs)(v,{className:`hidden`,children:[(0,Z.jsx)(x,{children:`Newsletters`}),(0,Z.jsx)(S,{children:`How did this post perform`})]}),(0,Z.jsx)(b,{className:`p-0`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col md:grid md:items-stretch ${l?`md:grid-cols-3`:`md:grid-cols-1`}`,children:[(0,Z.jsxs)(K,{className:`grow`,children:[(0,Z.jsx)(U,{onClick:()=>{p(`signup:'${t}'+conversion:-'${t}'`)},children:`View members →`}),(0,Z.jsxs)(G,{onClick:()=>{p(`signup:'${t}'+conversion:-'${t}'`)},children:[(0,Z.jsx)(h,{strokeWidth:1.5}),`Free members`]}),(0,Z.jsx)(W,{children:(0,Z.jsx)(H,{children:c(r?.free_members||0)})})]}),l&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(K,{className:`grow`,children:[(0,Z.jsx)(U,{onClick:()=>{p(`conversion:'${t}'`)},children:`View members →`}),(0,Z.jsxs)(G,{onClick:()=>{p(`conversion:'${t}'`)},children:[(0,Z.jsx)(f,{strokeWidth:1.5}),`Paid members`]}),(0,Z.jsx)(W,{children:(0,Z.jsx)(H,{children:c(r?.paid_members||0)})})]}),(0,Z.jsxs)(K,{className:`grow`,children:[(0,Z.jsxs)(G,{children:[(0,Z.jsx)(u,{strokeWidth:1.5}),`MRR`]}),(0,Z.jsx)(W,{children:(0,Z.jsxs)(H,{children:[`+`,a,V(r?.mrr||0)]})})]})]})]})})]}),!l&&(0,Z.jsx)(z,{}),(0,Z.jsx)(ne,{className:T,data:n,mode:`growth`,siteIcon:y,siteUrl:m})]})})]})};export{re as default};
@@ -0,0 +1,3 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{i as r}from"./pagemenu-CKQD9hoP.js";import{i}from"./currency-Dy4Tc2R2.js";import{r as a,t as o}from"./source-icon-BzzftCQ2.js";import{_ as s}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as c}from"./router-provider-DDZvgS3V.js";import{H as l,R as u,X as d,Y as f,Z as p,z as m}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{C as h}from"./isPlainObject-BzzgUf1E.js";import{$ as g,C as _,E as v,I as y,J as b,K as x,P as S,Q as C,S as w,Y as T,Z as ee,_ as te,a as E,at as ne,b as re,ct as ie,dt as ae,et as oe,g as se,i as ce,it as D,n as le,nt as ue,ot as O,r as de,st as fe,ut as pe,w as me,x as he,y as ge}from"./chart-B_UNLXse.js";import{n as _e,t as ve}from"./PolarAngleAxis-BBaU7PRV.js";import{a as ye,i as be,o as xe,r as Se}from"./trend-badge-1w_HEzkG.js";import{n as Ce,t as k}from"./sort-button-C0EXGjnS.js";import{L as we,On as Te,cr as Ee,lr as De,or as Oe,t as ke}from"./button-D414TI3B.js";import{i as Ae,n as je,o as Me,s as Ne,t as Pe}from"./select-D_4xWFYv.js";import{i as Fe,r as Ie,t as Le}from"./tabs-BZyz4ZCH.js";import{t as Re}from"./skeleton-CPcTiTSX.js";import{a as ze,n as Be,o as Ve,r as He,t as A}from"./card-C2dfd5u0.js";import{t as j}from"./empty-indicator-CSQts7GV.js";import{a as M,c as N,i as Ue,n as P,r as F,s as We,t as Ge}from"./table-BDYbUHJz.js";import{Di as Ke,O as qe,Qn as Je,T as I,Tn as Ye,cn as Xe,cr as Ze,dn as Qe,er as $e,fn as et,ki as L,ln as tt,nr as R,sn as nt,un as rt,y as it,yn as at}from"./index-DOF2jDq0.js";import{n as ot,r as z,t as st}from"./kpi-tabs-DbOmmyOo.js";import{i as ct,n as lt,r as ut,t as dt}from"./stats-view-CzpGoHzF.js";import{t as ft}from"./disabled-sources-indicator-C5xtW0Q2.js";import{h as pt,i as mt,p as ht}from"./stats-Cvp8Ep5m.js";import{a as gt,c as B,i as V,n as H,r as _t,s as vt,t as U}from"./chart-helpers-Czu_9QpJ.js";import{t as yt}from"./use-growth-stats-E13rMQUE.js";import{t as bt}from"./use-analytics-data-B3lGOxsC.js";import{n as xt}from"./audience-wRcSN0jV.js";import{n as St}from"./referrers-1R8bPpoV.js";import{a as Ct}from"./tiers-6mPzCXlM.js";import{i as wt,r as Tt,t as W}from"./content-helpers-CNBPrwsi.js";import{t as Et}from"./url-helpers-DcQbx-Xg.js";import{t as Dt}from"./get-site-timezone-HgL0jI_F.js";var G=e(t()),Ot=e(ae()),kt=e(y()),K=e(pe()),q=e(h()),At;function J(e){"@babel/helpers - typeof";return J=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},J(e)}function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Y.apply(this,arguments)}function jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function X(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?jt(Object(n),!0).forEach(function(t){Z(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Mt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function Nt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,Ht(r.key),r)}}function Pt(e,t,n){return t&&Nt(e.prototype,t),n&&Nt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Ft(e,t,n){return t=zt(t),It(e,Rt()?Reflect.construct(t,n||[],zt(e).constructor):t.apply(e,n))}function It(e,t){if(t&&(J(t)===`object`||typeof t==`function`))return t;if(t!==void 0)throw TypeError(`Derived constructors may only return object or undefined`);return Lt(e)}function Lt(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function Rt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Rt=function(){return!!e})()}function zt(e){return zt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},zt(e)}function Bt(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Vt(e,t)}function Vt(e,t){return Vt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Vt(e,t)}function Z(e,t,n){return t=Ht(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ht(e){var t=Ut(e,`string`);return J(t)==`symbol`?t:t+``}function Ut(e,t){if(J(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(J(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Q=function(e){function t(e){var n;return Mt(this,t),n=Ft(this,t,[e]),Z(n,`pieRef`,null),Z(n,`sectorRefs`,[]),Z(n,`id`,ie(`recharts-pie-`)),Z(n,`handleAnimationEnd`,function(){var e=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),(0,q.default)(e)&&e()}),Z(n,`handleAnimationStart`,function(){var e=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),(0,q.default)(e)&&e()}),n.state={isAnimationFinished:!e.isAnimationActive,prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,sectorToFocus:0},n}return Bt(t,e),Pt(t,[{key:`isActiveIndex`,value:function(e){var t=this.props.activeIndex;return Array.isArray(t)?t.indexOf(e)!==-1:e===t}},{key:`hasActiveIndex`,value:function(){var e=this.props.activeIndex;return Array.isArray(e)?e.length!==0:e||e===0}},{key:`renderLabels`,value:function(e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var n=this.props,r=n.label,i=n.labelLine,a=n.dataKey,o=n.valueKey,s=g(this.props,!1),c=g(r,!1),l=g(i,!1),u=r&&r.offsetRadius||20,d=e.map(function(e,n){var d=(e.startAngle+e.endAngle)/2,f=v(e.cx,e.cy,e.outerRadius+u,d),p=X(X(X(X({},s),e),{},{stroke:`none`},c),{},{index:n,textAnchor:t.getTextAnchor(f.x,e.cx)},f),m=X(X(X(X({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:n,points:[v(e.cx,e.cy,e.outerRadius,d),f]}),h=a;return(0,K.default)(a)&&(0,K.default)(o)?h=`value`:(0,K.default)(a)&&(h=o),G.createElement(C,{key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${n}`},i&&t.renderLabelLineItem(i,m,`line`),t.renderLabelItem(r,p,S(e,h)))});return G.createElement(C,{className:`recharts-pie-labels`},d)}},{key:`renderSectorsStatically`,value:function(e){var t=this,n=this.props,r=n.activeShape,i=n.blendStroke,a=n.inactiveShape;return e.map(function(n,o){if(n?.startAngle===0&&n?.endAngle===0&&e.length!==1)return null;var s=t.isActiveIndex(o),c=a&&t.hasActiveIndex()?a:null,l=s?r:c,u=X(X({},n),{},{stroke:i?n.fill:n.stroke,tabIndex:-1});return G.createElement(C,Y({ref:function(e){e&&!t.sectorRefs.includes(e)&&t.sectorRefs.push(e)},tabIndex:-1,className:`recharts-pie-sector`},ue(t.props,n,o),{key:`sector-${n?.startAngle}-${n?.endAngle}-${n.midAngle}-${o}`}),G.createElement(te,Y({option:l,isActive:s,shapeType:`sector`},u)))})}},{key:`renderSectorsWithAnimation`,value:function(){var e=this,t=this.props,n=t.sectors,r=t.isAnimationActive,i=t.animationBegin,a=t.animationDuration,o=t.animationEasing,s=t.animationId,c=this.state,l=c.prevSectors,u=c.prevIsAnimationActive;return G.createElement(ge,{begin:i,duration:a,isActive:r,easing:o,from:{t:0},to:{t:1},key:`pie-${s}-${u}`,onAnimationStart:this.handleAnimationStart,onAnimationEnd:this.handleAnimationEnd},function(t){var r=t.t,i=[],a=(n&&n[0]).startAngle;return n.forEach(function(e,t){var n=l&&l[t],o=t>0?(0,Ot.default)(e,`paddingAngle`,0):0;if(n){var s=ne(n.endAngle-n.startAngle,e.endAngle-e.startAngle),c=X(X({},e),{},{startAngle:a+o,endAngle:a+s(r)+o});i.push(c),a=c.endAngle}else{var u=e.endAngle,d=e.startAngle,f=ne(0,u-d)(r),p=X(X({},e),{},{startAngle:a+o,endAngle:a+f+o});i.push(p),a=p.endAngle}}),G.createElement(C,null,e.renderSectorsStatically(i))})}},{key:`attachKeyboardHandlers`,value:function(e){var t=this;e.onkeydown=function(e){if(!e.altKey)switch(e.key){case`ArrowLeft`:var n=++t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[n].focus(),t.setState({sectorToFocus:n});break;case`ArrowRight`:var r=--t.state.sectorToFocus<0?t.sectorRefs.length-1:t.state.sectorToFocus%t.sectorRefs.length;t.sectorRefs[r].focus(),t.setState({sectorToFocus:r});break;case`Escape`:t.sectorRefs[t.state.sectorToFocus].blur(),t.setState({sectorToFocus:0});break;default:}}}},{key:`renderSectors`,value:function(){var e=this.props,t=e.sectors,n=e.isAnimationActive,r=this.state.prevSectors;return n&&t&&t.length&&(!r||!(0,kt.default)(r,t))?this.renderSectorsWithAnimation():this.renderSectorsStatically(t)}},{key:`componentDidMount`,value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:`render`,value:function(){var e=this,t=this.props,n=t.hide,r=t.sectors,i=t.className,a=t.label,o=t.cx,s=t.cy,c=t.innerRadius,l=t.outerRadius,u=t.isAnimationActive,d=this.state.isAnimationFinished;if(n||!r||!r.length||!O(o)||!O(s)||!O(c)||!O(l))return null;var f=p(`recharts-pie`,i);return G.createElement(C,{tabIndex:this.props.rootTabIndex,className:f,ref:function(t){e.pieRef=t}},this.renderSectors(),a&&this.renderLabels(r),w.renderCallByParent(this.props,null,!1),(!u||d)&&he.renderCallByParent(this.props,r,!1))}}],[{key:`getDerivedStateFromProps`,value:function(e,t){return t.prevIsAnimationActive===e.isAnimationActive?e.isAnimationActive&&e.animationId!==t.prevAnimationId?{prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:t.curSectors,isAnimationFinished:!0}:e.sectors===t.curSectors?null:{curSectors:e.sectors,isAnimationFinished:!0}:{prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:[],isAnimationFinished:!0}}},{key:`getTextAnchor`,value:function(e,t){return e>t?`start`:e<t?`end`:`middle`}},{key:`renderLabelLineItem`,value:function(e,t,n){if(G.isValidElement(e))return G.cloneElement(e,t);if((0,q.default)(e))return e(t);var r=p(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className);return G.createElement(re,Y({},t,{key:n,type:`linear`,className:r}))}},{key:`renderLabelItem`,value:function(e,t,n){if(G.isValidElement(e))return G.cloneElement(e,t);var r=n;if((0,q.default)(e)&&(r=e(t),G.isValidElement(r)))return r;var i=p(`recharts-pie-label-text`,typeof e!=`boolean`&&!(0,q.default)(e)?e.className:``);return G.createElement(x,Y({},t,{alignmentBaseline:`middle`,className:i}),r)}}])}(G.PureComponent);At=Q,Z(Q,`displayName`,`Pie`),Z(Q,`defaultProps`,{stroke:`#fff`,fill:`#808080`,legendType:`rect`,cx:`50%`,cy:`50%`,startAngle:0,endAngle:360,innerRadius:0,outerRadius:`80%`,paddingAngle:0,labelLine:!0,hide:!1,minAngle:0,isAnimationActive:!T.isSsr,animationBegin:400,animationDuration:1500,animationEasing:`ease`,nameKey:`name`,blendStroke:!1,rootTabIndex:0}),Z(Q,`parseDeltaAngle`,function(e,t){return fe(t-e)*Math.min(Math.abs(t-e),360)}),Z(Q,`getRealPieData`,function(e){var t=e.data,n=e.children,r=g(e,!1),i=oe(n,b);return t&&t.length?t.map(function(e,t){return X(X(X({payload:e},r),e),i&&i[t]&&i[t].props)}):i&&i.length?i.map(function(e){return X(X({},r),e.props)}):[]}),Z(Q,`parseCoordinateOfPie`,function(e,t){var n=t.top,r=t.left,i=t.width,a=t.height,o=me(i,a);return{cx:r+D(e.cx,i,i/2),cy:n+D(e.cy,a,a/2),innerRadius:D(e.innerRadius,o,0),outerRadius:D(e.outerRadius,o,o*.8),maxRadius:e.maxRadius||Math.sqrt(i*i+a*a)/2}}),Z(Q,`getComposedData`,function(e){var t=e.item,n=e.offset,r=t.type.defaultProps===void 0?t.props:X(X({},t.type.defaultProps),t.props),i=At.getRealPieData(r);if(!i||!i.length)return null;var a=r.cornerRadius,o=r.startAngle,s=r.endAngle,c=r.paddingAngle,l=r.dataKey,u=r.nameKey,d=r.valueKey,f=r.tooltipType,p=Math.abs(r.minAngle),m=At.parseCoordinateOfPie(r,n),h=At.parseDeltaAngle(o,s),g=Math.abs(h),_=l;(0,K.default)(l)&&(0,K.default)(d)?(ee(!1,`Use "dataKey" to specify the value of pie,
2
+ the props "valueKey" will be deprecated in 1.1.0`),_=`value`):(0,K.default)(l)&&(ee(!1,`Use "dataKey" to specify the value of pie,
3
+ the props "valueKey" will be deprecated in 1.1.0`),_=d);var y=i.filter(function(e){return S(e,_,0)!==0}).length,b=(g>=360?y:y-1)*c,x=g-y*p-b,C=i.reduce(function(e,t){var n=S(t,_,0);return e+(O(n)?n:0)},0),w;if(C>0){var T;w=i.map(function(e,t){var n=S(e,_,0),r=S(e,u,t),i=(O(n)?n:0)/C,s=t?T.endAngle+fe(h)*c*(n===0?0:1):o,l=s+fe(h)*((n===0?0:p)+i*x),d=(s+l)/2,g=(m.innerRadius+m.outerRadius)/2;return T=X(X(X({percent:i,cornerRadius:a,name:r,tooltipPayload:[{name:r,value:n,payload:e,dataKey:_,type:f}],midAngle:d,middleRadius:g,tooltipPosition:v(m.cx,m.cy,g,d)},e),m),{},{value:S(e,_),startAngle:s,endAngle:l,payload:e,paddingAngle:fe(h)*c}),T})}return X(X({},m),{},{sectors:w,data:i})});var Wt=E({chartName:`PieChart`,GraphicalChild:Q,validateTooltipEventTypes:[`item`],defaultTooltipEventType:`item`,legendContent:`children`,axisComponents:[{axisType:`angleAxis`,AxisComp:ve},{axisType:`radiusAxis`,AxisComp:_e}],formatAxisMap:_,defaultProps:{layout:`centric`,startAngle:0,endAngle:360,cx:`50%`,cy:`50%`,innerRadius:0,outerRadius:`80%`}}),$=n(),Gt=e=>e===`total-members`||e===`free-members`||e===`paid-members`||e===`mrr`,Kt=({active:e,payload:t,range:n,color:r,showBreakdown:i})=>{if(!e||!t?.length)return null;let a=t[0].payload,{date:o,formattedValue:s,label:c,comped:u,gift:d}=a,f=a.value-(u||0)-(d||0);return(0,$.jsxs)(`div`,{className:`min-w-[200px] rounded-lg border bg-background px-3 py-2 shadow-lg`,children:[o&&(0,$.jsx)(`div`,{className:`mb-1 text-sm text-foreground`,children:m(o,n||0)}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Paid subscriptions`}),(0,$.jsx)(`div`,{className:`font-mono text-xs`,children:l(f)})]})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Gift subscriptions`}),(0,$.jsx)(`div`,{className:`font-mono text-xs`,children:d!==void 0&&d>0?l(d):`0`})]})}),(0,$.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Complimentary`}),(0,$.jsx)(`div`,{className:`font-mono text-xs`,children:u!==void 0&&u>0?l(u):`0`})]})}),(0,$.jsx)(at,{})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`inline-block size-2 rounded-full opacity-50`,style:{backgroundColor:r||`var(--chart-purple)`}}),(0,$.jsxs)(`div`,{className:`flex grow items-center justify-between gap-5`,children:[c&&(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:c}),(0,$.jsx)(`div`,{className:`font-mono font-medium`,children:s})]})]})]})]})},qt=({chartData:e,totals:t,initialTab:n,currencySymbol:r,isLoading:i,onTabChange:a})=>{let o=Gt(n)?n:`total-members`,[u,d]=(0,G.useState)(o),{range:f}=qe(),p=L(),m=c(),[h]=s();(0,G.useEffect)(()=>{d(o)},[o]);let g=e=>{d(e);let t=new URLSearchParams(h);t.set(`tab`,e),m(`?${t.toString()}`,{replace:!0}),a&&a(e)},{totalMembers:_,freeMembers:v,paidMembers:y,mrr:b,percentChanges:x,directions:S}=t,{chartData:C,chartRange:w}=(0,G.useMemo)(()=>{if(!e||e.length===0)return{chartData:[],chartRange:f};let t=[],n=`value`;switch(u){case`free-members`:n=`free`;break;case`paid-members`:n=`paid`;break;case`mrr`:n=`mrr`;break;default:n=`value`}t=B(e,f,n,`exact`);let i=[];switch(u){case`free-members`:i=t.map(e=>({...e,value:e.free,formattedValue:l(e.free),label:`Free members`}));break;case`paid-members`:i=t.map(e=>({...e,value:e.paid,formattedValue:l(e.paid),label:`Paid members`,comped:e.comped,gift:e.gift,paid_subscribed:e.paid_subscribed}));break;case`mrr`:i=t.map(e=>({...e,value:U(e.mrr),formattedValue:`${r}${l(U(e.mrr))}`,label:`MRR`}));break;default:i=t.map(e=>{let t=e.free+e.paid;return{...e,value:t,formattedValue:l(t),label:`Total members`}})}return{chartData:i,chartRange:_t(f,e,{fieldName:n})}},[u,e,f,r]),T={"total-members":{color:`var(--chart-darkblue)`},"free-members":{color:`var(--chart-blue)`},"paid-members":{color:`var(--chart-purple)`},mrr:{color:`var(--chart-teal)`}};return i?(0,$.jsx)(`div`,{className:`-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center`,children:(0,$.jsx)(Ye,{})}):(0,$.jsxs)(Le,{defaultValue:o,variant:`kpis`,children:[(0,$.jsxs)(Ie,{className:`-mx-6 ${p?`hidden grid-cols-4 lg:visible! lg:grid!`:`grid grid-cols-4`}`,children:[(0,$.jsx)(ot,{className:p?``:`cursor-auto after:hidden`,value:`total-members`,onClick:()=>{p&&g(`total-members`)},children:(0,$.jsx)(z,{color:`var(--chart-darkblue)`,diffDirection:f===I.allTime.value?`hidden`:S.total,diffValue:x.total,label:`Total members`,value:l(_)})}),p&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ot,{value:`free-members`,onClick:()=>{g(`free-members`)},children:(0,$.jsx)(z,{color:`var(--chart-blue)`,diffDirection:f===I.allTime.value?`hidden`:S.free,diffValue:x.free,label:`Free members`,value:l(v)})}),(0,$.jsx)(ot,{value:`paid-members`,onClick:()=>{g(`paid-members`)},children:(0,$.jsx)(z,{color:`var(--chart-purple)`,diffDirection:f===I.allTime.value?`hidden`:S.paid,diffValue:x.paid,label:`Paid members`,value:l(y)})}),(0,$.jsx)(ot,{value:`mrr`,onClick:()=>{g(`mrr`)},children:(0,$.jsx)(z,{color:`var(--chart-teal)`,diffDirection:f===I.allTime.value?`hidden`:S.mrr,diffValue:x.mrr,label:`MRR`,value:`${r}${l(U(b))}`})})]})]}),p&&(0,$.jsxs)(Je,{children:[(0,$.jsx)(Ze,{className:`lg:hidden`,asChild:!0,children:(0,$.jsxs)(st,{children:[u===`total-members`&&(0,$.jsx)(z,{color:`var(--chart-darkblue)`,diffDirection:f===I.allTime.value?`hidden`:S.total,diffValue:x.total,label:`Total members`,value:l(_)}),u===`free-members`&&(0,$.jsx)(z,{color:`var(--chart-blue)`,diffDirection:f===I.allTime.value?`hidden`:S.free,diffValue:x.free,label:`Free members`,value:l(v)}),u===`paid-members`&&(0,$.jsx)(z,{color:`var(--chart-purple)`,diffDirection:f===I.allTime.value?`hidden`:S.paid,diffValue:x.paid,label:`Paid members`,value:l(y)}),u===`mrr`&&(0,$.jsx)(z,{color:`var(--chart-teal)`,diffDirection:f===I.allTime.value?`hidden`:S.mrr,diffValue:x.mrr,label:`MRR`,value:`${r}${l(U(b))}`})]})}),(0,$.jsxs)($e,{align:`end`,className:`w-56`,children:[(0,$.jsx)(R,{onClick:()=>g(`total-members`),children:`Total members`}),(0,$.jsx)(R,{onClick:()=>g(`free-members`),children:`Free members`}),(0,$.jsx)(R,{onClick:()=>g(`paid-members`),children:`Paid members`}),(0,$.jsx)(R,{onClick:()=>g(`mrr`),children:`MRR`})]})]}),(0,$.jsx)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:(0,$.jsx)(Se,{className:`-mb-3 h-[16vw] max-h-[320px] w-full min-h-[180px]`,color:T[u].color,data:C,dataFormatter:u===`mrr`?e=>`${r}${l(e)}`:l,id:u,range:w,tooltipContent:u===`paid-members`?(0,$.jsx)(Kt,{color:T[`paid-members`].color,range:w,showBreakdown:!0}):void 0})})]})},Jt=(e,t=`signups desc`,n=50)=>{let{startDate:r,endDate:i,timezone:a}=gt(e),o={date_from:H(r),date_to:H(i),member_status:xt(it),order:t,limit:n.toString()};return a&&(o.timezone=a),St({searchParams:o})},Yt=({data:e,currencySymbol:t,limit:n,defaultSourceIconUrl:r})=>{let i=n?e.slice(0,n):e,a=L();return(0,$.jsx)(P,{children:i.map(e=>(0,$.jsxs)(N,{className:`last:border-none`,children:[(0,$.jsx)(F,{className:`font-medium`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(o,{defaultSourceIconUrl:r,displayName:e.displayName,iconSrc:e.iconSrc}),e.linkUrl?(0,$.jsx)(`a`,{className:`hover:underline`,href:e.linkUrl,rel:`noreferrer`,target:`_blank`,children:e.displayName}):(0,$.jsx)(`span`,{children:e.displayName})]})}),(0,$.jsxs)(F,{className:`text-right font-mono text-sm`,children:[`+`,l(e.free_members)]}),a&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(F,{className:`text-right font-mono text-sm`,children:[`+`,l(e.paid_members)]}),(0,$.jsxs)(F,{className:`text-right font-mono text-sm`,children:[`+`,t,l(U(e.mrr))]})]})]},e.source))})},Xt=({range:e,limit:t=20,showViewAll:n=!1,sortBy:r,setSortBy:o})=>{let{site:s}=bt(),{data:c}=mt(),l=L(),u=Ke(),[d,f]=(0,G.useState)(`free_members desc`),p=r||d,m=o||f,{data:h,isLoading:g}=Jt(e,p.replace(`free_members`,`signups`).replace(`paid_members`,`paid_conversions`),t),_=s.url,v=`https://www.google.com/s2/favicons?domain=ghost.org&sz=64`,y=G.useMemo(()=>{if(c?.stats&&c?.meta?.totals){let e=c.meta.totals,t=e[0];if(!t)return i(`usd`);for(let n of e)n.mrr>t.mrr&&(t=n);return i(t.currency)}return i(`usd`)},[c]),b=G.useMemo(()=>h?.stats?h.stats.map(e=>{let t=e.source||`Direct`,{domain:n}=a(t,_),r=n?`https://www.faviconextractor.com/favicon/${n}?larger=true`:v,i=n&&t!==`Direct`?`https://${n}`:void 0;return{source:t,free_members:e.signups,paid_members:e.paid_conversions,mrr:e.mrr,iconSrc:r,displayName:t,linkUrl:i}}):[],[h,_]),x=`Where did your growth come from ${V(e)}`;return u?g?(0,$.jsx)(P,{children:(0,$.jsx)(N,{className:`last:border-none`,children:(0,$.jsx)(F,{className:`border-none py-2`,colSpan:1,children:(0,$.jsx)(Re,{containerClassName:`space-y-2`,count:5,maxWidth:75,randomize:!0})})})}):(0,$.jsxs)($.Fragment,{children:[b.length>0?(0,$.jsx)(Yt,{currencySymbol:y,data:b,defaultSourceIconUrl:v,limit:t}):(0,$.jsx)(P,{children:(0,$.jsx)(N,{className:`last:border-none`,children:(0,$.jsx)(F,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:l?4:2,children:(0,$.jsx)(j,{description:`Try adjusting your date range to see more data.`,title:`No conversions ${V(e)}`,children:(0,$.jsx)(Te,{strokeWidth:1.5})})})})}),n&&b.length>t&&(0,$.jsx)(Ue,{className:`border-none bg-transparent hover:bg-transparent!`,children:(0,$.jsx)(N,{children:(0,$.jsx)(F,{className:`border-none bg-transparent px-0 pb-0 hover:bg-transparent!`,colSpan:4,children:(0,$.jsxs)(nt,{children:[(0,$.jsx)(et,{asChild:!0,children:(0,$.jsxs)(ke,{variant:`outline`,children:[`View all `,(0,$.jsx)(we,{})]})}),(0,$.jsxs)(Xe,{className:`overflow-y-auto pt-0 sm:max-w-[420px]`,children:[(0,$.jsxs)(rt,{className:`sticky top-0 z-40 -mx-6 bg-surface-elevated/60 p-6 backdrop-blur`,children:[(0,$.jsx)(Qe,{children:`Top sources`}),(0,$.jsx)(tt,{children:x})]}),(0,$.jsx)(`div`,{className:`group/datalist`,children:(0,$.jsxs)(Ge,{children:[(0,$.jsx)(We,{children:(0,$.jsxs)(N,{children:[(0,$.jsx)(M,{children:`Source`}),(0,$.jsx)(M,{className:`w-[110px] text-right`,children:(0,$.jsx)(k,{activeSortBy:p,setSortBy:m,sortBy:`free_members desc`,children:`Free members`})}),l&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(M,{className:`w-[110px] text-right`,children:(0,$.jsx)(k,{activeSortBy:p,setSortBy:m,sortBy:`paid_members desc`,children:`Paid members`})}),(0,$.jsx)(M,{className:`w-[110px] text-right`,children:(0,$.jsx)(k,{activeSortBy:p,setSortBy:m,sortBy:`mrr desc`,children:`MRR impact`})})]})]})}),(0,$.jsx)(Yt,{currencySymbol:y,data:b,defaultSourceIconUrl:v})]})})]})]})})})})]}):(0,$.jsx)(P,{children:(0,$.jsx)(N,{className:`last:border-none`,children:(0,$.jsx)(F,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:l?4:2,children:(0,$.jsx)(ft,{})})})})};d();var Zt=({active:e,payload:t})=>{if(e&&t&&t.length){let e=t[0];return(0,$.jsx)(`div`,{className:`rounded-lg border bg-background p-2 shadow-sm`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:e.payload.color}}),(0,$.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,$.jsx)(`span`,{className:`font-mono`,children:l(e.value)})]})})}return null},Qt=({isLoading:e,range:t})=>{let{data:n}=ht(),{data:{tiers:r=[]}={}}=Ct(),[i,a]=(0,G.useState)(`billing-period`),{startDate:o,endDate:s}=(0,G.useMemo)(()=>gt(t),[t]),c=(0,G.useMemo)(()=>H(o),[o]),u=(0,G.useMemo)(()=>H(s),[s]),d=(0,G.useMemo)(()=>r.filter(e=>e.type===`paid`&&e.active).map(e=>({id:e.id,name:e.name})),[r]),p=(0,G.useMemo)(()=>{if(!n?.stats)return[];let e=f(c),t=f(u),r=n.stats.filter(n=>{let r=f(n.date);return r.isSameOrAfter(e)&&r.isSameOrBefore(t)}).reduce((e,t)=>{let n=t.cadence;return e[n]||(e[n]=0),e[n]+=t.signups,e},{});return Object.entries(r).map(([e,t],n)=>{let r=e,i=`url(#gradientPurple)`,a=`var(--chart-purple)`;return e===`month`?(r=`Monthly`,i=`url(#gradientPurple)`,a=`var(--chart-purple)`):e===`year`&&(r=`Annual`,i=`url(#gradientTeal)`,a=`var(--chart-teal)`),{id:`cadence-${n}`,name:r,count:t,fill:i,color:a}})},[n,c,u]),m=(0,G.useMemo)(()=>{if(!n?.stats||d.length===0)return[];let e=f(c),t=f(u),r=n.stats.filter(n=>{let r=f(n.date);return r.isSameOrAfter(e)&&r.isSameOrBefore(t)}).reduce((e,t)=>{let n=t.tier;return e[n]||(e[n]=0),e[n]+=t.signups,e},{}),i=[{gradient:`url(#gradientPurple)`,solid:`var(--chart-purple)`},{gradient:`url(#gradientTeal)`,solid:`var(--chart-teal)`},{gradient:`url(#gradientBlue)`,solid:`var(--chart-blue)`},{gradient:`url(#gradientRose)`,solid:`var(--chart-rose)`},{gradient:`url(#gradientOrange)`,solid:`var(--chart-orange)`},{gradient:`url(#gradientGreen)`,solid:`var(--chart-green)`},{gradient:`url(#gradientAmber)`,solid:`var(--chart-amber)`},{gradient:`url(#gradientYellow)`,solid:`var(--chart-yellow)`},{gradient:`url(#gradientDarkblue)`,solid:`var(--chart-darkblue)`},{gradient:`url(#gradientGray)`,solid:`var(--chart-darkgray)`}];return[...d.map(e=>{let t=r[e.id]||0;return{id:e.id,name:e.name,count:t}})].sort((e,t)=>t.count-e.count).map((e,t)=>{let n=t%i.length;return{...e,fill:i[n].gradient,color:i[n].solid}})},[n,d,c,u]),h=i===`billing-period`?p:m,g=(0,G.useMemo)(()=>h.reduce((e,t)=>e+t.count,0),[h]),_=(0,G.useMemo)(()=>{let e={count:{label:`Subscriptions`}};return h.forEach(t=>{e[t.id]={label:t.name,color:t.color}}),e},[h]),v=(0,G.useMemo)(()=>g===0?[]:h.map(e=>({label:e.name,count:e.count,percentage:e.count/g*100,color:e.color})),[h,g]);if(e||!n?.stats)return null;let y=h.length>0&&g>0;return(0,$.jsxs)(A,{children:[(0,$.jsx)(ze,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,$.jsx)(Ve,{children:`Paid subscription breakdown`}),(0,$.jsxs)(He,{children:[`New paid subscriptions `,V(t)]})]}),d.length>1&&(0,$.jsx)(`div`,{children:(0,$.jsxs)(Pe,{value:i,onValueChange:e=>a(e),children:[(0,$.jsx)(Me,{className:`w-full`,children:(0,$.jsx)(Ne,{})}),(0,$.jsxs)(je,{align:`end`,children:[(0,$.jsx)(Ae,{value:`billing-period`,children:`Billing period`}),(0,$.jsx)(Ae,{value:`tiers`,children:`Tiers`})]})]})})]})}),(0,$.jsx)(Be,{children:y?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(le,{className:`mx-auto aspect-square h-[250px] min-h-[250px] w-full`,config:_,children:(0,$.jsxs)(Wt,{children:[(0,$.jsxs)(`defs`,{children:[(0,$.jsxs)(`linearGradient`,{id:`gradientPurple`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-purple)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-purple)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientTeal`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-teal)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-teal)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientRose`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-rose)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-rose)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientBlue`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-blue)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-blue)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientOrange`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-orange)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-orange)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientGreen`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-green)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-green)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientAmber`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-amber)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-amber)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientYellow`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-yellow)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-yellow)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientDarkblue`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-darkblue)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-darkblue)`,stopOpacity:.6})]}),(0,$.jsxs)(`linearGradient`,{id:`gradientGray`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--chart-darkgray)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--chart-darkgray)`,stopOpacity:.6})]})]}),(0,$.jsx)(de,{content:(0,$.jsx)(Zt,{}),cursor:!1}),(0,$.jsx)(Q,{animationBegin:0,animationDuration:1e3,data:h,dataKey:`count`,innerRadius:70,nameKey:`name`,stroke:`var(--card)`,strokeWidth:5,children:(0,$.jsx)(w,{content:({viewBox:e})=>{if(e&&`cx`in e&&`cy`in e)return(0,$.jsxs)(`text`,{dominantBaseline:`middle`,textAnchor:`middle`,x:e.cx,y:e.cy,children:[(0,$.jsx)(`tspan`,{className:`fill-foreground text-2xl font-semibold tracking-tight`,x:e.cx,y:e.cy,children:l(g)}),(0,$.jsx)(`tspan`,{className:`fill-muted-foreground`,x:e.cx,y:(e.cy||0)+20,children:`Total`})]})}})})]})}),v.length>0&&(0,$.jsx)(`div`,{className:`mt-4 flex flex-wrap items-center justify-center gap-x-6 gap-y-1 text-sm text-muted-foreground`,children:v.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:e.color}}),(0,$.jsx)(`span`,{className:`max-w-[150px] truncate whitespace-nowrap`,title:e.label,children:e.label}),(0,$.jsxs)(`span`,{className:`font-medium text-foreground`,children:[Math.round(Number(e.percentage)||0),`%`]})]},e.label))})]}):(0,$.jsx)(`div`,{className:`py-12`,children:(0,$.jsx)(j,{description:`No new paid subscriptions ${V(t)}.`,title:`No new subscribers`,children:(0,$.jsx)(Oe,{strokeWidth:1.5})})})})]})};d();var $t=(e,t,n)=>{if(t===1){let t=f().format(`YYYY-MM-DD`),n=e.find(e=>e.date===t);return[{date:t,signups:n?.signups||0,cancellations:n?.cancellations||0}]}let{startDate:r,endDate:i}=gt(t),a=f(r).format(`YYYY-MM-DD`),o=new Map(e.map(e=>[e.date,e])),s=[],c=new Set;if(n===`monthly`){let e=f(r).startOf(`month`),t=f(i).startOf(`month`);for(;e.isSameOrBefore(t);){let t=e.format(`YYYY-MM-DD`),n=t<a?a:t;if(!c.has(n)){c.add(n);let e=o.get(n);e?s.push(e):s.push({date:n,signups:0,cancellations:0})}e.add(1,`month`)}}else if(n===`weekly`){let e=f(r).startOf(`week`),t=f(i).startOf(`week`);for(;e.isSameOrBefore(t);){let t=e.format(`YYYY-MM-DD`),n=t<a?a:t;if(!c.has(n)){c.add(n);let e=o.get(n);e?s.push(e):s.push({date:n,signups:0,cancellations:0})}e.add(1,`week`)}}else{let e=f(r),t=f(i);for(;e.isSameOrBefore(t);){let t=e.format(`YYYY-MM-DD`),n=o.get(t);n?s.push(n):s.push({date:t,signups:0,cancellations:0}),e.add(1,`day`)}}return s},en=e=>{let t=vt(e);return t<30?[`daily`]:t>=91?[`weekly`,`monthly`]:[`daily`,`weekly`]},tn=e=>{let t=vt(e);return t<30?`daily`:t>=91?`monthly`:`weekly`},nn=({subscriptionData:e,memberData:t,range:n,isLoading:r})=>{let[i,a]=(0,G.useState)(()=>tn(n));(0,G.useEffect)(()=>{a(tn(n))},[n]);let o=(0,G.useMemo)(()=>en(n),[n]),s=(0,G.useMemo)(()=>{switch(i){case`daily`:return`none`;case`weekly`:return`weekly`;case`monthly`:return`monthly`}},[i]),c=(0,G.useMemo)(()=>_t(n,[],{overrideStrategy:s}),[n,s]),u=(0,G.useMemo)(()=>{if(e&&e.length>0){if(n===1){let t=f().format(`YYYY-MM-DD`),r=e.find(e=>e.date===t);return[{date:m(t,n),rawDate:t,new:r?.signups||0,cancelled:-(r?.cancellations||0)}]}let t=B(e,n,`signups`,`sum`,s),r=B(e,n,`cancellations`,`sum`,s),i=new Map(r.map(e=>[e.date,e])),a=t.map(e=>({date:e.date,signups:e.signups||0,cancellations:i.get(e.date)?.cancellations||0})),o=new Set(a.map(e=>e.date));return r.forEach(e=>{o.has(e.date)||a.push({date:e.date,signups:0,cancellations:e.cancellations||0})}),a.sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),$t(a,n,s).map(e=>({date:m(e.date,c),rawDate:e.date,new:e.signups||0,cancelled:-(e.cancellations||0)}))}else{if(!t||t.length===0)return[];if(n===1){let e=f().format(`YYYY-MM-DD`),r=t.find(t=>t.date===e);return[{date:m(e,n),rawDate:e,new:r?.paid_subscribed||0,cancelled:-(r?.paid_canceled||0)}]}let e=B(t,n,`paid_subscribed`,`sum`,s),r=B(t,n,`paid_canceled`,`sum`,s),i=new Map(r.map(e=>[e.date,e])),a=e.map(e=>({date:e.date,paid_subscribed:e.paid_subscribed||0,paid_canceled:i.get(e.date)?.paid_canceled||0})),o=new Set(a.map(e=>e.date));return r.forEach(e=>{o.has(e.date)||a.push({date:e.date,paid_subscribed:0,paid_canceled:e.paid_canceled||0})}),a.sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),a.map(e=>({date:m(e.date,c),rawDate:e.date,new:e.paid_subscribed||0,cancelled:-(e.paid_canceled||0)}))}},[t,e,n,s,c]),d={new:{label:`New`,color:`var(--chart-teal)`},cancelled:{label:`Cancelled`,color:`var(--chart-rose)`}},p=(0,G.useMemo)(()=>({new:u.reduce((e,t)=>e+t.new,0),cancelled:u.reduce((e,t)=>e+Math.abs(t.cancelled),0)}),[u]);if(r)return null;let h=u.length>0&&(p.new>0||p.cancelled>0),g=e=>e.charAt(0).toUpperCase()+e.slice(1);return(0,$.jsxs)(A,{"data-testid":`paid-members-change-card`,children:[(0,$.jsx)(ze,{children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,$.jsx)(Ve,{children:`Paid subscriptions`}),(0,$.jsxs)(He,{children:[`New and cancelled paid subscriptions `,V(n)]})]}),o.length>1&&(0,$.jsx)(`div`,{children:(0,$.jsxs)(Pe,{value:i,onValueChange:e=>a(e),children:[(0,$.jsx)(Me,{className:`w-[110px]`,children:(0,$.jsx)(Ne,{})}),(0,$.jsx)(je,{align:`end`,children:o.map(e=>(0,$.jsx)(Ae,{value:e,children:g(e)},e))})]})})]})}),(0,$.jsx)(Be,{children:h?(0,$.jsxs)(`div`,{children:[(0,$.jsx)(le,{className:`aspect-auto h-[200px] w-full md:h-[220px] xl:h-[260px]`,config:d,children:(0,$.jsxs)(Ce,{data:u,stackOffset:`sign`,children:[(0,$.jsx)(`defs`,{children:(0,$.jsxs)(`linearGradient`,{id:`tealGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--color-new)`,stopOpacity:.8}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--color-new)`,stopOpacity:.6})]})}),(0,$.jsx)(`defs`,{children:(0,$.jsxs)(`linearGradient`,{id:`roseGradient`,x1:`0`,x2:`0`,y1:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`var(--color-cancelled)`,stopOpacity:.6}),(0,$.jsx)(`stop`,{offset:`100%`,stopColor:`var(--color-cancelled)`,stopOpacity:.8})]})}),(0,$.jsx)(xe,{stroke:`var(--border)`,vertical:!1}),(0,$.jsx)(ye,{axisLine:!1,dataKey:`date`,tickFormatter:()=>``,tickLine:!1,tickMargin:10}),(0,$.jsx)(be,{axisLine:!1,tickFormatter:e=>l(e<0?e*-1:e),tickLine:!1}),(0,$.jsx)(de,{content:(0,$.jsx)(ce,{className:`min-w-[120px]! px-3 py-2`,formatter:(e,t,n,r)=>{let i=Number(e),a=`0`;a=i===0?`0`:l(i<0?i*-1:i);let o=n?.payload,s=Number(o?.new||0)+Number(o?.cancelled||0),u=s===0?`0`:s>0?`+${l(s)}`:l(s),f=o?.date,p=o?.rawDate;return p&&(f=m(p,c)),(0,$.jsxs)(`div`,{className:`flex w-full flex-col`,children:[r===0&&(0,$.jsx)(`div`,{className:`mb-1 text-sm font-medium text-foreground`,children:f}),(0,$.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`div`,{className:`size-2 shrink-0 rounded-full bg-[var(--color-bg)] opacity-50`,style:{"--color-bg":`var(--color-${t})`}}),(0,$.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:d[t]?.label||t})]}),(0,$.jsx)(`div`,{className:`ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums`,children:a})]}),r===1&&(0,$.jsxs)(`div`,{className:`mt-1 flex w-full items-center justify-between gap-4 border-t pt-1`,children:[(0,$.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Net change`}),(0,$.jsx)(`div`,{className:`ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums`,children:u})]})]})},hideLabel:!0}),cursor:!1,isAnimationActive:!1,position:{y:10}}),(0,$.jsx)(se,{activeBar:{fillOpacity:1},dataKey:`new`,fill:`url(#tealGradient)`,fillOpacity:.75,maxBarSize:32,minPointSize:3,radius:[4,4,0,0],stackId:`a`}),(0,$.jsx)(se,{activeBar:{fillOpacity:1},dataKey:`cancelled`,fill:`url(#roseGradient)`,fillOpacity:.75,maxBarSize:32,radius:[4,4,0,0],stackId:`a`})]})}),(0,$.jsxs)(`div`,{className:`mt-3 flex items-center justify-center gap-6 text-sm text-muted-foreground`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:d.new.color}}),(0,$.jsx)(`span`,{children:`New`}),(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:l(p.new)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full opacity-50`,style:{backgroundColor:d.cancelled.color}}),(0,$.jsx)(`span`,{children:`Cancelled`}),(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:l(p.cancelled)})]})]})]}):(0,$.jsx)(`div`,{className:`py-12`,children:(0,$.jsx)(j,{description:`No paid subscription changes ${V(n)}.`,title:`No paid member changes`,children:(0,$.jsx)(Ee,{strokeWidth:1.5})})})})]})},rn=(e,t,n)=>{let r=e??30,i=t??`mrr desc`,{startDate:a,endDate:o}=(0,G.useMemo)(()=>gt(r),[r]),s=(0,G.useMemo)(()=>{let e={date_from:H(a),date_to:H(o),order:i};return n===`posts`?e.post_type=`post`:n===`pages`&&(e.post_type=`page`),e},[a,o,i,n]);return pt({searchParams:Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0))})},an=()=>{let{range:e}=qe(),{site:t,settings:n}=bt(),i=Dt(n),a=c(),[o,d]=(0,G.useState)(`free_members desc`),[f,p]=(0,G.useState)(W.POSTS_AND_PAGES),[m]=s(),h=L(),g=Ke(),_=m.get(`tab`)||`total-members`,[v,y]=(0,G.useState)(_);(0,G.useEffect)(()=>{_!==v&&y(_)},[_]);let{isLoading:b,chartData:x,totals:S,currencySymbol:C,subscriptionData:w}=yt(e),{data:T,isLoading:ee}=rn(e,o,f),te=(0,G.useMemo)(()=>{let e=(T?.stats||[]).reduce((e,t)=>{let n=t.post_id||(t.title&&t.title.trim()!==``?t.title:t.attribution_url);if(!n)return e;if(!e.has(n))e.set(n,t);else{let r=e.get(n);r.free_members+=t.free_members,r.paid_members+=t.paid_members,r.mrr+=t.mrr,e.set(n,r)}return e},new Map),t=Array.from(e.values()),n=t.reduce((e,t)=>e+t.free_members,0),r=t.reduce((e,t)=>e+t.paid_members,0),i=t.reduce((e,t)=>e+t.mrr,0);return t.map(e=>{let t=0;return o.includes(`free_members`)&&n>0?t=e.free_members/n:o.includes(`paid_members`)&&r>0?t=e.paid_members/r:o.includes(`mrr`)&&i>0&&(t=e.mrr/i),{title:e.title||e.attribution_url,post_id:e.post_id,attribution_url:e.attribution_url,attribution_type:e.attribution_type,attribution_id:e.attribution_id,free_members:e.free_members,paid_members:e.paid_members,mrr:e.mrr,percentage:t,published_at:e.published_at,url_exists:e.url_exists??!0}})},[T,o]),E=b,ne=b||ee;return(0,$.jsxs)(lt,{children:[(0,$.jsx)(ut,{children:(0,$.jsx)(r,{children:(0,$.jsx)(ct,{})})}),(0,$.jsxs)(dt,{data:E?void 0:x,isLoading:!1,loadingComponent:(0,$.jsx)($.Fragment,{}),children:[(0,$.jsx)(A,{"data-testid":`total-members-card`,children:(0,$.jsx)(Be,{children:(0,$.jsx)(qt,{chartData:x,currencySymbol:C,initialTab:_,isLoading:E,totals:S,onTabChange:y})})}),h&&v===`paid-members`&&(0,$.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2 xl:grid-cols-[2fr_minmax(460px,1fr)]`,children:[(0,$.jsx)(nn,{isLoading:E,memberData:x,range:e,subscriptionData:w}),(0,$.jsx)(Qt,{isLoading:E,range:e})]}),(0,$.jsxs)(A,{className:`w-full overflow-x-auto`,"data-testid":`top-content-card`,children:[(0,$.jsxs)(ze,{children:[(0,$.jsx)(Ve,{children:Tt(f)}),(0,$.jsx)(He,{children:wt(f,e,V)})]}),(0,$.jsx)(Be,{children:(0,$.jsxs)(Ge,{children:[(0,$.jsx)(We,{children:(0,$.jsxs)(N,{className:`[&>th]:h-auto [&>th]:pt-0 [&>th]:pb-2`,children:[(0,$.jsx)(M,{className:`min-w-[320px] pl-0`,children:(0,$.jsx)(Le,{defaultValue:f,variant:`button-sm`,onValueChange:e=>{p(e)},children:(0,$.jsxs)(Ie,{children:[(0,$.jsx)(Fe,{value:W.POSTS_AND_PAGES,children:`Posts & pages`}),(0,$.jsx)(Fe,{value:W.POSTS,children:`Posts`}),(0,$.jsx)(Fe,{value:W.PAGES,children:`Pages`}),(0,$.jsx)(Fe,{value:W.SOURCES,children:`Sources`})]})})}),(0,$.jsx)(M,{className:`w-[140px] text-right`,children:h?(0,$.jsx)(k,{activeSortBy:o,setSortBy:d,sortBy:`free_members desc`,children:`Free members`}):(0,$.jsx)($.Fragment,{children:`Free members`})}),h&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(M,{className:`w-[140px] text-right`,children:(0,$.jsx)(k,{activeSortBy:o,setSortBy:d,sortBy:`paid_members desc`,children:`Paid members`})}),(0,$.jsx)(M,{className:`w-[140px] text-right`,children:(0,$.jsx)(k,{activeSortBy:o,setSortBy:d,sortBy:`mrr desc`,children:`MRR impact`})})]})]})}),f===W.SOURCES?(0,$.jsx)(Xt,{limit:20,range:e,setSortBy:e=>d(e),showViewAll:!0,sortBy:o}):(0,$.jsx)(P,{children:ne?(0,$.jsx)(N,{className:`last:border-none`,children:(0,$.jsx)(F,{className:`border-none py-2`,colSpan:1,children:(0,$.jsx)(Re,{containerClassName:`space-y-2`,count:5,maxWidth:75,randomize:!0})})}):g?te.length>0?te.map((e,n)=>(0,$.jsxs)(N,{className:`last:border-none`,children:[(0,$.jsx)(F,{children:(0,$.jsxs)(`div`,{className:`group/link inline-flex flex-col items-start gap-px`,children:[e.post_id&&e.attribution_type===`post`?(0,$.jsx)(ke,{className:`h-auto p-0 text-left leading-tight font-medium whitespace-normal hover:underline!`,title:`View post analytics`,variant:`link`,onClick:Et(e.attribution_url,e.post_id,t.url||``,a,e.attribution_type),children:e.title}):(0,$.jsx)(`span`,{className:`font-medium`,children:e.title}),e.published_at&&u&&new Date(e.published_at).getTime()>0&&(0,$.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Published on `,u(e.published_at,i)]})]})}),(0,$.jsxs)(F,{className:`text-right font-mono text-sm`,children:[e.free_members>0&&`+`,l(e.free_members)]}),h&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(F,{className:`text-right font-mono text-sm`,children:[e.paid_members>0&&`+`,l(e.paid_members)]}),(0,$.jsxs)(F,{className:`text-right font-mono text-sm`,children:[e.mrr>0&&`+`,C,l(U(e.mrr))]})]})]},`${f}-${e.post_id||`${e.title}-${n}`}`)):(0,$.jsx)(N,{className:`border-none`,children:(0,$.jsx)(F,{className:`py-12 group-hover:bg-transparent!`,colSpan:h?4:2,children:(0,$.jsx)(j,{description:`Try adjusting your date range to see more data.`,title:`No conversions ${V(e)}`,children:(0,$.jsx)(De,{strokeWidth:1.5})})})}):(0,$.jsx)(N,{className:`last:border-none`,children:(0,$.jsx)(F,{className:`border-none py-12 group-hover:bg-transparent!`,colSpan:h?4:2,children:(0,$.jsx)(ft,{})})})})]})})]})]})]})};export{an as default};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{L as r}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as i}from"./text-BLI0C8Mc.js";var a=e(t(),1),o=n(),s=a.forwardRef(({className:e,...t},n)=>(0,o.jsx)(i,{ref:n,as:`h1`,className:r(`scroll-m-20 leading-[1.1em] tracking-tighter`,e),size:`2xl`,weight:`bold`,...t}));s.displayName=`H1`;var c=a.forwardRef(({className:e,...t},n)=>(0,o.jsx)(i,{ref:n,as:`h2`,className:r(`scroll-m-20 tracking-tighter first:mt-0`,e),size:`xl`,weight:`bold`,...t}));c.displayName=`H2`;var l=a.forwardRef(({className:e,...t},n)=>(0,o.jsx)(i,{ref:n,as:`h3`,className:r(`scroll-m-20 tracking-tight`,e),size:`lg`,weight:`semibold`,...t}));l.displayName=`H3`;var u=a.forwardRef(({className:e,...t},n)=>(0,o.jsx)(i,{ref:n,as:`h4`,className:r(`scroll-m-20 tracking-tight`,e),size:`md`,weight:`semibold`,...t}));u.displayName=`H4`;var d=a.forwardRef(({className:e,...t},n)=>(0,o.jsx)(i,{ref:n,as:`div`,className:r(`tracking-wide uppercase`,e),size:`sm`,tone:`secondary`,weight:`medium`,...t}));d.displayName=`HTable`;export{d as a,u as i,c as n,l as r,s as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{_ as n}from"./framework-provider-DB-svAju.js";import{t as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{t as a}from"./use-filterable-api-CxCrnPxG.js";import{h as o}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{H as s,L as c,c as l}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{D as u,a as d,ft as f,hn as p,nr as m,t as h,xt as g}from"./button-D414TI3B.js";import{t as _}from"./input-surface-CL23Mlh8.js";import{t as v}from"./multi-select-combobox-_9wEYmGv.js";import{t as y}from"./switch-DoOJF2yg.js";import{o as b,t as x}from"./use-settings-navigation-CzGU4sus.js";import{i as S,n as C,t as w}from"./action-list-DC9QpX-l.js";import{o as T,t as E}from"./field-BXEh3ptU.js";import{$r as D,Bn as O,En as k,Ln as A,Qr as j,Sn as M,Vn as N,mn as P,p as F,pn as I}from"./index-DOF2jDq0.js";var L=e(t(),1),R=i(),z=({offset:e,onTrigger:t})=>{let n=(0,L.useRef)(null);return(0,L.useEffect)(()=>{let e=new IntersectionObserver(e=>{e[0].intersectionRatio<=0||t()});return n.current&&e.observe(n.current),()=>e.disconnect()},[t]),(0,R.jsx)(`div`,{ref:n,className:`absolute w-full`,style:{bottom:e}})},B=`ActionsResponseType`,V=(e,t)=>{let n=e=>e.event===`edited`&&typeof e.context?.action_name==`string`?e.context.action_name:``;return e.resource_id===t.resource_id&&e.resource_type===t.resource_type&&e.event===t.event&&n(e)===n(t)},H=r({dataType:B,path:`/actions/`,returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.actions.map(({context:e,...t})=>({...t,context:JSON.parse(e)})));n=n.reverse();let r=1;n.forEach((e,t)=>{let i=n[t+1];i&&V(e,i)?(e.skip=!0,r+=1):r>1&&(e.count=r,r=1)});let i=t[t.length-1].meta;return{actions:n.reverse(),meta:i,isEnd:i?i.pagination.pages===i.pagination.page:!0}}}),U=e=>{let t=e.resource_type;if(e.event!==`deleted`)switch(e.resource_type){case`page`:case`post`:return!e.resource||!e.resource.id?void 0:(t===`post`&&e.context?.type&&(t=e.context?.type),{isExternal:!0,route:`editor/${t}/${e.resource.id}`,models:[t,e.resource.id]});case`integration`:return!e.resource||!e.resource.id?void 0:{route:`integrations/${e.resource.id}`};case`offer`:return!e.resource||!e.resource.id?void 0:{isExternal:!0,route:`offers/${e.resource.id}`,models:[e.resource.id]};case`tag`:return!e.resource||!e.resource.slug?void 0:{isExternal:!0,route:`tag`,models:[e.resource.slug]};case`product`:return{route:`tiers`};case`user`:return!e.resource||!e.resource.slug?void 0:{route:`staff/${e.resource.slug}`}}},W=e=>{let t=e.resource_type;t===`api_key`?t=`API key`:t===`setting`?t=`settings`:t===`product`?t=`tier`:t===`gift_link`?t=`gift link`:t===`security_action`?t=`security action`:t===`member_custom_field`&&(t=`custom field`),t===`post`&&e.context?.type&&(t=e.context?.type);let n=e.event;return e.event===`edited`&&e.context?.action_name&&(n=e.context?.action_name),n===`reset_authentication`?n=`reset authentication`:n===`custom_fields_edited`&&(n=`custom fields edited`),e.context?.count&&e.context?.count>1?`${e.context?.count} ${t}s ${n}`:`${t.slice(0,1).toUpperCase()}${t.slice(1)} ${n}`},G=e=>{if(e.resource_type===`setting`&&e.context?.group&&e.context?.key)return{group:e.context?.group,key:e.context?.key}},K=e=>typeof e.context?.count==`number`&&e.context?.count>1,q=({action:e})=>{let t=g;switch(e.event){case`added`:t=f;break;case`deleted`:t=u;break}return(0,R.jsx)(t,{className:`size-3`})},J=({action:e})=>(0,R.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,R.jsx)(M,{className:`size-10`,...F({name:e.actor?.name||e.actor?.slug}),src:e.actor?.image}),(0,R.jsx)(`div`,{className:`absolute -right-1 -bottom-1 z-30 flex items-center justify-center rounded-full border border-border-default bg-background p-1 shadow-sm`,children:(0,R.jsx)(q,{action:e})})]}),Y=({label:e,item:t,excludedItems:n,toggleItem:r})=>{let i=(0,L.useId)();return(0,R.jsxs)(E,{orientation:`horizontal`,children:[(0,R.jsx)(T,{htmlFor:i,children:e}),(0,R.jsx)(y,{checked:!n.includes(t),id:i,onCheckedChange:e=>r(t,e)})]})},X=({userId:e,excludedEvents:t,excludedResources:n,toggleEventType:r,toggleResourceType:i})=>{let{isAdmin7:o}=l(),{updateRoute:s}=x(),u=a({path:`/users/`,filterKey:`name`,responseKey:`users`}),[f,p]=(0,L.useState)([]),[g,y]=(0,L.useState)(),[b,S]=(0,L.useState)(!1),[C,w]=(0,L.useState)(!1),T=(0,L.useRef)(0),E=(0,L.useRef)(null),k=(0,L.useRef)(u);k.current=u;let M=(0,L.useCallback)(async(e,t)=>{try{let n=await k.current.loadData(e);t===T.current&&p(n.map(e=>({label:e.name,value:e.id})))}catch{t===T.current&&p([])}finally{t===T.current&&w(!1)}},[]),P=(0,L.useCallback)((e,t=!1)=>{T.current+=1;let n=T.current;w(!0),E.current&&clearTimeout(E.current),t?E.current=setTimeout(()=>void M(e,n),500):M(e,n)},[M]);(0,L.useEffect)(()=>(P(``),()=>{T.current+=1,E.current&&clearTimeout(E.current)}),[P]),(0,L.useEffect)(()=>{let t=!1;if(!e){y(null);return}return k.current.loadInitialValues([e],`id`).then(([e])=>{if(!t&&e){let t={label:e.name,value:e.id};y(t),p(e=>e.some(e=>e.value===t.value)?e:[t,...e])}}).catch(()=>{t||y(null)}),()=>{t=!0}},[e]);let F=()=>{y(null)};return(0,R.jsxs)(D,{align:`center`,gap:`md`,children:[(0,R.jsxs)(A,{children:[(0,R.jsx)(N,{asChild:!0,children:(0,R.jsx)(h,{type:`button`,variant:`outline`,children:`Filter`})}),(0,R.jsx)(O,{align:`end`,className:`z-[9999] w-[220px]`,"data-testid":`history-filters`,children:(0,R.jsxs)(j,{gap:`2xl`,children:[(0,R.jsxs)(j,{gap:`md`,children:[(0,R.jsx)(Y,{excludedItems:t,item:`added`,label:`Added`,toggleItem:r}),(0,R.jsx)(Y,{excludedItems:t,item:`edited`,label:`Edited`,toggleItem:r}),(0,R.jsx)(Y,{excludedItems:t,item:`deleted`,label:`Deleted`,toggleItem:r})]}),(0,R.jsxs)(j,{gap:`md`,children:[(0,R.jsx)(Y,{excludedItems:n,item:`post`,label:`Posts`,toggleItem:i}),(0,R.jsx)(Y,{excludedItems:n,item:`page`,label:`Pages`,toggleItem:i}),(0,R.jsx)(Y,{excludedItems:n,item:`tag`,label:`Tags`,toggleItem:i}),(0,R.jsx)(Y,{excludedItems:n,item:`offer,product`,label:`Tiers & offers`,toggleItem:i}),(0,R.jsx)(Y,{excludedItems:n,item:`api_key,integration,setting,user,webhook`,label:`Settings & staff`,toggleItem:i})]})]})})]}),(0,R.jsx)(`div`,{className:`w-[200px]`,children:(0,R.jsxs)(D,{className:c(_(`within`),`relative h-(--control-height) overflow-hidden`,o&&`rounded-full`),gap:`none`,children:[(0,R.jsxs)(A,{open:b,onOpenChange:e=>{S(e),e&&P(``)},children:[(0,R.jsx)(N,{asChild:!0,children:(0,R.jsxs)(`button`,{"aria-label":`Staff`,className:`flex min-w-0 flex-1 items-center justify-between px-3 text-control`,"data-testid":`history-staff-filter`,role:`combobox`,type:`button`,children:[(0,R.jsx)(`span`,{className:g?`truncate pr-8`:`truncate pr-8 text-muted-foreground`,children:g?.label??`Search staff`}),(0,R.jsx)(m,{className:`ml-2 size-4 shrink-0 opacity-50`})]})}),(0,R.jsx)(O,{align:`start`,className:`z-[9999] w-72 p-0`,children:(0,R.jsx)(v,{i18n:{searchPlaceholder:`Search staff`},isLoading:C,isMultiSelect:!1,options:g&&!f.some(e=>e.value===g.value)?[g,...f]:f,shouldFilter:!1,values:g?[g.value]:[],autoCloseOnSelect:!0,onChange:e=>{let t=f.find(t=>t.value===e[0]);t&&(y(t),s(`history/view/${t.value}`))},onClose:()=>S(!1),onSearchChange:e=>P(e,!0)})})]}),g&&(0,R.jsx)(`button`,{"aria-label":`Clear selection`,className:`absolute top-1/2 right-10 z-10 flex size-8 -translate-y-1/2 items-center justify-center text-muted-foreground hover:text-foreground`,type:`button`,onClick:()=>{F(),s(`history/view`)},children:(0,R.jsx)(d,{className:`size-4`})})]})})]})},Z=({action:e})=>{let{updateRoute:t}=x(),n=G(e);if(e.resource_type===`security_action`&&e.context?.action_name===`reset_authentication`){let t=typeof e.context.api_keys_rotated==`number`?e.context.api_keys_rotated:null,n=typeof e.context.users_locked==`number`?e.context.users_locked:null,r=[t===null?null:`${s(t)} API ${t===1?`key`:`keys`} rotated`,n===null?null:`${s(n)} ${n===1?`user`:`users`} locked`].filter(Boolean);return(0,R.jsx)(R.Fragment,{children:r.length?r.join(`, `):`Authentication reset`})}else if(n){let{group:e,key:t}=n;return(0,R.jsxs)(R.Fragment,{children:[e.slice(0,1).toUpperCase(),e.slice(1),e!==t&&(0,R.jsxs)(`span`,{children:[` `,(0,R.jsxs)(`code`,{className:`mb-1 bg-white text-gray-800 dark:bg-gray-900 dark:text-white`,children:[`(`,t,`)`]})]})]})}else if(e.resource?.title||e.resource?.name||e.context?.primary_name){let n=U(e);return n?(0,R.jsx)(`a`,{className:`cursor-pointer font-bold`,onClick:e=>{e.preventDefault(),t(n)},children:e.resource?.title||e.resource?.name}):(0,R.jsx)(R.Fragment,{children:e.resource?.title||e.resource?.name||e.context?.primary_name})}else return(0,R.jsx)(`span`,{className:`text-gray-500`,children:`(unknown)`})},Q=e=>{let t=new Intl.DateTimeFormat(`en-US`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).formatToParts(e).reduce((e,{type:t,value:n})=>({...e,[t]:n}),{});return`${t.year}-${t.month}-${t.day} ${t.hour}:${t.minute}:${t.second}`},$=200;function ee(){let{userId:e}=o(),{updateRoute:t}=x(),[r,i]=(0,L.useState)([]),[a,c]=(0,L.useState)([`label`]),{data:l,fetchNextPage:u,isFetchingNextPage:d}=H({searchParams:{include:`actor,resource`,limit:$.toString(),filter:[r.length&&`event:-[${r.join(`,`)}]`,a.length&&`resource_type:-[${a.join(`,`)}]`,e&&`actor_id:'${e}'`].filter(Boolean).join(`+`)},getNextPageParams:(e,t)=>({...t,filter:[t.filter,e.actions.length&&`created_at:<'${Q(new Date(e.actions[e.actions.length-1].created_at))}'`].join(`+`)}),placeholderData:n}),f=(0,L.useCallback)(()=>{l?.isEnd||u()},[l?.isEnd,u]),m=(e,t,n)=>{e(e=>n?e.concat(t):e.filter(e=>e!==t))},h=r.length>0||a.length>0||e;return(0,R.jsx)(b,{cancelLabel:``,okLabel:`Close`,scrolling:!0,size:`md`,stickyFooter:!0,stickyHeader:!0,testId:`history-modal`,title:`History`,topRightContent:(0,R.jsx)(X,{excludedEvents:r,excludedResources:a,toggleEventType:(e,t)=>m(i,e,!t),toggleResourceType:(e,t)=>m(c,e,!t),userId:e}),onClose:()=>{t(`history`)},onOk:()=>{t(`history`)},children:(0,R.jsx)(`div`,{className:`relative mt-6`,children:(0,R.jsxs)(w,{children:[l?.actions?l.actions.length>0?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(z,{offset:250,onTrigger:f}),l.actions.map(e=>!e.skip&&(0,R.jsx)(C,{children:(0,R.jsxs)(S,{className:`flex items-center gap-3 py-3`,children:[(0,R.jsx)(J,{action:e}),(0,R.jsxs)(`div`,{className:`min-w-0 grow`,children:[(0,R.jsxs)(`div`,{children:[W(e),K(e)?``:`: `,!K(e)&&(0,R.jsx)(Z,{action:e}),e.count?(0,R.jsxs)(R.Fragment,{children:[` `,s(e.count),` times`]}):null,(0,R.jsxs)(`span`,{children:[` — by `,e.actor?.name||e.actor?.slug]})]}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:[new Date(e.created_at).toLocaleDateString(`default`,{year:`numeric`,month:`short`,day:`2-digit`}),new Date(e.created_at).toLocaleTimeString(`default`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})].join(` | `)})]})]})},e.id)),d&&(0,R.jsx)(`div`,{className:`flex items-center justify-center p-5`,children:(0,R.jsx)(k,{size:`md`})})]}):(0,R.jsxs)(I,{children:[(0,R.jsx)(P,{children:(0,R.jsx)(p,{})}),h?`No entries match your current filters.`:`No history entries found.`]}):l===void 0?(0,R.jsx)(`div`,{className:`flex items-center justify-center px-5 pt-12 pb-10`,children:(0,R.jsx)(`div`,{className:`flex h-64 items-center justify-center`,children:(0,R.jsx)(k,{size:`lg`})})}):(0,R.jsx)(I,{children:`No entries found.`}),l?.isEnd&&l.actions.length>0&&(0,R.jsx)(`div`,{className:`border-t border-border pt-2 text-sm text-muted-foreground`,children:`End of history log`})]})})})}export{ee as default};
@@ -0,0 +1,2 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{C as n,D as r,E as i,S as a,T as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,o as _,p as v,r as y,s as b,u as x,v as S,w as C,x as w,y as T}from"./framework-provider-DB-svAju.js";import{t as ee}from"./jsx-runtime-BlNNh7jY.js";import{n as E}from"./dist-DziNzWI2.js";var te=class extends r{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=v(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),D(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return O(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return O(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof c(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!a(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&k(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||c(this.options.enabled,this.#t)!==c(t.enabled,this.#t)||w(this.options.staleTime,this.#t)!==w(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||c(this.options.enabled,this.#t)!==c(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return re(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(S)),t}#g(){this.#b();let e=w(this.options.staleTime,this.#t);if(g.isServer()||this.#r.isStale||!f(e))return;let t=C(this.#r.dataUpdatedAt,e)+1;this.#d=o.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(g.isServer()||c(this.options.enabled,this.#t)===!1||!f(this.#p)||this.#p===0)&&(this.#f=o.setInterval(()=>{(this.options.refetchIntervalInBackground||i.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(o.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(o.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:l}=e,u={...l},d=!1,f;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&D(e,t),o=i&&k(e,n,t,r);(a||o)&&(u={...u,...h(l.data,e.options)}),t._optimisticResults===`isRestoring`&&(u.fetchStatus=`idle`)}let{error:p,errorUpdatedAt:m,status:g}=u;f=u.data;let _=!1;if(t.placeholderData!==void 0&&f===void 0&&g===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,_=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(g=`success`,f=T(i?.data,e,t),d=!0)}if(t.select&&f!==void 0&&!_)if(i&&f===a?.data&&t.select===this.#c)f=this.#l;else try{this.#c=t.select,f=t.select(f),f=T(i?.data,f,t),this.#l=f,this.#s=null}catch(e){this.#s=e}this.#s&&(p=this.#s,f=this.#l,m=Date.now(),g=`error`);let y=u.fetchStatus===`fetching`,b=g===`pending`,x=g===`error`,S=b&&y,C=f!==void 0,w={status:g,fetchStatus:u.fetchStatus,isPending:b,isSuccess:g===`success`,isError:x,isInitialLoading:S,isLoading:S,data:f,dataUpdatedAt:u.dataUpdatedAt,error:p,errorUpdatedAt:m,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:u.dataUpdateCount>s.dataUpdateCount||u.errorUpdateCount>s.errorUpdateCount,isFetching:y,isRefetching:y&&!b,isLoadingError:x&&!C,isPaused:u.fetchStatus===`paused`,isPlaceholderData:d,isRefetchError:x&&C,isStale:A(e,t),refetch:this.refetch,promise:this.#o,isEnabled:c(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=w.data!==void 0,r=w.status===`error`&&!t,i=e=>{r?e.reject(w.error):t&&e.resolve(w.data)},a=()=>{let e=this.#o=w.promise=v();i(e)},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||w.data!==o.value)&&a();break;case`rejected`:(!r||w.error!==o.reason)&&a();break}}return w}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!a(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){d.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function ne(e,t){return c(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&c(t.retryOnMount,e)===!1)}function D(e,t){return ne(e,t)||e.state.data!==void 0&&O(e,t,t.refetchOnMount)}function O(e,t,n){if(c(t.enabled,e)!==!1&&w(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&A(e,t)}return!1}function k(e,t,n,r){return(e!==t||c(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&A(e,n)}function A(e,t){return c(t.enabled,e)!==!1&&e.isStaleByTime(w(t.staleTime,e))}function re(e,t){return!a(e.getCurrentResult(),t)}var ie=class extends te{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,d=i&&c===`forward`,f=o&&c===`backward`,p=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:x(t,n.data),hasPreviousPage:u(t,n.data),isFetchNextPageError:l,isFetchingNextPage:d,isFetchPreviousPageError:f,isFetchingPreviousPage:p,isRefetchError:s&&!l&&!f,isRefetching:a&&!d&&!p}}},ae=class extends r{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),a(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&p(t.mutationKey)!==p(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??l();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){d.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}};ee();var j=e(t(),1),oe=j.createContext(!1),se=()=>j.useContext(oe);oe.Provider;function ce(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var le=j.createContext(ce()),ue=()=>j.useContext(le),de=(e,t,r)=>{let i=r?.state.error&&typeof e.throwOnError==`function`?n(e.throwOnError,[r.state.error,r]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||i)&&(t.isReset()||(e.retryOnMount=!1))},fe=e=>{j.useEffect(()=>{e.clearReset()},[e])},pe=({result:e,errorResetBoundary:t,throwOnError:r,query:i,suspense:a})=>e.isError&&!t.isReset()&&!e.isFetching&&i&&(a&&e.data===void 0||n(r,[e.error,i])),me=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},he=(e,t)=>e.isLoading&&e.isFetching&&!t,ge=(e,t)=>e?.suspense&&t.isPending,M=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function N(e,t,n){let r=se(),i=ue(),a=b(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash),c=e.subscribed!==!1;o._optimisticResults=r?`isRestoring`:c?`optimistic`:void 0,me(o),de(o,i,s),fe(i);let l=!a.getQueryCache().get(o.queryHash),[u]=j.useState(()=>new t(a,o)),f=u.getOptimisticResult(o),p=!r&&c;if(j.useSyncExternalStore(j.useCallback(e=>{let t=p?u.subscribe(d.batchCalls(e)):S;return u.updateResult(),t},[u,p]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),j.useEffect(()=>{u.setOptions(o)},[o,u]),ge(o,f))throw M(o,u,i);if(pe({result:f,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw f.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,f),o.experimental_prefetchInRender&&!g.isServer()&&he(f,r)&&(l?M(o,u,i):s?.promise)?.catch(S).finally(()=>{u.updateResult()}),o.notifyOnChangeProps?f:u.trackResult(f)}function P(e,t){return N(e,te,t)}function F(e,t){let r=b(t),[i]=j.useState(()=>new ae(r,e));j.useEffect(()=>{i.setOptions(e)},[i,e]);let a=j.useSyncExternalStore(j.useCallback(e=>i.subscribe(d.batchCalls(e)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),o=j.useCallback((e,t)=>{i.mutate(e,t).catch(S)},[i]);if(a.error&&n(i.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:o,mutateAsync:a.mutate}}function I(e,t){return N(e,ie,t)}var L=class extends Error{response;data;constructor(e,t,n,r){!n&&e&&e.url.includes(`/ghost/api/admin/`)&&(n=`Something went wrong while loading ${e.url.replace(/.+\/ghost\/api\/admin\//,``).replace(/\W.*/,``).replace(`_`,` `)}, please try again.`),super(n||`Something went wrong, please try again.`,r),this.response=e,this.data=t}},R=class extends L{data;constructor(e,t,n,r){super(e,t,n,r),this.data=t}},_e=class extends R{constructor(e,t,n){super(e,t,`API server is running a newer version of Ghost, please upgrade.`,n)}},z=class extends L{constructor(e){super(void 0,void 0,`Something went wrong, please try again.`,e)}},B=class extends L{constructor(e){super(void 0,void 0,`Request timed out, please try again.`,e)}},V=class extends L{constructor(e,t,n){super(e,t,`Request is larger than the maximum file size the server allows`,n)}},H=class extends L{constructor(e,t,n){super(e,t,`Request contains an unknown or unsupported file type.`,n)}},U=class extends L{constructor(e,t,n){super(e,t,`Ghost is currently undergoing maintenance, please wait a moment then retry.`,n)}},W=class extends L{constructor(e,t,n){super(e,t,`You are not authorised to make this request.`,n)}},G=class extends W{},ve=class extends R{constructor(e,t,n){super(e,t,`Theme is not compatible or contains errors.`,n)}},K=class extends R{errorDetails;constructor(e,t,n){e instanceof Response?super(e,t,`A hosting plan limit was reached or exceeded.`,n):(super(void 0,void 0,e.message||`A hosting plan limit was reached or exceeded.`),this.errorDetails=e.errorDetails)}},ye=class extends R{constructor(e,t,n){super(e,t,`Please verify your email settings`,n)}},q=class extends R{constructor(e,t,n){super(e,t,t.errors[0].message,n)}};function J(e,t){let n=e instanceof R?e.data?.errors?.[0]:void 0;return n?.context||n?.message||t}var be=class extends Error{constructor(e){super(e)}};function xe(e){E.dismiss(),E.error(e)}var Y=()=>{let{sentryDSN:e}=y();return(0,j.useCallback)((t,{withToast:n=!0}={})=>{console.error(t),e&&!(t instanceof G)&&_(e=>{t instanceof L&&t.response&&(e.setTag(`api_url`,t.response.url),e.setTag(`api_response_status`,t.response.status)),m(t)}),n&&(t instanceof L&&t.response?.status===418||t instanceof G?E.dismiss():t instanceof L?xe(J(t,t.message)):xe(`Something went wrong, please try again.`))},[e])};function X(){let e=window.location.pathname,t=e.substr(0,e.search(`/ghost/`));return{subdir:t,adminRoot:`${t}/ghost/`,assetRoot:`${t}/ghost/assets/`,apiRoot:`${t}/ghost/api/admin`}}function Se(e){let t=document.getElementById(`iframeDownload`);t||(t=document.createElement(`iframe`),t.id=`iframeDownload`,t.style.display=`none`,document.body.append(t)),t.setAttribute(`src`,e)}function Ce(e){Se(`${X().apiRoot}${e}`)}function we(e){if(!e)return;let t=e.match(/filename\*=([^;]+)/i);if(t?.[1]){let e=t[1].trim(),n=e.indexOf(`'`),r=n===-1?-1:e.indexOf(`'`,n+1),i=r===-1?e:e.slice(r+1);try{return decodeURIComponent(i.replace(/^["']|["']$/g,``))}catch{}}let n=e.match(/filename="([^"]*)"/i);if(n?.[1])return n[1].trim();let r=e.match(/filename=([^;]+)/i);if(r?.[1])return r[1].trim()}async function Te(e,t,{signal:n}={}){let r=await fetch(e,{method:`GET`,signal:n});if(!r.ok)throw Error(`Download failed: ${r.status} ${r.statusText}`);let i=we(r.headers.get(`content-disposition`))??t??`download`,a=await r.blob(),o=window.URL.createObjectURL(a),s=document.createElement(`a`);s.href=o,s.download=i,document.body.appendChild(s),s.click(),s.remove(),window.URL.revokeObjectURL(o)}async function Ee(e,t,n={}){return Te(`${X().apiRoot}${e}`,t,n)}var De=e=>!!e&&(e.startsWith(`text/`)||e.includes(`application/yaml`)),Oe=async(e,{responseType:t}={})=>{if(e.status===0)throw new z;if(e.status===503)throw new U(e,await e.text());if(e.status===415)throw new H(e,await e.text());if(e.status===413)throw new V(e,await e.text());if(e.status===401)throw e.headers.get(`content-type`)?.includes(`json`)?new W(e,await e.json()):new W(e,await e.text());if(!e.ok){if(!e.headers.get(`content-type`)?.includes(`json`))throw new L(e,await e.text());let t=await e.json();throw e.status===403&&t.errors?.[0]?.message===`Authorization failed`?new W(e,t):t.errors?.[0]?.type===`VersionMismatchError`?new _e(e,t):t.errors?.[0]?.type===`ValidationError`||t.errors?.[0]?.type===`NoPermissionError`?new q(e,t):t.errors?.[0]?.type===`ThemeValidationError`?new ve(e,t):t.errors?.[0]?.type===`HostLimitError`?new K(e,t):t.errors?.[0]?.type===`EmailError`?new ye(e,t):new R(e,t)}else if(e.status===204)return;else if(t===`blob`)return await e.blob();else if(t===`arraybuffer`)return await e.arrayBuffer();else if(De(e.headers.get(`content-type`)))return await e.text();else return await e.json()},ke=e=>{let t=new Headers,n=e.getAllResponseHeaders()?.split(`\r
2
+ `)||[];for(let e of n){let n=e.indexOf(`:`);if(n===-1)continue;let r=e.slice(0,n),i=e.slice(n+1).trim();t.append(r,i)}return t},Ae=e=>new Response(e.response,{status:e.status,statusText:e.statusText,headers:ke(e)}),je=/\/ghost\/api\//,Me=/\/ghost\/api\/admin\/session([/?#]|$)/,Ne=/^#\/(?:reset|setup|signin|signup)(?:[/?]|$)/,Pe=!1,Fe=e=>window.location.pathname===e&&(!window.location.hash||window.location.hash===`#/`||Ne.test(window.location.hash)),Ie=e=>{let t=e.toString();return je.test(t)&&!Me.test(t)},Le=()=>{let{adminRoot:e}=X();!Pe&&!Fe(e)&&(Pe=!0,window.location.replace(e))},Re=(e,t,{method:n,headers:r,credentials:i,body:a,signal:o})=>new Promise((s,c)=>{let l=()=>{c(new DOMException(`Aborted`,`AbortError`))};if(o.aborted){l();return}let u=new XMLHttpRequest;switch(u.open(n,t.toString(),!0),i){case`omit`:throw Error(`"omit" credentials cannot be represented with legacy XMLHttpRequest. Consider "same-origin".`);case`same-origin`:u.withCredentials=!1;break;case`include`:u.withCredentials=!0;break;default:throw Error(i)}u.responseType=`arraybuffer`;for(let[e,t]of Object.entries(r))u.setRequestHeader(e,t);u.upload.onprogress=t=>{t.lengthComputable&&e(t.loaded/t.total*100)},u.onload=()=>{s(Ae(u))},u.onerror=()=>{c(TypeError(`Network request failed`))},u.onabort=l;let d=()=>u.abort();o.addEventListener(`abort`,d),u.onloadend=()=>{o.removeEventListener(`abort`,d)},u.send(a)}),Z=()=>{let{ghostVersion:e,sentryDSN:t}=y();return(0,j.useCallback)(async(n,{method:r=`GET`,headers:i={},body:a,credentials:o=`include`,timeout:c,retry:l=!0,responseType:u,sessionExpiryRedirect:d=!0,onUploadProgress:f}={})=>{let p=new AbortController,m={method:r,headers:{"app-pragma":`no-cache`,...e?{"x-ghost-version":e}:{},...typeof a==`string`?{"content-type":`application/json`}:{},...i},credentials:o,mode:`cors`,body:a,signal:p.signal},h=0,g=0,_=Date.now(),v=[500,1e3],y=[z,U,TypeError],b=(e,t)=>{let r={errorName:e?.name,attempts:h,totalSeconds:g/1e3,endpoint:n.toString()};return n.toString().includes(`/ghost/api/`)&&(r.server=t?.headers.get(`server`)),r},x=f?Re.bind(null,f):fetch,S=c?setTimeout(()=>p.abort(),c):void 0;try{for(;h===0||l;)try{return await Oe(await x(n,m),{responseType:u})}catch(e){if(g=Date.now()-_,l&&y.some(t=>e instanceof t)&&g<=15e3){await new Promise(e=>{setTimeout(e,v[h]||v[v.length-1])}),h+=1;continue}if(h!==0&&t&&s(`Request failed after multiple attempts`,{extra:b()}),e&&typeof e==`object`&&`name`in e&&e.name===`AbortError`)throw new B;if(e instanceof W&&Ie(n))throw d&&Le(),new G(e.response,e.data,{cause:e});let r=e;throw e instanceof L||(r=new z({cause:e})),r}}finally{clearTimeout(S)}},[e,t])},{apiRoot:ze}=X(),Q=(e,t={})=>{let n=new URL(`${ze}${e}`,window.location.origin);return n.search=new URLSearchParams(t).toString(),n.toString()},Be=`UsersResponseType`,Ve=Q(`/users/me/`,{include:`roles`}),He=[Be,Ve],Ue=({requestOptions:e}={})=>{let t=Z(),n=Y(),r=P({queryKey:He,queryFn:()=>t(Ve,e),select:e=>e.users[0]});return(0,j.useEffect)(()=>{r.error&&n(r.error)},[n,r.error]),r},We=(e,t)=>{let{data:n}=Ue(t);if(!e||e.length===0)return!0;let r=n?.roles.map(e=>e.name);return r?e.some(e=>r.includes(e)):!1},$=e=>({searchParams:t,requestOptions:n,...r}={})=>{let i=Q(e.path,t||e.defaultSearchParams),a=Z(),o=Y(),s=We(e.permissions,{requestOptions:n}),c=P({...r,enabled:s&&(r.enabled??!0),queryKey:[e.dataType,i],queryFn:async()=>{if(e.parseResponse){let t=await a(i,{headers:e.headers,...n});return e.parseResponse(t)}return a(i,{headers:e.headers,...n})}}),l=(0,j.useMemo)(()=>c.data&&e.returnData?e.returnData(c.data):c.data,[c.data]);return(0,j.useEffect)(()=>{c.error&&r.defaultErrorHandler!==!1&&o(c.error)},[o,c.error,r.defaultErrorHandler]),{...c,data:l}},Ge=e=>({searchParams:t,requestOptions:n,getNextPageParams:r,...i}={})=>{let a=Z(),o=Y(),s=We(e.permissions,{requestOptions:n}),c=r||e.defaultNextPageParams||(()=>({})),l=I({...i,enabled:s&&(i.enabled??!0),queryKey:[e.dataType,Q(e.path,t||e.defaultSearchParams)],queryFn:async({pageParam:r})=>{let i=Q(e.path,r||t||e.defaultSearchParams);if(e.parseResponse){let t=await a(i,{headers:e.headers,...n});return e.parseResponse(t)}return a(i,{headers:e.headers,...n})},initialPageParam:void 0,getNextPageParam:n=>c(n,t||e.defaultSearchParams||{})}),u=(0,j.useMemo)(()=>l.data&&e.returnData(l.data),[l.data]);return(0,j.useEffect)(()=>{l.error&&i.defaultErrorHandler!==!1&&o(l.error)},[o,l.error,i.defaultErrorHandler]),{...l,data:u}},Ke=e=>(t,{searchParams:n,...r}={})=>$({...e,path:e.path(t)})({searchParams:n||e.defaultSearchParams,...r}),qe=({fetchApi:e,path:t,payload:n,searchParams:r,options:i})=>{let{defaultSearchParams:a,body:o,requestOptions:s,...c}=i,l=Q(t,r||a),u=n&&o?.(n),d;return u instanceof FormData?d=u:u&&(d=JSON.stringify(u)),e(l,{body:d,...c,...n===void 0?{}:s?.(n)})},Je=({path:e,searchParams:t,defaultSearchParams:n,updateQueries:r,invalidateQueries:i,...a})=>()=>{let o=Z(),s=b(),{onUpdate:c,onInvalidate:l,onDelete:u}=y();return F({mutationFn:r=>qe({fetchApi:o,path:e(r),payload:r,searchParams:t?.(r)||n,options:a}),onSuccess:(0,j.useCallback)((e,t)=>{if(i&&`dataType`in i){let e=Array.isArray(i.dataType)?i.dataType:[i.dataType];for(let t of e)s.invalidateQueries({queryKey:[t]}),l(t)}else i&&s.invalidateQueries(i.filters,i.options);if(r){if(s.setQueriesData({queryKey:[r.dataType]},n=>r.update(e,n,t)),r.emberUpdateType===`createOrUpdate`)c(r.dataType,e);else if(r.emberUpdateType===`delete`){if(typeof t!=`string`)throw Error(`Expected delete mutation to have a string (ID) payload. Either change the payload or update the createMutation hook`);u(r.dataType,t)}}},[l,c,u,s])})};export{W as C,I as D,J as E,F as O,B as S,q as T,R as _,He as a,z as b,Q as c,Ce as d,X as f,K as g,be as h,Ke as i,P as k,Z as l,L as m,Je as n,Ue as o,Y as p,$ as r,Be as s,Ge as t,Ee as u,U as v,H as w,G as x,V as y};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{i as n}from"./framework-provider-DB-svAju.js";import{t as r}from"./jsx-runtime-BlNNh7jY.js";import{Z as i,s as a}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as o}from"./input-surface-CL23Mlh8.js";import{o as s,r as c}from"./field-BXEh3ptU.js";import{Qr as l}from"./index-DOF2jDq0.js";import{n as u,t as d}from"./koenig-loader-BzXCXHoA.js";var f=e(t(),1),p=r(),m=({editor:e,onBlur:t,placeholder:r,nodes:i,emojiPicker:o=!0,darkMode:s=!1,singleParagraph:c=!1,children:l,initialEditorState:u,onChange:d,fileUploader:m,cardConfig:h,registerAPI:g})=>{let _=(0,f.useCallback)(e=>{try{n({error:e,tags:{lexical:!0},contexts:{koenig:{version:window[`@tryghost/koenig-lexical`]?.version}}})}catch(e){console.error(e)}console.error(e)},[]),{setFocusState:v}=a(),y=()=>{t&&t(),v(!1)},b=()=>{v(!0)},x=(0,f.useMemo)(()=>new Proxy({},{get:(t,n)=>e.read()[n]}),[e]),S={DEFAULT_NODES:x.DEFAULT_TRANSFORMERS,BASIC_NODES:x.BASIC_TRANSFORMERS,MINIMAL_NODES:x.MINIMAL_TRANSFORMERS,EMAIL_NODES:x.EMAIL_TRANSFORMERS,EMAIL_EDITOR_NODES:x.EMAIL_TRANSFORMERS},C=i||`DEFAULT_NODES`;return(0,p.jsx)(x.KoenigComposer,{cardConfig:h,darkMode:s,fileUploader:m,initialEditorState:u,nodes:x[C],onError:_,children:(0,p.jsxs)(x.KoenigComposableEditor,{className:`koenig-lexical koenig-lexical-editor-input`,isSnippetsEnabled:!1,markdownTransformers:S[C],placeholderClassName:`koenig-lexical-editor-input-placeholder line-clamp-1`,placeholderText:r,registerAPI:g,singleParagraph:c,onBlur:y,onChange:d,onFocus:b,children:[l(x),o?(0,p.jsx)(x.EmojiPickerPlugin,{}):null]})})},h=({className:e,children:t,initialEditorState:n,onChange:r,inheritFontStyles:i=!0,loadingFallback:o,...s})=>{let{darkMode:c}=a(),l=(0,f.useMemo)(()=>d(),[]);return(0,p.jsx)(`div`,{className:e||`w-full`,children:(0,p.jsx)(`div`,{className:`koenig-react-editor w-full ${i?`[&_*]:font-inherit! [&_*]:[font-size:inherit]!`:``}`,children:(0,p.jsx)(u,{name:`editor`,children:(0,p.jsx)(f.Suspense,{fallback:o||(0,p.jsx)(`p`,{className:`koenig-react-editor-loading`,children:`Loading editor...`}),children:(0,p.jsx)(m,{...s,darkMode:c,editor:l,initialEditorState:n,onChange:r,children:t})})})})})},g=({value:e,onChange:t,singleParagraph:n=!0,...r})=>{let i=(0,f.useCallback)(n=>{let r=new DOMParser().parseFromString(n,`text/html`);r.querySelectorAll(`*`).forEach(e=>{e.style.removeProperty(`white-space`),e.getAttribute(`style`)||e.removeAttribute(`style`)}),r.body.innerHTML!==e&&t?.(r.body.innerHTML)},[e,t]);return(0,p.jsx)(h,{...r,singleParagraph:n,children:t=>(0,p.jsx)(t.HtmlOutputPlugin,{html:e,setHtml:i})})},_=({title:e,hideTitle:t,error:n,hint:r,value:a,clearBg:u=!1,className:d=``,containerClassName:f=``,hintClassName:m=``,unstyled:h=!1,..._})=>{let v=h?``:i(o(`within`),`flex min-h-8 items-center py-1.5 md:min-h-[var(--control-height)]`,u?`bg-transparent`:`px-3`,n&&`border-destructive`,e&&!t&&!u&&`mt-2`,d);return(0,p.jsxs)(l,{className:f,gap:`none`,children:[e&&(0,p.jsx)(s,{className:t?`sr-only`:void 0,children:e}),(0,p.jsx)(`div`,{className:v,children:(0,p.jsx)(g,{..._,value:a})}),r&&(0,p.jsx)(c,{className:i(`last:mt-2`,n&&`text-destructive`,m),children:r})]})};export{_ as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{i as n}from"./framework-provider-DB-svAju.js";import{t as r}from"./jsx-runtime-BlNNh7jY.js";import{t as i}from"./debounce-pscB46sW.js";var a=e(t(),1),o=r(),s=({generateContent:e,updateContent:t,className:r,height:s,width:c,parentClassName:l,testId:u,addDelay:d=!1})=>{let[f,p]=(0,a.useState)(0),m=[(0,a.useRef)(null),(0,a.useRef)(null)],[h,g]=(0,a.useState)(0);return(0,a.useEffect)(()=>{let t=+(f===0),n=m[t].current;if(n){e(n);let r=()=>{d?setTimeout(()=>{p(t)},500):p(t)};return n.addEventListener(`load`,r),()=>{n.removeEventListener(`load`,r)}}},[e]),(0,a.useEffect)(()=>{let e=m[f].current,t=i(()=>{g(e?.contentWindow?.scrollY||0)},250);return e?.contentWindow?.addEventListener(`scroll`,t),()=>{e?.contentWindow?.removeEventListener(`scroll`,t)}},[f,m]),(0,a.useEffect)(()=>{let e=m[f].current;if(e)try{e.contentWindow?.scrollTo(0,h)}catch(e){n(e)}},[h,f,m]),(0,a.useEffect)(()=>{t&&m.forEach(({current:e})=>{e&&t(e)})},[t]),(0,o.jsxs)(`div`,{className:l,"data-testid":u,children:[(0,o.jsx)(`iframe`,{ref:m[0],className:`${r} ${f===0?`z-20 opacity-100`:`z-10 opacity-0`}`,"data-visible":f===0,frameBorder:`0`,height:s,title:`Buffered Preview 1`,width:c}),(0,o.jsx)(`iframe`,{ref:m[1],className:`${r} ${f===1?`z-20 opacity-100`:`z-10 opacity-0`}`,"data-visible":f===1,frameBorder:`0`,height:s,title:`Buffered Preview 2`,width:c})]})};export{s as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{n}from"./hooks-DYfTEQLk.js";import{t as r}from"./jsx-runtime-BlNNh7jY.js";import{L as i,P as a}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{d as o,m as s,r as c}from"./schemas-BoYdB6YU.js";import{t as l}from"./button-D414TI3B.js";import{t as u}from"./dropzone-B2auMkf2.js";var d=e(t(),1),f=r(),p=d.forwardRef(({className:e,...t},n)=>(0,f.jsx)(`div`,{ref:n,className:i(`relative overflow-hidden rounded-md`,e),"data-slot":`image-upload`,...t}));p.displayName=`ImageUpload`;var m=d.forwardRef(({className:e,variant:t=`filled`,...n},r)=>(0,f.jsx)(u,{ref:r,className:i(`size-full text-foreground`,e),"data-slot":`image-upload-dropzone`,variant:t,...n}));m.displayName=`ImageUploadDropzone`;var h=a(`group relative flex size-full items-center justify-center overflow-hidden rounded-md bg-muted`,{variants:{background:{default:``,checkerboard:`[background-image:repeating-conic-gradient(var(--border-default)_0%_25%,var(--surface-elevated)_0%_50%)] [background-size:16px_16px]`}},defaultVariants:{background:`default`}}),g=d.forwardRef(({background:e,className:t,...n},r)=>(0,f.jsx)(`div`,{ref:r,className:i(h({background:e}),t),"data-slot":`image-upload-preview`,"data-testid":`image-upload-container`,...n}));g.displayName=`ImageUploadPreview`;var _=d.forwardRef(({alt:e=``,className:t,...n},r)=>(0,f.jsx)(`img`,{ref:r,alt:e,className:i(`size-full object-cover`,t),"data-slot":`image-upload-image`,...n}));_.displayName=`ImageUploadImage`;var v=d.forwardRef(({className:e,...t},n)=>(0,f.jsx)(`div`,{ref:n,className:i(`absolute top-2 right-2 flex gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 [@media(hover:none)]:opacity-100`,e),"data-slot":`image-upload-actions`,...t}));v.displayName=`ImageUploadActions`;var y=d.forwardRef(({className:e,size:t=`icon`,variant:n=`ghost`,...r},a)=>(0,f.jsx)(l,{ref:a,className:i(`size-8 bg-surface-inverse text-surface-inverse-foreground hover:bg-surface-inverse/90 hover:text-surface-inverse-foreground`,e),"data-slot":`image-upload-action`,size:t,variant:n,...r}));y.displayName=`ImageUploadAction`;var b=n({method:`POST`,path:()=>`/images/upload/`,body:({file:e})=>{let t=new FormData;return t.append(`file`,e),t.append(`purpose`,`image`),t},requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e})}),x=o({images:c(o({url:s().min(1)})).min(1)}),S=e=>x.parse(e).images[0].url;export{v as a,g as c,y as i,b as n,m as o,p as r,_ as s,S as t};