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{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{t as r}from"./use-tinybird-query-BaBNCaj0.js";import{i}from"./pagemenu-CKQD9hoP.js";import{r as a}from"./posts-tcoO3iRG.js";import{o}from"./config-BPljH6wF.js";import{t as s}from"./analytics-53FOa2wq.js";import{t as c}from"./post-utils-DKF4mfuo.js";import{t as l}from"./post-helpers-C88JBa4D.js";import{a as u}from"./router-provider-DDZvgS3V.js";import{F as d,H as f,L as p,R as m,U as h,c as g}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{r as _}from"./heading-ih-fOVqF.js";import{t as v}from"./use-host-limits-mpTkZIq8.js";import{r as y}from"./trend-badge-1w_HEzkG.js";import{At as b,On as x,Rn as S,X as C,Yt as w,et as T,g as E,ir as D,kt as O,lr as k,r as A,sr as ee,t as j,u as te,vn as M,xt as ne}from"./button-D414TI3B.js";import{n as re,t as N}from"./skeleton-CPcTiTSX.js";import{a as P,n as F,o as I,r as L,s as ie,t as R}from"./card-C2dfd5u0.js";import{t as z}from"./empty-indicator-CSQts7GV.js";import{Di as B,Ei as ae,Mi as V,O as H,T as oe,Ti as se,Tn as ce,i as le,ki as U,y as ue}from"./index-DOF2jDq0.js";import{n as de,r as fe,t as pe}from"./kpi-card-jTnpLKGr.js";import{i as me,n as he,r as ge,t as _e}from"./stats-view-CzpGoHzF.js";import{g as ve,u as ye}from"./stats-Cvp8Ep5m.js";import{a as be,c as W,i as G,n as K,r as xe,t as q}from"./chart-helpers-Czu_9QpJ.js";import{t as Se}from"./use-growth-stats-E13rMQUE.js";import{t as J}from"./use-analytics-data-B3lGOxsC.js";import{n as Ce}from"./audience-wRcSN0jV.js";import{n as we}from"./url-helpers-DcQbx-Xg.js";import{t as Te}from"./get-site-timezone-HgL0jI_F.js";import{t as Ee}from"./post-share-modal-wxmqbAv_.js";import{t as De}from"./feature-image-placeholder-DFXA4vfJ.js";var Y=e(t(),1),Oe=()=>{let{data:{posts:[e]}={posts:[]},isLoading:t}=a({searchParams:{filter:`status:[published,sent]`,order:`published_at DESC`,limit:`1`,include:`authors,email,count.clicks`}}),n=e,{data:r,isLoading:i}=ye(n?.id||``,{enabled:!!n?.id});return{data:(0,Y.useMemo)(()=>{if(!n)return null;let e=r?.stats?.[0]||{id:n.id,recipient_count:null,opened_count:null,open_rate:null,member_delta:0,free_members:0,paid_members:0,visitors:0};return{id:n.id,uuid:n.uuid,title:n.title||``,slug:n.slug||``,feature_image:n.feature_image||null,published_at:n.published_at||``,url:n.url||``,excerpt:n.excerpt||``,email_only:n.email_only||!1,status:n.status,email:n.email,count:n.count,authors:n.authors||[],recipient_count:e.recipient_count,opened_count:e.opened_count,open_rate:e.open_rate,member_delta:e.member_delta,free_members:e.free_members,paid_members:e.paid_members,visitors:e.visitors,click_rate:null}},[n,r]),isLoading:t||!!n?.id&&i}},X=n(),ke=e=>e.email_only?`Sent`:e.email?`Published and sent`:`Published`,Ae=({latestPostStats:e,isLoading:t})=>{let n=u(),[r,i]=(0,Y.useState)(!1),{site:a,settings:o}=J(),c=se(),d=ae(),g=V(),_=B()??!1;(0,Y.useEffect)(()=>{r&&s(`Share Modal Opened`,{giftLinkShown:!1,source:`stats-overview`})},[r]);let v=a.title||String(o.find(e=>e.key===`title`)?.value||`Ghost Site`),y=Te(o),S=e?l(e,{membersTrackSources:_}):null,T=`group mr-2 flex flex-col gap-1.5 hover:cursor-pointer`,D=!!e?.email,O=we({postId:e?.id,hasEmailData:D,analytics:{webAnalytics:g,membersTrackSources:_}}),k=O.startsWith(`/editor/`),A=le(O);return(0,X.jsxs)(R,{className:`group/card`,"data-testid":`latest-post`,children:[(0,X.jsxs)(P,{children:[(0,X.jsx)(I,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:`Latest post performance`}),(0,X.jsx)(L,{className:`hidden`,children:`How your last post did`})]}),(0,X.jsxs)(F,{className:`flex flex-col gap-6 px-0 lg:flex-row xl:grid xl:grid-cols-3`,children:[t&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex w-full items-center gap-6 px-6 xl:col-span-2`,children:[(0,X.jsx)(`div`,{className:`w-full max-w-[232px] grow`,children:(0,X.jsx)(N,{className:`aspect-[16/10] rounded-md`})}),(0,X.jsxs)(`div`,{className:`w-full grow`,children:[(0,X.jsx)(N,{className:`w-full max-w-[420px]`}),(0,X.jsx)(N,{className:`w-1/2`})]})]}),(0,X.jsx)(`div`,{className:`flex flex-col items-stretch gap-2 px-6`,children:(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-5`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(N,{className:`w-3/4`}),(0,X.jsx)(N,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(N,{className:`w-3/4`}),(0,X.jsx)(N,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(N,{className:`w-3/4`}),(0,X.jsx)(N,{className:`h-10 w-1/3`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(N,{className:`w-3/4`}),(0,X.jsx)(N,{className:`h-10 w-1/3`})]})]})})]}),!t&&e&&S?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex flex-col gap-6 px-6 transition-all md:flex-row md:items-start xl:col-span-2`,children:[e.feature_image&&(0,X.jsx)(`div`,{className:`aspect-[16/10] w-full min-w-[100px] rounded-sm bg-cover bg-center sm:max-w-[170px] lg:max-w-[170px] xl:max-w-[232px]`,style:{backgroundImage:`url(${e.feature_image})`}}),(0,X.jsxs)(`div`,{className:`flex grow flex-col items-start justify-center self-stretch`,children:[(0,X.jsx)(`div`,{className:`text-md leading-tighter font-semibold tracking-tight wrap-anywhere hover:cursor-pointer hover:opacity-75`,onClick:()=>{!t&&e&&n(O,{crossApp:A})},children:e.title}),(0,X.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[e.authors&&e.authors.length>0&&(0,X.jsxs)(`div`,{children:[`By `,e.authors.map(e=>e.name).join(`, `),` –`,` `,m(e.published_at,y)]}),(0,X.jsx)(`div`,{className:`mt-0.5`,children:ke(e)})]}),(0,X.jsxs)(`div`,{className:`mt-6 flex items-center gap-2`,children:[!e.email_only&&(0,X.jsx)(Ee,{author:e.authors?.map(e=>e.name).join(`, `)||``,description:``,faviconURL:a.icon||``,featureImageURL:e.feature_image||``,open:r,postExcerpt:e.excerpt||``,postTitle:e.title,postURL:e.url||``,siteTitle:v,onClose:()=>i(!1),onOpenChange:i,children:(0,X.jsxs)(j,{onClick:()=>i(!0),children:[(0,X.jsx)(C,{}),` Share post`]})}),(0,X.jsx)(j,{className:e.email_only?`w-full`:``,variant:k?`outline`:`subtle`,onClick:()=>{n(O,{crossApp:A})},children:k?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ne,{}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Edit post`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ee,{}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:e.email_only?`Post analytics`:`Analytics`})]})})]})]})]}),(0,X.jsx)(`div`,{className:`flex w-full flex-col items-stretch gap-2 px-6 lg:-ml-4 lg:pr-6 lg:pl-0 xl:h-full xl:max-w-none`,children:(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-6 lg:border-l lg:pl-10 xl:h-full`,children:[S.showWebMetrics&&g&&(0,X.jsxs)(`div`,{className:T,"data-testid":`latest-post-visitors`,onClick:()=>{n(`/posts/analytics/${e.id}/web`)},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(M,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Visitors`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:f(e.visitors)})]}),S.showMemberGrowth&&(0,X.jsxs)(`div`,{className:p(T,S.showEmailMetrics&&(!S.showWebMetrics||!g)&&`col-[1/2] row-[2/3]`),"data-testid":`latest-post-members`,onClick:()=>{n(`/posts/analytics/${e.id}/growth`)},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(E,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden md:visible! md:block!`,children:`Members`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.member_delta?(0,X.jsxs)(X.Fragment,{children:[`+`,f(e.member_delta)]}):0})]}),S.showEmailMetrics&&e.email&&(0,X.jsxs)(X.Fragment,{children:[d&&(0,X.jsxs)(`div`,{className:T,onClick:()=>{n(`/posts/analytics/${e.id}/newsletter`)},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(w,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden whitespace-nowrap md:visible! md:block!`,children:`Opens`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.email.email_count?h((e.email.opened_count||0)/e.email.email_count):`0%`})]}),c&&(0,X.jsxs)(`div`,{className:T,onClick:()=>{n(`/posts/analytics/${e.id}/newsletter`)},children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground`,children:[(0,X.jsx)(b,{size:16,strokeWidth:1.25}),(0,X.jsx)(`span`,{className:`hidden whitespace-nowrap md:visible! md:block!`,children:`Clicks`})]}),(0,X.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold tracking-tighter`,children:e.email.email_count&&e.count?.clicks?h((e.count.clicks||0)/e.email.email_count):`0%`})]})]})]})})]}):!t&&(0,X.jsx)(z,{actions:(0,X.jsx)(j,{variant:`secondary`,onClick:()=>{n(`/editor/post`,{crossApp:!0})},children:`New post`}),className:`w-full pb-10 xl:col-span-3`,description:`Once it's live, you can track performance here`,title:`Publish your first post`,children:(0,X.jsx)(x,{strokeWidth:1.5})})]})]})},Z=({title:e,iconName:t,description:n,color:r,diffDirection:i,diffValue:a,formattedValue:o,trendingFromValue:s,children:c,onClick:l})=>{let{range:u}=H(),{isAdmin7:d}=g(),f=t&&A[t],p=Y.useMemo(()=>{if(!i||i===`empty`||u===oe.allTime.value||!a)return``;let e=i===`up`?`up`:i===`down`?`down`:`at`,t=G(u).replace(`in the `,``).replace(/^\(|\)$/g,``);return i===`same`?(0,X.jsxs)(`span`,{children:[`You're trending at the same level as`,` `,(0,X.jsx)(`span`,{className:`font-semibold`,children:o}),` compared to the`,` `,(0,X.jsx)(`span`,{className:`font-semibold`,children:t})]}):(0,X.jsxs)(`span`,{children:[`You're trending`,` `,(0,X.jsxs)(`span`,{className:`font-semibold`,children:[e,` `,a]}),` `,`from `,(0,X.jsx)(`span`,{className:`font-semibold`,children:s}),` compared to the`,` `,t]})},[i,a,s,o,u]);return(0,X.jsxs)(R,{className:`group`,"data-testid":e,children:[(0,X.jsxs)(P,{className:`hidden`,children:[(0,X.jsx)(I,{children:e}),(0,X.jsx)(L,{children:n})]}),(0,X.jsxs)(pe,{className:`relative flex grow flex-row items-start justify-between gap-5 border-none pb-2 xl:pb-4`,children:[(0,X.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,X.jsxs)(de,{className:l&&`transition-all group-hover:text-foreground`,children:[r&&(0,X.jsx)(`span`,{className:`inline-block size-2 rounded-full opacity-50`,style:{backgroundColor:r}}),f&&(0,X.jsx)(f,{size:16,strokeWidth:1.5}),e]}),(0,X.jsx)(fe,{diffDirection:u===oe.allTime.value?`hidden`:i,diffTooltip:p,diffValue:a,value:o})]}),l&&(0,X.jsx)(j,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`subtle`,onClick:l,children:d?`View more →`:`View more`})]}),(0,X.jsx)(F,{children:c})]})},je=({kpiValues:e,visitorsChartData:t,visitorsChartRange:n,visitorsYRange:r,growthTotals:i,membersChartData:a,mrrChartData:s,growthChartRange:c,currencySymbol:l,isLoading:d})=>{let p=u(),m=V(),h=U(),g=v(),{config:_}=J(),b=g?.limitAnalytics?.disabled===!0,x=`-mb-3 h-[10vw] max-h-[200px] min-h-[100px] hover:cursor-pointer!`;if(d)return(0,X.jsx)(ie,{className:`flex h-[calc(10vw+116px)] max-h-[416px] min-h-20 items-center justify-center hover:cursor-pointer!`,children:(0,X.jsx)(ce,{})});let S=m,C=b&&!S,w=h,T=[S,C,!0,w].filter(Boolean).length,E=`lg:grid-cols-3`;return T===2?E=`lg:grid-cols-2`:T===1&&(E=`lg:grid-cols-1`),(0,X.jsxs)(`div`,{className:`flex flex-col lg:grid ${E} gap-6`,children:[S&&!C&&(0,X.jsx)(Z,{description:`Number of individual people who visited your website`,diffDirection:`empty`,formattedValue:e.visits,iconName:`Globe`,linkto:`/analytics/web/`,title:`Unique visitors`,onClick:()=>{p(`/analytics/web/`)},children:(0,X.jsx)(y,{className:x,color:`var(--chart-blue)`,data:t,id:`visitors`,range:n,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`,yAxisRange:r})}),C&&(0,X.jsxs)(R,{children:[(0,X.jsxs)(P,{className:`hidden`,children:[(0,X.jsx)(I,{children:`Unlock web analytics`}),(0,X.jsx)(L,{children:`Get the full picture of what's working with detailed, cookie-free traffic analytics.`})]}),(0,X.jsx)(F,{className:`flex h-full items-center justify-center p-6`,children:(0,X.jsx)(z,{actions:(0,X.jsx)(j,{variant:`outline`,onClick:()=>p(o(_),{crossApp:!0}),children:`Upgrade now`}),className:`py-10`,description:`Get the full picture of what's working with detailed, cookie-free traffic analytics.`,title:`Unlock web analytics`,children:(0,X.jsx)(D,{})})})]}),(0,X.jsx)(Z,{description:`How number of members of your publication changed over time`,diffDirection:i.directions.total,diffValue:i.percentChanges.total,formattedValue:f(i.totalMembers),iconName:`User`,linkto:`/analytics/growth/`,title:`Members`,trendingFromValue:`${f(a[0]?.value??0)}`,onClick:()=>{p(`/analytics/growth/?tab=total-members`)},children:(0,X.jsx)(y,{className:x,color:`var(--chart-darkblue)`,data:a,id:`members`,range:c,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})}),w&&(0,X.jsx)(Z,{description:`Monthly recurring revenue changes over time`,diffDirection:i.directions.mrr,diffValue:i.percentChanges.mrr,formattedValue:`${l}${f(q(i.mrr))}`,iconName:`Coins`,linkto:`/analytics/growth/`,title:`MRR`,trendingFromValue:`${l}${f(s[0]?.value??0)}`,onClick:()=>{p(`/analytics/growth/?tab=mrr`)},children:(0,X.jsx)(y,{className:x,color:`var(--chart-teal)`,data:s,id:`mrr`,range:c,showHorizontalLines:!0,showYAxisValues:!1,syncId:`overview-charts`})})]})},Q=({metrics:e,title:t})=>(0,X.jsx)(X.Fragment,{children:(0,X.jsxs)(`div`,{className:`pointer-events-none absolute right-0 bottom-[calc(100%+2px)] z-50 min-w-[160px] rounded-md bg-background p-3 text-sm opacity-0 shadow-md transition-all group-hover/tooltip:bottom-[calc(100%+12px)] group-hover/tooltip:opacity-100`,children:[(0,X.jsx)(`div`,{className:`mb-1.5 border-b pr-10 pb-1.5 font-medium whitespace-nowrap text-muted-foreground`,children:t}),(0,X.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e?.map(e=>(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-5`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 whitespace-nowrap`,children:[e.icon,e.label]}),(0,X.jsx)(`span`,{className:`font-mono`,children:e.metric})]},e.label))})]})}),Me=({topPostsData:e,isLoading:t})=>{let n=u(),r=le(`/editor`),{range:i}=H(),{settings:a}=J(),o=U(),s=Te(a),l=V(),p=B()??!1,h=se()??!1,g=ae()??!1,_=`flex items-center justify-end gap-1 rounded-md px-2 py-1 font-mono text-gray-800 hover:bg-muted-foreground/10 group-hover:text-foreground`;return(0,X.jsxs)(R,{className:`group/card w-full lg:col-span-2`,"data-testid":`top-posts-card`,children:[(0,X.jsxs)(P,{children:[(0,X.jsxs)(I,{className:`flex items-baseline justify-between leading-snug font-medium text-muted-foreground`,children:[`Top posts `,G(i)]}),(0,X.jsx)(L,{className:`hidden`,children:`Most viewed posts in this period`})]}),(0,X.jsx)(F,{children:t?(0,X.jsx)(re,{className:`mt-6`}):(0,X.jsxs)(X.Fragment,{children:[e?.stats?.map(e=>(0,X.jsxs)(`div`,{className:`group relative flex w-full items-start justify-between gap-5 border-t border-border/50 py-4 before:absolute before:-inset-x-4 before:inset-y-0 before:z-0 before:hidden before:rounded-md before:bg-table-row-hover before:content-[""] first:border-border! hover:cursor-pointer hover:border-transparent hover:before:block md:items-center [&+div]:hover:border-transparent`,children:[(0,X.jsxs)(`div`,{className:`z-10 flex min-w-[160px] grow items-start gap-4 md:items-center lg:min-w-[320px]`,onClick:()=>{let t=we({postId:e.post_id,hasEmailData:e.sent_count!==null,analytics:{webAnalytics:l,membersTrackSources:p}});n(t,{crossApp:t.startsWith(`/editor/`)&&r})},children:[e.feature_image?(0,X.jsx)(`div`,{className:`hidden aspect-[16/10] w-[80px] shrink-0 rounded-sm bg-cover bg-center sm:visible! sm:block! lg:w-[100px]`,style:{backgroundImage:`url(${e.feature_image})`}}):(0,X.jsx)(De,{className:`hidden aspect-[16/10] w-[80px] shrink-0 group-hover:bg-muted-foreground/10 sm:visible! sm:flex! lg:w-[100px]`}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,X.jsx)(`span`,{className:`line-clamp-2 text-md font-semibold wrap-anywhere`,children:e.title}),(0,X.jsxs)(`span`,{className:`text text-muted-foreground`,children:[`By `,e.authors,` –`,` `,m(e.published_at,s)]}),(0,X.jsx)(`span`,{className:`text text-muted-foreground`,children:c(e)})]})]}),(0,X.jsxs)(`div`,{className:`z-10 flex flex-col items-end justify-center gap-0.5 text-sm md:flex-row md:items-center md:justify-end md:gap-3`,children:[l&&(0,X.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,"data-testid":`statistics-visitors`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/web`)},children:[(0,X.jsx)(Q,{metrics:[{icon:(0,X.jsx)(M,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Unique visitors`,metric:f(e.views)}],title:`Web traffic`}),(0,X.jsxs)(`div`,{className:_,children:[(0,X.jsx)(M,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),d(e.views)]})]}),e.sent_count!==null&&(0,X.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/newsletter`)},children:[(0,X.jsx)(Q,{metrics:[{icon:(0,X.jsx)(T,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Sent`,metric:f(e.sent_count||0)},...g?[{icon:(0,X.jsx)(w,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Opens`,metric:f(e.opened_count||0)}]:[],...h?[{icon:(0,X.jsx)(O,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Clicks`,metric:f(e.clicked_count||0)}]:[]],title:`Newsletter performance`}),(0,X.jsx)(`div`,{className:_,children:g?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(w,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.open_rate?`${Math.round(e.open_rate)}%`:`0%`]}):h?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(O,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.click_rate?`${Math.round(e.click_rate)}%`:`0%`]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(T,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),d(e.sent_count||0)]})})]}),p&&(0,X.jsxs)(`div`,{className:`group/tooltip relative flex w-[66px] lg:w-[92px]`,"data-testid":`statistics-members`,onClick:t=>{t.stopPropagation(),n(`/posts/analytics/${e.post_id}/growth`)},children:[(0,X.jsx)(Q,{metrics:[{icon:(0,X.jsx)(te,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Free`,metric:e.free_members>0?`+${f(e.free_members)}`:`0`},...o?[{icon:(0,X.jsx)(S,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),label:`Paid`,metric:e.paid_members>0?`+${f(e.paid_members)}`:`0`}]:[]],title:`New members`}),(0,X.jsxs)(`div`,{className:_,children:[(0,X.jsx)(E,{className:`text-muted-foreground group-hover:text-foreground`,size:16,strokeWidth:1.5}),e.members>0?`+${f(e.members)}`:`0`]})]})]})]},e.post_id)),(!e?.stats||e.stats.length===0)&&(0,X.jsx)(z,{className:`w-full pb-10`,title:`No posts ${G(i)}`,children:(0,X.jsx)(x,{strokeWidth:1.5})})]})})]})},$=({className:e,title:t,description:n,url:r,children:i})=>(0,X.jsx)(`a`,{className:p(`group/card block rounded-xl border bg-card p-6 transition-all hover:bg-table-row-hover hover:shadow-xs`,e),href:r,rel:`noreferrer`,target:`_blank`,children:(0,X.jsxs)(`div`,{className:`flex items-center gap-6`,children:[i,(0,X.jsxs)(`div`,{className:`flex flex-col gap-0.5 leading-tight`,children:[(0,X.jsx)(`span`,{className:`text-base font-semibold`,children:t}),(0,X.jsx)(`span`,{className:`text-sm font-normal text-gray-700`,children:n})]})]})}),Ne=()=>{let e=U(),{range:t}=H(),{statsConfig:n,isLoading:a}=J(),{startDate:o,endDate:s,timezone:c}=be(t),{isLoading:l,chartData:u,totals:d,currencySymbol:p}=Se(t),{data:m,isLoading:h}=Oe(),{data:g,isLoading:v}=ve({searchParams:{date_from:K(o),date_to:K(s),limit:`5`,timezone:c}}),{data:y,loading:b}=r({endpoint:`api_kpis`,statsConfig:n,params:{site_uuid:n?.id||``,date_from:K(o),date_to:K(s),timezone:c,member_status:Ce(ue)}}),x=(0,Y.useMemo)(()=>W(y||[],t,`visits`,`sum`)?.map(e=>{let t=Number(e.visits),n=isNaN(t)?0:t;return{date:String(e.date),value:n,formattedValue:f(n),label:`Visitors`}}),[y,t]),S=(0,Y.useMemo)(()=>xe(t,y||[],{fieldName:`visits`}),[y,t]),C=(0,Y.useMemo)(()=>{let e=[0,1];if(!x||x.length===0)return e;let t=x.map(e=>e.value).filter(e=>e>=0);return t.length===0?e:[0,Math.max(...t)||e[1]]},[x]),w=(0,Y.useMemo)(()=>xe(t,u||[]),[u,t]),T=(0,Y.useMemo)(()=>{if(!u||u.length===0)return[];let e=[];return e=W(u,t,`value`,`exact`),e.map(e=>({date:e.date,value:e.free+e.paid,formattedValue:f(e.free+e.paid),label:`Members`}))},[u,t]),E=(0,Y.useMemo)(()=>{if(!e||!u||u.length===0)return[];let n=[];return n=W(u,t,`mrr`,`exact`),n.map(e=>({date:e.date,value:q(e.mrr),formattedValue:`${p}${f(q(e.mrr))}`,label:`MRR`}))},[u,t,p,e]),D=(0,Y.useMemo)(()=>y?.length?{visits:f(y.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0))}:{visits:`0`},[y]);return(0,X.jsxs)(he,{children:[(0,X.jsx)(ge,{children:(0,X.jsx)(i,{children:(0,X.jsx)(me,{excludeRanges:[`today`]})})}),(0,X.jsxs)(_e,{isLoading:a,loadingComponent:(0,X.jsx)(X.Fragment,{}),children:[(0,X.jsx)(je,{currencySymbol:p,growthChartRange:w,growthTotals:d,isLoading:b||l,kpiValues:D,membersChartData:T,mrrChartData:E,visitorsChartData:x,visitorsChartRange:S,visitorsYRange:C}),(0,X.jsx)(Ae,{isLoading:h,latestPostStats:m}),(0,X.jsx)(Me,{isLoading:v,topPostsData:g}),(0,X.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2`,children:[(0,X.jsx)(_,{className:`mt-4 -mb-4 lg:col-span-2`,children:`Grow your audience`}),(0,X.jsx)($,{description:`Find out how to review the performance of your content and get the most out of post analytics in Ghost.`,title:`Understanding analytics in Ghost`,url:`https://ghost.org/help/native-analytics`,children:(0,X.jsx)(`div`,{className:`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tr from-[#14B8FF]/20 to-[#00BBA7]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100`,children:(0,X.jsx)(k,{className:`text-[#00BBA7]`,size:20,strokeWidth:1.5})})}),(0,X.jsx)($,{description:`Use these content distribution tactics to get more people to discover your work and increase engagement.`,title:`How to get your content seen online`,url:`https://ghost.org/resources/content-distribution/`,children:(0,X.jsx)(`div`,{className:`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tl from-[#FDC700]/20 to-[#FF2056]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100`,children:(0,X.jsx)(M,{className:`text-[#FE9A00]`,size:20,strokeWidth:1.5})})})]})]})]})};export{Ne 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{t as r}from"./use-tinybird-query-BaBNCaj0.js";import{r as i}from"./post-helpers-C88JBa4D.js";import{h as a}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as o}from"./router-provider-DDZvgS3V.js";import{H as s,L as c,U as l,c as u}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{a as d}from"./heading-ih-fOVqF.js";import{r as f}from"./trend-badge-1w_HEzkG.js";import{Gt as p,X as m,q as h,rn as g,t as _,vn as v,yn as y}from"./button-D414TI3B.js";import{t as b}from"./skeleton-CPcTiTSX.js";import{a as x,n as S,o as C,t as w}from"./card-C2dfd5u0.js";import{c as T,l as E,n as ee,o as D,r as te,s as ne,t as O,u as re}from"./data-list-DM8yqpXi.js";import{t as k}from"./empty-indicator-CSQts7GV.js";import{Di as A,Ei as ie,Mi as ae,T as oe,Ti as se,Tn as j,ki as ce,yn as M}from"./index-DOF2jDq0.js";import{n as N,r as P,t as F}from"./kpi-card-jTnpLKGr.js";import{t as le}from"./disabled-sources-indicator-C5xtW0Q2.js";import{a as ue,c as de,n as fe,o as pe,r as me,t as he}from"./chart-helpers-Czu_9QpJ.js";import{t as ge}from"./use-analytics-data-B3lGOxsC.js";import{t as _e}from"./clean-tracked-url-dkN05vOf.js";import{n as ve}from"./email-sending-status-context-C76KYL1V.js";import{r as I}from"./links-Ctujreuh.js";import{n as ye}from"./post-analytics-context-bt2YTBAC.js";import{a as L,n as R,r as z,t as B}from"./kpi-card-iCDUTgOR.js";import{n as be,r as xe,t as Se}from"./post-analytics-header-DKWHwoK2.js";import{t as Ce}from"./gift-links-D8gl_yJS.js";import{r as we,t as Te}from"./gift-link-modal-BX-Q1TOk.js";import{t as Ee}from"./use-post-referrers-DyPjyBSN.js";import{i as V,n as H,r as U}from"./link-helpers-o9GgBTni.js";import{n as De,r as W}from"./kpi-helpers-Criu0YAf.js";var G=e(t(),1),K=n(),Oe=({post:e,isNewsletterStatsLoading:t,isWebShown:n})=>{let{isAdmin7:r}=u(),{postId:i}=a(),f=o(),{isNewsletterDataHidden:m}=ve(),h=(0,G.useMemo)(()=>{let t=e.email?.opened_count||0,n=e.email?.email_count||0,r=e.count?.clicks||0;return{opened:t,clicked:r,openedRate:n>0?t/n:0,clickedRate:n>0?r/n:0,sent:n}},[e]),{data:v}=I({searchParams:{filter:`post_id:'${i}'`}}),y=(0,G.useMemo)(()=>H(v),[v]),b=[{datatype:`Clicked`,value:h.clickedRate,fill:`url(#gradientTeal)`,color:`var(--chart-teal)`},{datatype:`Opened`,value:h.openedRate,fill:`url(#gradientBlue)`,color:`var(--chart-blue)`}],k={percentage:{label:`Opened`},Average:{label:`Clicked`},"This newsletter":{label:`Opened`}},A=e.email_only||!n;return(0,K.jsxs)(w,{className:`group/datalist overflow-hidden ${A&&`col-span-2`}`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(x,{children:(0,K.jsxs)(C,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(p,{size:16,strokeWidth:1.5}),`Newsletter performance`]})}),!m&&(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`subtle`,onClick:()=>{f(`/posts/analytics/${i}/newsletter`)},children:r?`View more →`:`View more`})]}),t?(0,K.jsx)(S,{children:(0,K.jsx)(`div`,{className:`mx-auto flex min-h-[250px] items-center justify-center xl:size-full`,children:(0,K.jsx)(j,{})})}):(0,K.jsx)(S,{children:(0,K.jsxs)(V,{className:c(A&&`grid gap-6 md:grid-cols-2 md:gap-0`),description:`Opens and clicks will appear once every email has been sent`,title:`Your newsletter is being sent`,children:[(0,K.jsxs)(`div`,{className:c(A&&`md:border-r md:pr-6`),children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-6`,children:[(0,K.jsx)(F,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,children:(0,K.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,K.jsx)(N,{color:`var(--chart-blue)`,children:`Open rate`}),(0,K.jsx)(P,{value:l(h.openedRate)})]})}),(0,K.jsx)(F,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,children:(0,K.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,K.jsx)(N,{color:`var(--chart-teal)`,children:`Click rate`}),(0,K.jsx)(P,{value:l(h.clickedRate)})]})})]}),!A&&(0,K.jsx)(M,{}),(0,K.jsx)(`div`,{className:`mx-auto my-6 h-[240px]`,children:(0,K.jsx)(U,{className:`pointer-events-none aspect-square h-[240px]`,config:k,data:b,tooltip:!1})})]}),(0,K.jsxs)(`div`,{className:c(A&&`border-t pt-6 md:border-t-0 md:pt-0 md:pl-6`),children:[!A&&(0,K.jsx)(M,{}),(0,K.jsxs)(`div`,{className:A?``:`pt-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 ${A?`pb-3`:`py-3`}`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Top clicked links in this email`}),(0,K.jsx)(d,{children:`Members`})]}),y.length>0?(0,K.jsx)(O,{className:``,children:(0,K.jsx)(te,{children:y.slice(0,A?10:5).map(e=>{let t=h.clicked>0?e.count/h.clicked:0;return(0,K.jsxs)(re,{children:[(0,K.jsx)(ee,{style:{width:`${t?Math.round(t*100):0}%`}}),(0,K.jsx)(D,{children:(0,K.jsxs)(`div`,{className:`flex items-center space-x-2 overflow-hidden`,children:[(0,K.jsx)(g,{className:`shrink-0 text-muted-foreground`,size:16,strokeWidth:1.5}),(0,K.jsx)(`a`,{className:`block truncate font-medium hover:underline`,href:e.link.to,rel:`noreferrer`,target:`_blank`,title:e.link.to,children:_e(e.link.to,!0)})]})}),(0,K.jsxs)(ne,{children:[(0,K.jsx)(T,{children:s(e.count||0)}),(0,K.jsx)(E,{children:l(t)})]})]},e.link.link_id)})})}):(0,K.jsx)(`div`,{className:`py-20 text-center text-sm text-muted-foreground`,children:`You have no links in your post.`})]})]})]})})]})},ke=({chartData:e,range:t,isLoading:n,visitors:r,sourcesData:i,isNewsletterShown:c=!0})=>{let{isAdmin7:l}=u(),{postId:p}=a(),m=o(),{site:h}=ge(),g=h.url,y=h.icon,b=(0,G.useMemo)(()=>i?i.reduce((e,t)=>e+Number(t.visits||0),0):0,[i]);return(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(w,{className:`group/datalist overflow-hidden ${!c&&`col-span-2`}`,"data-testid":`web-performance`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(x,{children:(0,K.jsxs)(C,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(v,{size:16,strokeWidth:1.5}),`Web performance`]})}),(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`subtle`,onClick:()=>{m(`/posts/analytics/${p}/web`)},children:l?`View more →`:`View more`})]}),(0,K.jsxs)(S,{children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(F,{className:`group relative flex grow flex-row items-start justify-between gap-5 border-none px-0 pt-0`,"data-testid":`unique-visitors`,children:(0,K.jsxs)(`div`,{className:`flex grow flex-col gap-1.5 border-none pb-0`,children:[(0,K.jsx)(N,{color:`var(--chart-blue)`,children:`Unique visitors`}),(0,K.jsx)(P,{value:s(r)})]})}),(0,K.jsx)(M,{}),(0,K.jsx)(`div`,{className:`max-h-[288px] py-6 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:n?(0,K.jsx)(`div`,{className:`flex h-[16vw] min-h-[240px] items-center justify-center`,children:(0,K.jsx)(j,{})}):(0,K.jsx)(f,{className:`aspect-auto h-[240px] w-full`,color:`var(--chart-blue)`,data:e||[],id:`visitors`,range:t,syncId:`overview-charts`})})]}),c&&(0,K.jsxs)(`div`,{className:c?`border-t pt-3`:`-mt-3`,children:[(0,K.jsx)(`div`,{children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-3`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`How readers found this post`}),(0,K.jsx)(d,{children:`Visitors`})]})}),i&&i.length>0?(0,K.jsx)(W,{data:i,range:t,siteIcon:y,siteUrl:g,tableOnly:!0,topSourcesLimit:5,totalVisitors:b}):(0,K.jsx)(k,{className:`h-full py-10`,description:`Once someone visits this post, sources will show here`,title:`No visitors since you published this post`,children:(0,K.jsx)(v,{strokeWidth:1.5})})]})]})]})})},q=()=>{let{isAdmin7:e}=u(),t=o(),{statsConfig:n,isLoading:a}=ge(),{post:c,isPostLoading:l,postId:d}=ye(),{totals:f,isLoading:p,currencySymbol:g}=Ee(d),v=se(),T=ie(),E=A(),ee=ce(),D=ae(),{hasNewsletterAnalytics:te,isStatusLoading:ne}=ve(),O=be(c),{token:re,isLoading:k,error:M}=Ce(d,{enabled:O}),{usage:N,loading:P,error:F}=we({postUuid:c?.uuid,token:re,tokenLoading:k,tokenError:M,enabled:O}),[_e,I]=(0,G.useState)(!1),V=(0,G.useMemo)(()=>c?.published_at?pe(c.published_at):oe.allTime.value,[c?.published_at]),{startDate:H,endDate:U,timezone:W}=ue(V),q=(0,G.useMemo)(()=>{let e={site_uuid:n?.id||``,date_from:fe(H),date_to:fe(U),timezone:W,post_uuid:``};return!l&&c?.uuid?{...e,post_uuid:c.uuid}:e},[l,c,n?.id,H,U,W]),{data:J,loading:Ae}=r({endpoint:`api_kpis`,statsConfig:n,params:q}),je=(0,G.useMemo)(()=>J?.length?J.reduce((e,t)=>{let n=Number(t.visits);return e+(isNaN(n)?0:n)},0):0,[J]),Y=De.visits,Me=me(V,J||[],{fieldName:Y.dataKey}),Ne=de(J||[],V,Y.dataKey,`sum`)?.map(e=>{let t=Number(e[Y.dataKey]);return{date:String(e.date),value:t,formattedValue:Y.formatter(t),label:Y.label}}),{data:Pe,loading:Fe}=r({endpoint:`api_top_sources`,statsConfig:n,params:q}),Ie=a||p||l||Ae,Le=l||a||Ae,X=te&&T&&v,Z=!c?.email_only&&D,Q=E,$=!!(O&&c&&D);return(0,G.useEffect)(()=>{!l&&c&&i(c)&&!D&&Q&&t(`/posts/analytics/${d}/growth`,{replace:!0})},[l,c,D,t,d,Q]),l?(0,K.jsx)(j,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Se,{currentTab:`Overview`}),(0,K.jsx)(xe,{children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-6 lg:grid lg:grid-cols-2`,children:[Z&&(0,K.jsx)(ke,{chartData:Ne,isLoading:Le||Ie||Fe,isNewsletterShown:X,range:Me,sourcesData:Pe,visitors:je}),X&&(0,K.jsx)(Oe,{isNewsletterStatsLoading:l||ne,isWebShown:Z,post:c}),(Q||$)&&(0,K.jsxs)(`div`,{className:`col-span-2 flex flex-col gap-6 lg:grid lg:grid-cols-3`,children:[Q&&(0,K.jsxs)(w,{className:`group overflow-hidden p-0 ${$?`lg:col-span-2`:`lg:col-span-3`}`,"data-testid":`growth`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(x,{children:(0,K.jsxs)(C,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(h,{size:16,strokeWidth:1.5}),`Growth`]})}),(0,K.jsx)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`subtle`,onClick:()=>{t(`/posts/analytics/${d}/growth`)},children:e?`View more →`:`View more`})]}),(0,K.jsx)(S,{className:`flex flex-col gap-6 px-0 md:grid md:grid-cols-3 md:items-stretch md:gap-0`,children:Ie?Array.from({length:3},(e,t)=>(0,K.jsxs)(`div`,{className:`h-[98px] gap-1 border-r px-6 py-5 last:border-r-0`,children:[(0,K.jsx)(b,{className:`w-2/3`}),(0,K.jsx)(b,{className:`h-7 w-12`})]},t)):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(B,{className:`grow gap-1 py-0`,children:[(0,K.jsx)(z,{children:`Free members`}),(0,K.jsx)(R,{children:(0,K.jsx)(L,{className:`text-[2.2rem]`,children:s(f?.free_members||0)})})]}),ee&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(B,{className:`grow gap-1 py-0`,children:[(0,K.jsx)(z,{children:`Paid members`}),(0,K.jsx)(R,{children:(0,K.jsx)(L,{className:`text-[2.2rem]`,children:s(f?.paid_members||0)})})]}),(0,K.jsxs)(B,{className:`grow gap-1 py-0`,children:[(0,K.jsx)(z,{children:`MRR impact`}),(0,K.jsx)(R,{children:(0,K.jsxs)(L,{className:`text-[2.2rem]`,children:[g,s(he(f?.mrr||0))]})})]})]})]})})]}),$&&(0,K.jsxs)(w,{className:`group/datalist overflow-hidden ${Q?`lg:col-span-1`:`lg:col-span-3`}`,"data-testid":`gift-link-card`,children:[(0,K.jsxs)(`div`,{className:`relative flex items-center justify-between gap-6`,children:[(0,K.jsx)(x,{children:(0,K.jsxs)(C,{className:`flex items-center gap-1.5 text-lg`,children:[(0,K.jsx)(y,{size:16,strokeWidth:1.5}),`Gift link`]})}),(0,K.jsxs)(_,{className:`absolute right-6 translate-x-10 opacity-0 transition-all duration-300 group-hover/datalist:translate-x-0 group-hover/datalist:opacity-100 focus-visible:translate-x-0 focus-visible:opacity-100`,size:`sm`,variant:`subtle`,onClick:()=>I(!0),children:[e&&(0,K.jsx)(m,{}),`Share`]})]}),!P&&!F&&(0,K.jsxs)(S,{className:`flex flex-col gap-1`,children:[(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Visitors`}),(0,K.jsx)(`span`,{className:`text-[2.2rem] leading-none font-semibold`,"data-testid":`gift-link-card-visitors`,children:s(N?.visits??0)})]})]})]}),!Z&&!X&&!Q&&!$&&(0,K.jsx)(le,{className:`col-span-2 py-20`})]})}),$&&(0,K.jsx)(Te,{open:_e,postId:d,source:`gift-link-card`,onOpenChange:I},d)]})};export{q 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{E as r,L as i,a,c as o,i as s,o as c,r as l}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as u}from"./text-BLI0C8Mc.js";import{t as d}from"./heading-ih-fOVqF.js";import{t as f,tn as p}from"./button-D414TI3B.js";import{o as m}from"./select-D_4xWFYv.js";import{$r as h,Qn as g,Qr as _,Xn as v,cr as y,er as b}from"./index-DOF2jDq0.js";var x=e(t(),1),S=n();function C({children:e,label:t,shortcut:n}){let{isAdmin7:r}=o();return r?(0,S.jsxs)(l,{children:[e,(0,S.jsx)(s,{side:`bottom`,variant:`white`,children:(0,S.jsxs)(h,{align:`center`,gap:`sm`,children:[t,n&&(0,S.jsx)(v,{children:n})]})})]}):(0,S.jsx)(S.Fragment,{children:e})}var w=x.forwardRef(({children:e,asChild:t,...n},i)=>{let{isAdmin7:a}=o();return a?(0,S.jsx)(c,{ref:i,asChild:t,...n,children:e}):(0,S.jsx)(t?r:`button`,{ref:i,...n,children:e})});w.displayName=`PageHeaderTooltipTrigger`;var T=x.createContext(!1),E=x.forwardRef(({label:e,iconOnly:t=!1,primary:n,shortcut:r,fallbackVariant:a=`outline`,fallbackSize:s,className:l,...u},d)=>{let{isAdmin7:p}=o(),m=x.useContext(T),h=n??m,g=(0,S.jsx)(f,{ref:d,"aria-keyshortcuts":r,"aria-label":e,className:i(p&&`[&_svg]:stroke-2!`,l),size:p?t?`icon`:void 0:s,variant:p?h?`default`:`ghost`:a,...u});return h||!p?g:(0,S.jsx)(C,{label:e,shortcut:r,children:(0,S.jsx)(c,{asChild:!0,children:g})})});E.displayName=`PageHeaderAction`;var D=x.forwardRef((e,t)=>(0,S.jsxs)(E,{ref:t,"data-slot":`filters-add`,label:`Filter`,shortcut:`F`,type:`button`,...e,children:[(0,S.jsx)(p,{className:`size-4`}),`Filter`]}));D.displayName=`PageHeaderFilterTrigger`;var O=x.forwardRef(({label:e,className:t,...n},r)=>{let{controlShape:a,isAdmin7:s}=o();return(0,S.jsx)(C,{label:e,children:(0,S.jsx)(w,{asChild:!0,children:(0,S.jsx)(m,{ref:r,"aria-label":e,className:i(`w-auto`,s&&`gap-1.5 font-medium [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-2!`,t),shape:a,showChevron:!s,variant:s?`ghost`:`default`,...n})})})});O.displayName=`PageHeaderSelectTrigger`;function k({className:e,children:t}){return(0,S.jsx)(h,{align:`center`,className:i(`pt-1 text-sm text-muted-foreground`,e),"data-page-header":`breadcrumb`,gap:`sm`,children:t})}function A({className:e,children:t}){return(0,S.jsx)(u,{as:`span`,className:i(`ml-1 text-base tabular-nums`,e),"data-page-header":`count`,tone:`secondary`,weight:`regular`,children:t})}function j({className:e,children:t}){return(0,S.jsx)(u,{as:`p`,className:e,"data-page-header":`description`,size:`sm`,tone:`secondary`,children:t})}function M({className:e,children:t}){return(0,S.jsx)(u,{as:`p`,className:i(`mt-0.5`,e),"data-page-header":`meta`,size:`sm`,tone:`secondary`,children:t})}function N({className:e,children:t}){let n=[],r=[];x.Children.forEach(t,e=>{if(!x.isValidElement(e)){n.push(e);return}switch(e.type){case j:case M:r.push(e);break;default:n.push(e)}});let a=(0,S.jsx)(d,{className:i(`text-lg font-semibold tracking-[0.1px] whitespace-nowrap`,e),"data-page-header":`title`,children:n});return r.length>0?(0,S.jsxs)(_,{"data-page-header":`title-body`,gap:`none`,children:[a,r]}):a}function P({className:e,children:t}){return(0,S.jsx)(_,{className:i(`h-full min-h-(--control-height) min-w-0`,e),"data-page-header":`left`,gap:`xs`,justify:`center`,children:t})}function F({children:e,className:t}){let{isAdmin7:n}=o();return x.Children.toArray(e).length===0?null:(0,S.jsx)(T.Provider,{value:!0,children:n?(0,S.jsx)(h,{className:i(`ms-3 shrink-0 first:ms-0`,t),"data-page-header":`primary`,gap:`none`,children:e}):t?(0,S.jsx)(r,{className:t,children:e}):e})}function I({children:e}){return(0,S.jsx)(g,{children:e})}function L({children:e,...t}){return(0,S.jsx)(y,{asChild:!0,...t,children:e})}function R({children:e,...t}){return(0,S.jsx)(b,{align:`end`,sideOffset:8,...t,children:e})}function z({children:e}){let{isAdmin7:t}=o();return t?(0,S.jsx)(a,{delayDuration:1e3,skipDelayDuration:300,children:e}):(0,S.jsx)(S.Fragment,{children:e})}var B=640,V=e=>typeof window>`u`?!1:window.innerWidth<e,H=e=>{let[t,n]=x.useState(()=>V(e));return x.useEffect(()=>{let t=()=>{n(V(e))};return t(),window.addEventListener(`resize`,t),()=>{window.removeEventListener(`resize`,t)}},[e]),t},U=Object.assign(function({className:e,children:t,mobileMenuBreakpoint:n=B}){let{isAdmin7:r}=o(),i=x.Children.toArray(t),a=[],s=null,c=null,l=H(n);return i.forEach(e=>{if(!x.isValidElement(e)){a.push(e);return}let t=e;if(t.type===I){s=t;return}if(t.type===F){c=t,a.push(t);return}a.push(t)}),s?l?(0,S.jsx)(z,{children:(0,S.jsx)(h,{align:`center`,className:e,"data-page-header":`action-group`,gap:`sm`,justify:`end`,children:(0,S.jsxs)(h,{align:`center`,className:`ml-auto`,"data-page-header":`action-group-mobile`,gap:`sm`,children:[s,c&&(r?c:(0,S.jsx)(`div`,{"data-page-header":`action-group-mobile-primary`,children:c}))]})})}):(0,S.jsx)(z,{children:(0,S.jsx)(h,{align:`center`,className:e,"data-page-header":`action-group`,gap:`sm`,justify:`end`,children:(0,S.jsx)(h,{align:`center`,"data-page-header":`action-group-desktop`,gap:`sm`,justify:`end`,children:a})})}):(0,S.jsx)(z,{children:(0,S.jsx)(h,{align:`center`,className:e,"data-page-header":`action-group`,gap:`sm`,justify:`end`,children:t})})},{Primary:F,MobileMenu:I,MobileMenuTrigger:L,MobileMenuContent:R});function W({className:e,children:t}){return(0,S.jsx)(h,{align:`center`,className:i(`min-h-(--control-height) shrink-0`,e),"data-page-header":`actions`,gap:`lg`,children:t})}var G=Object.assign(function({className:e,children:t,sticky:n=!0,blurredBackground:r=!0}){return(0,S.jsx)(`header`,{className:i(`flex flex-col`,n&&`sticky top-0 z-50`,r&&`bg-gradient-to-b from-background via-background/70 to-background/70 backdrop-blur-md dark:bg-black`,e),"data-page-header":`page-header`,children:(0,S.jsx)(h,{align:`start`,className:`w-full`,"data-page-header":`main`,gap:`lg`,justify:`between`,children:t})})},{Left:P,Breadcrumb:k,Title:N,Count:A,Description:j,Meta:M,Actions:W,ActionGroup:U,Action:E,FilterTrigger:D,SelectTrigger:O,Tooltip:C,TooltipTrigger:w});export{G 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{t as r}from"./use-tinybird-query-BaBNCaj0.js";import{L as i,c as a}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{Pn as o,t as s}from"./button-D414TI3B.js";import{Qn as c,cr as l,er as u,nr as d}from"./index-DOF2jDq0.js";var f=e(t(),1),p=60*1e3,m=(e={})=>{let{postUuid:t,statsConfig:n,enabled:i=!0}=e,[a,o]=(0,f.useState)(null),{data:s,loading:c,error:l}=r({statsConfig:n,endpoint:`api_active_visitors`,params:{site_uuid:n?.id||``,...t&&{post_uuid:t}},enabled:i,refetchInterval:p,refetchIntervalInBackground:!0}),u=s?.[0]?.active_visitors;return(0,f.useEffect)(()=>{i&&u!==void 0&&typeof u==`number`&&o(u)},[i,u]),{activeVisitors:i&&a||0,isLoading:i&&c&&a===null,error:i?l:null}},h=n(),g=f.forwardRef(({children:e,className:t,...n},r)=>{let{isAdmin7:o}=a();return(0,h.jsx)(`div`,{ref:r,className:i(`mt-3 flex items-center [grid-area:actions] lg:mt-0`,o?`gap-1`:`gap-2`,t),"data-navbar":`navbar-actions`,...n,children:e})});g.displayName=`NavbarActions`;var _=f.forwardRef(({children:e,className:t,...n},r)=>(0,h.jsx)(`div`,{ref:r,className:i(`[grid-area:navigation]`,t),"data-navbar":`navbar-navigation`,...n,children:e}));_.displayName=`NavbarNavigation`;var v=f.forwardRef(({children:e,className:t,...n},r)=>(0,h.jsx)(`div`,{ref:r,className:i(`grid grid-cols-[1fr] justify-between gap-x-5 gap-y-2 border-b [grid-template-areas:'navigation''actions''subactions'] lg:grid-cols-[1fr_auto] lg:[grid-template-areas:'navigation_actions''subactions_subactions']`,t),"data-navbar":`navbar`,...n,children:e}));v.displayName=`Navbar`;var y=f.createContext(null),b=f.forwardRef(({children:e,responsive:t=!1,value:n,defaultValue:r,onValueChange:a,className:p,...m},g)=>{let[_,v]=f.useState(f.Children.count(e)),[b,x]=f.useState(0),S=f.useRef(null),C=f.useRef(null);f.useLayoutEffect(()=>{if(!t||!S.current||!C.current){v(f.Children.count(e));return}requestAnimationFrame(()=>{if(!S.current||!C.current)return;let e=S.current,t=C.current,n=e.clientWidth,r=Array.from(t.children),i=0;for(let e=0;e<r.length;e++){let t=r[e].getBoundingClientRect().width;i+=(e>0?6:0)+t}if(i<=n-8){v(r.length);return}let a=0,o=0;for(let e=0;e<r.length;e++){let t=r[e].getBoundingClientRect().width,i=a+(e>0?6:0)+t;if(i+60<=n)a=i,o+=1;else break}v(o)})},[t,e,b]),f.useLayoutEffect(()=>{if(!t||!S.current)return;let e=new ResizeObserver(()=>{x(e=>e+1)});return e.observe(S.current),()=>e.disconnect()},[t]);let w=f.Children.toArray(e),T=w.slice(0,_),E=w.slice(_),D=E.length>0,O=E.find(e=>f.isValidElement(e)&&e.props?.value===n);return t?(0,h.jsxs)(y.Provider,{value:{defaultValue:r},children:[(0,h.jsx)(`div`,{ref:C,"aria-hidden":`true`,className:`pointer-events-none absolute flex items-center gap-2 opacity-0`,style:{top:-9999,left:-9999},children:e}),(0,h.jsxs)(`div`,{ref:S,className:`flex w-full min-w-0 flex-1 items-center gap-2`,children:[(0,h.jsx)(`div`,{ref:g,className:i(`flex min-w-0 items-center gap-2`,p),...m,children:T}),D&&(0,h.jsxs)(c,{children:[(0,h.jsx)(l,{asChild:!0,children:(0,h.jsx)(s,{className:i(`h-[30px] flex-shrink-0 px-3 py-2`,O&&`bg-accent text-accent-foreground`),variant:`ghost`,children:O?(0,h.jsx)(`span`,{className:`max-w-[100px] truncate`,children:O.props.children}):(0,h.jsx)(o,{className:`size-6`})})}),(0,h.jsx)(u,{align:`end`,children:E.map((e,t)=>!f.isValidElement(e)||!e.props?.value?null:(0,h.jsx)(d,{className:i(e.props.value===n&&`bg-accent text-accent-foreground`),onClick:()=>{a?.(e.props.value),e.props.onClick?.()},children:e.props.children},e.props.value||t))})]})]})]}):(0,h.jsx)(y.Provider,{value:{defaultValue:r},children:(0,h.jsx)(`div`,{ref:g,className:i(`flex items-center gap-2`,p),...m,children:e})})});b.displayName=`PageMenu`;var x=f.forwardRef(({children:e,value:t,className:n,...r},a)=>{let o=f.useContext(y)?.defaultValue===t;return(0,h.jsx)(s,{ref:a,className:i(`relative gap-1.5 px-3 text-control font-medium text-text-secondary hover:text-foreground focus-visible:ring-0`,`data-[state=active]:bg-muted-foreground/10 data-[state=active]:text-foreground`,`dark:hover:bg-tab-hover dark:data-[state=active]:bg-tab-active dark:data-[state=active]:hover:bg-tab-active`,n),"data-state":o?`active`:void 0,variant:`ghost`,...r,children:e})});x.displayName=`PageMenuItem`;export{_ as a,g as i,x as n,m as o,v as r,b as t};
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"./hooks-Cy_-oZ4o.js";import{h as i,m as a,p as o}from"./posts-pCPrhQeR.js";var s=`PagesResponseType`,c=s,l=n({dataType:s,path:`/pages/`}),u=r({dataType:s,path:`/pages/`,defaultNextPageParams:(e,t)=>{if(e.meta?.pagination.next)return{...t,page:e.meta.pagination.next.toString()}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.pages),r=t[t.length-1].meta;return{pages:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}});e({dataType:s,path:e=>`/pages/${e}/`});var d=e({dataType:s,path:e=>`/pages/${e}/`}),f=(e,t={})=>{let{searchParams:n,...r}=t;return d(e,{...r,searchParams:{...n,...a()}})},p=t({method:`POST`,path:()=>`/pages/`,searchParams:({options:e})=>o(e),body:({page:e})=>({pages:[i(e,`page`)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:s}}),m=t({method:`PUT`,path:({page:e})=>`/pages/${e.id}/`,searchParams:({options:e})=>o(e),body:({page:e})=>({pages:[i(e,`page`)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:s}}),h=t({method:`DELETE`,path:({id:e})=>`/pages/${e}/`,requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e})}),g=t({method:`POST`,path:e=>`/pages/${e}/copy/`}),_=t({method:`PUT`,path:()=>`/pages/bulk/`,searchParams:({filter:e})=>({filter:e}),body:({action:e})=>({bulk:{action:e.type,meta:`meta`in e?e.meta:{}}})}),v=t({method:`DELETE`,path:()=>`/pages/`,searchParams:({filter:e})=>({filter:e})});export{v as a,h as c,u as i,m as l,p as n,_ as o,l as r,g as s,c as t,f as u};
1
+ import{i as e,n as t,r as n,t as r}from"./hooks-DYfTEQLk.js";import{h as i,m as a,p as o}from"./posts-tcoO3iRG.js";var s=`PagesResponseType`,c=s,l=n({dataType:s,path:`/pages/`}),u=r({dataType:s,path:`/pages/`,defaultNextPageParams:(e,t)=>{if(e.meta?.pagination.next)return{...t,page:e.meta.pagination.next.toString()}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.pages),r=t[t.length-1].meta;return{pages:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}});e({dataType:s,path:e=>`/pages/${e}/`});var d=e({dataType:s,path:e=>`/pages/${e}/`}),f=(e,t={})=>{let{searchParams:n,...r}=t;return d(e,{...r,searchParams:{...n,...a()}})},p=t({method:`POST`,path:()=>`/pages/`,searchParams:({options:e})=>o(e),body:({page:e})=>({pages:[i(e,`page`)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:s}}),m=t({method:`PUT`,path:({page:e})=>`/pages/${e.id}/`,searchParams:({options:e})=>o(e),body:({page:e})=>({pages:[i(e,`page`)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:s}}),h=t({method:`DELETE`,path:({id:e})=>`/pages/${e}/`,requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e})}),g=t({method:`POST`,path:e=>`/pages/${e}/copy/`}),_=t({method:`PUT`,path:()=>`/pages/bulk/`,searchParams:({filter:e})=>({filter:e}),body:({action:e})=>({bulk:{action:e.type,meta:`meta`in e?e.meta:{}}})}),v=t({method:`DELETE`,path:()=>`/pages/`,searchParams:({filter:e})=>({filter:e})});export{v as a,h as c,u as i,m as l,p as n,_ as o,l as r,g as s,c as t,f as u};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BlNNh7jY.js";import{t}from"./posts-list-screen-B978ZO0R.js";var n=e();function r(){return(0,n.jsx)(t,{resource:`pages`})}export{r as default};
@@ -0,0 +1,10 @@
1
+ import{n as e}from"./react-BXwhMTuc.js";var t=e(((e,t)=>{((n,r)=>{typeof define==`function`&&define.amd?define([],r):typeof t==`object`&&e!==void 0?t.exports=r():n.Papa=r()})(e,function e(){var t=typeof self<`u`?self:typeof window<`u`?window:t===void 0?{}:t,n,r=!t.document&&!!t.postMessage,i=t.IS_PAPA_WORKER||!1,a={},o=0,s={};function c(e){return e.charCodeAt(0)===65279?e.slice(1):e}function l(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=``,this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=b(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new m(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,n){var r=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<r){let t=this._config.newline;t||=(a=this._config.quoteChar||`"`,this._handle.guessLineEndings(e,a)),e=[...e.split(t).slice(r)].join(t)}this.isFirstChunk&&S(this._config.beforeFirstChunk)&&(a=this._config.beforeFirstChunk(e))!==void 0&&(e=a),this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e,a=(this._partialLine=``,this._handle.parse(r,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(e=a.meta.cursor,r=(this._finished||(this._partialLine=r.substring(e-this._baseIndex),this._baseIndex=e),a&&a.data&&(this._rowCount+=a.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),i)t.postMessage({results:a,workerId:s.WORKER_ID,finished:r});else if(S(this._config.chunk)&&!n){if(this._config.chunk(a,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=a=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(a.data),this._completeResults.errors=this._completeResults.errors.concat(a.errors),this._completeResults.meta=a.meta),this._completed||!r||!S(this._config.complete)||a&&a.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),r||a&&a.meta.paused||this._nextChunk(),a}this._halted=!0},this._sendError=function(e){S(this._config.error)?this._config.error(e):i&&this._config.error&&t.postMessage({workerId:s.WORKER_ID,error:e,finished:!1})}}function u(e){var t;(e||={}).chunkSize||(e.chunkSize=s.RemoteChunkSize),l.call(this,e),this._nextChunk=r?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),r||(t.onload=x(this._chunkLoaded,this),t.onerror=x(this._chunkError,this)),t.open(this._config.downloadRequestBody?`POST`:`GET`,this._input,!r),this._config.downloadRequestHeaders){var e,n=this._config.downloadRequestHeaders;for(e in n)t.setRequestHeader(e,n[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,t.setRequestHeader(`Range`,`bytes=`+this._start+`-`+i));try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}r&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>(e=e.getResponseHeader(`Content-Range`))===null?-1:parseInt(e.substring(e.lastIndexOf(`/`)+1)))(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){e=t.statusText||e,this._sendError(Error(e))}}function d(e){(e||={}).chunkSize||(e.chunkSize=s.LocalChunkSize),l.call(this,e);var t,n,r=typeof FileReader<`u`;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=x(this._chunkLoaded,this),t.onerror=x(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,i=(this._config.chunkSize&&(i=Math.min(this._start+this._config.chunkSize,this._input.size),e=n.call(e,this._start,i)),t.readAsText(e,this._config.encoding));r||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function f(e){var t;l.call(this,e||={}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){var e,n;if(!this._finished)return e=this._config.chunkSize,t=e?(n=t.substring(0,e),t.substring(e)):(n=t,``),this._finished=!t,this.parseChunk(n)}}function p(e){l.call(this,e||={});var t=[],n=!0,r=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(`data`,this._streamData),this._input.on(`end`,this._streamEnd),this._input.on(`error`,this._streamError)},this._checkIsFinished=function(){r&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):n=!0},this._streamData=x(function(e){try{t.push(typeof e==`string`?e:e.toString(this._config.encoding)),n&&(n=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=x(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=x(function(){this._streamCleanUp(),r=!0,this._streamData(``)},this),this._streamCleanUp=x(function(){this._input.removeListener(`data`,this._streamData),this._input.removeListener(`end`,this._streamEnd),this._input.removeListener(`error`,this._streamError)},this)}function m(e){var t,n,r,i,a=2**53,o=-a,l=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,u=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,d=this,f=0,p=0,m=!1,_=!1,v=[],y={data:[],errors:[],meta:{}};function x(t){return e.skipEmptyLines===`greedy`?t.join(``).trim()===``:t.length===1&&t[0].length===0}function C(){if(y&&r&&(T(`Delimiter`,`UndetectableDelimiter`,`Unable to auto-detect delimiting character; defaulted to '`+s.DefaultDelimiter+`'`),r=!1),e.skipEmptyLines&&(y.data=y.data.filter(function(e){return!x(e)})),w()){if(y)if(Array.isArray(y.data[0])){for(var t=0;w()&&t<y.data.length;t++)y.data[t].forEach(n);y.data.splice(0,1)}else y.data.forEach(n);function n(t,n){t=c(t),S(e.transformHeader)&&(t=e.transformHeader(t,n)),v.push(t)}}function n(t,n){for(var r=e.header?{}:[],i=0;i<t.length;i++){var s=i,c=t[i],c=((t,n)=>(t=>(e.dynamicTypingFunction&&e.dynamicTyping[t]===void 0&&(e.dynamicTyping[t]=e.dynamicTypingFunction(t)),!0===(e.dynamicTyping[t]||e.dynamicTyping)))(t)?n===`true`||n===`TRUE`||n!==`false`&&n!==`FALSE`&&((e=>{if(l.test(e)&&(e=parseFloat(e),o<e&&e<a))return 1})(n)?parseFloat(n):u.test(n)?new Date(n):n===``?null:n):n)(s=e.header?i>=v.length?`__parsed_extra`:v[i]:s,c=e.transform?e.transform(c,s):c);s===`__parsed_extra`?(r[s]=r[s]||[],r[s].push(c)):r[s]=c}return e.header&&(i>v.length?T(`FieldMismatch`,`TooManyFields`,`Too many fields: expected `+v.length+` fields but parsed `+i,p+n):i<v.length&&T(`FieldMismatch`,`TooFewFields`,`Too few fields: expected `+v.length+` fields but parsed `+i,p+n)),r}var i;y&&(e.header||e.dynamicTyping||e.transform)&&(i=1,!y.data.length||Array.isArray(y.data[0])?(y.data=y.data.map(n),i=y.data.length):y.data=n(y.data,0),e.header&&y.meta&&(y.meta.fields=v),p+=i)}function w(){return e.header&&v.length===0}function T(e,t,n,r){e={type:e,code:t,message:n},r!==void 0&&(e.row=r),y.errors.push(e)}S(e.step)&&(i=e.step,e.step=function(t){y=t,w()?C():(C(),y.data.length!==0&&(f+=t.data.length,e.preview&&f>e.preview?n.abort():(y.data=y.data[0],i(y,d))))}),this.parse=function(i,a,o){var c=e.quoteChar||`"`,c=(e.newline||=this.guessLineEndings(i,c),r=!1,e.delimiter?S(e.delimiter)&&(e.delimiter=e.delimiter(i),y.meta.delimiter=e.delimiter):((c=((t,n,r,i,a)=>{var o,c,l,u;a||=[`,`,` `,`|`,`;`,s.RECORD_SEP,s.UNIT_SEP];for(var d=0;d<a.length;d++){for(var f,p=a[d],m=0,h=0,_=0,v=(l=void 0,new g({comments:i,delimiter:p,newline:n,preview:10}).parse(t)),y=0;y<v.data.length;y++)r&&x(v.data[y])?_++:(f=v.data[y].length,h+=f,l===void 0?l=f:0<f&&(m+=Math.abs(f-l),l=f));0<v.data.length&&(h/=v.data.length-_),(c===void 0||m<=c)&&(u===void 0||u<h)&&1.99<h&&(c=m,o=p,u=h)}return{successful:!!(e.delimiter=o),bestDelimiter:o}})(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=c.bestDelimiter:(r=!0,e.delimiter=s.DefaultDelimiter),y.meta.delimiter=e.delimiter),b(e));return e.preview&&e.header&&c.preview++,t=i,n=new g(c),y=n.parse(t,a,o),C(),m?{meta:{paused:!0}}:y||{meta:{paused:!1}}},this.paused=function(){return m},this.pause=function(){m=!0,n.abort(),t=S(e.chunk)?``:t.substring(n.getCharIndex())},this.resume=function(){d.streamer._halted?(m=!1,d.streamer.parseChunk(t,!0)):setTimeout(d.resume,3)},this.aborted=function(){return _},this.abort=function(){_=!0,n.abort(),y.meta.aborted=!0,S(e.complete)&&e.complete(y),t=``},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=RegExp(h(t)+`([^]*?)`+h(t),`gm`),n=(e=e.replace(t,``)).split(`\r`),t=e.split(`
2
+ `),e=1<t.length&&t[0].length<n[0].length;if(n.length===1||e)return`
3
+ `;for(var r=0,i=0;i<n.length;i++)n[i][0]===`
4
+ `&&r++;return r>=n.length/2?`\r
5
+ `:`\r`}}function h(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function g(e){var t=(e||={}).delimiter,n=e.newline,r=e.comments,i=e.step,a=e.preview,o=e.fastMode,l=null,u=!1,d=e.quoteChar==null?`"`:e.quoteChar,f=d;if(e.escapeChar!==void 0&&(f=e.escapeChar),(typeof t!=`string`||-1<s.BAD_DELIMITERS.indexOf(t))&&(t=`,`),r===t)throw Error(`Comment character same as delimiter`);!0===r?r=`#`:(typeof r!=`string`||-1<s.BAD_DELIMITERS.indexOf(r))&&(r=!1),n!==`
6
+ `&&n!==`\r`&&n!==`\r
7
+ `&&(n=`
8
+ `);var p=0,m=!1;this.parse=function(s,g,_){if(typeof s!=`string`)throw Error(`Input must be a string`);var v=s.length,y=t.length,b=n.length,x=r.length,C=S(i),w=[],T=[],E=[],D=p=0;if(!s)return z();if(o||!1!==o&&s.indexOf(d)===-1){for(var O=s.split(n),k=0;k<O.length;k++){if(E=O[k],p+=E.length,k!==O.length-1)p+=n.length;else if(_)return z();if(!r||E.substring(0,x)!==r){if(C){if(w=[],F(E.split(t)),B(),m)return z()}else F(E.split(t));if(a&&a<=k)return w=w.slice(0,a),z(!0)}}return z()}for(var A=s.indexOf(t,p),j=s.indexOf(n,p),M=new RegExp(h(f)+h(d),`g`),N=s.indexOf(d,p);;)if(s[p]===d)for(N=p,p++;;){if((N=s.indexOf(d,N+1))===-1)return _||T.push({type:`Quotes`,code:`MissingQuotes`,message:`Quoted field unterminated`,row:w.length,index:p}),L();if(N===v-1)return L(s.substring(p,N).replace(M,d));if(d===f&&s[N+1]===f)N++;else if(d===f||N===0||s[N-1]!==f){A!==-1&&A<N+1&&(A=s.indexOf(t,N+1));var P=I((j=j!==-1&&j<N+1?s.indexOf(n,N+1):j)===-1?A:Math.min(A,j));if(s.substr(N+1+P,y)===t){E.push(s.substring(p,N).replace(M,d)),s[p=N+1+P+y]!==d&&(N=s.indexOf(d,p)),A=s.indexOf(t,p),j=s.indexOf(n,p);break}if(P=I(j),s.substring(N+1+P,N+1+P+b)===n){if(E.push(s.substring(p,N).replace(M,d)),R(N+1+P+b),A=s.indexOf(t,p),N=s.indexOf(d,p),C&&(B(),m))return z();if(a&&w.length>=a)return z(!0);break}T.push({type:`Quotes`,code:`InvalidQuotes`,message:`Trailing quote on quoted field is malformed`,row:w.length,index:p}),N++}}else if(r&&E.length===0&&s.substring(p,p+x)===r){if(j===-1)return z();p=j+b,j=s.indexOf(n,p),A=s.indexOf(t,p)}else if(A!==-1&&(A<j||j===-1))E.push(s.substring(p,A)),p=A+y,A=s.indexOf(t,p);else{if(j===-1)break;if(E.push(s.substring(p,j)),R(j+b),C&&(B(),m))return z();if(a&&w.length>=a)return z(!0)}return L();function F(e){w.push(e),D=p}function I(e){var t=0;return t=e!==-1&&(e=s.substring(N+1,e))&&e.trim()===``?e.length:t}function L(e){return _||(e===void 0&&(e=s.substring(p)),E.push(e),p=v,F(E),C&&B()),z()}function R(e){p=e,F(E),E=[],j=s.indexOf(n,p)}function z(r){if(e.header&&!g&&w.length&&!u){var i=w[0],a=Object.create(null),o=new Set(i);let t=!1;for(let n=0;n<i.length;n++){let r=c(i[n]);if(a[r=S(e.transformHeader)?e.transformHeader(r,n):r]){let e,s=a[r];for(;e=r+`_`+s,s++,o.has(e););o.add(e),i[n]=e,a[r]++,t=!0,(l=l===null?{}:l)[e]=r}else a[r]=1,i[n]=r;o.add(r)}t&&console.warn(`Duplicate headers found and renamed.`),u=!0}return{data:w,errors:T,meta:{delimiter:t,linebreak:n,aborted:m,truncated:!!r,cursor:D+(g||0),renamedHeaders:l}}}function B(){i(z()),w=[],T=[]}},this.abort=function(){m=!0},this.getCharIndex=function(){return p}}function _(e){var t=e.data,n=a[t.workerId],r=!1;if(t.error)n.userError(t.error,t.file);else if(t.results&&t.results.data){var i={abort:function(){r=!0,v(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(S(n.userStep)){for(var o=0;o<t.results.data.length&&(n.userStep({data:t.results.data[o],errors:t.results.errors,meta:t.results.meta},i),!r);o++);delete t.results}else S(n.userChunk)&&(n.userChunk(t.results,i,t.file),delete t.results)}t.finished&&!r&&v(t.workerId,t.results)}function v(e,t){var n=a[e];S(n.userComplete)&&n.userComplete(t),n.terminate(),delete a[e]}function y(){throw Error(`Not implemented.`)}function b(e){if(typeof e!=`object`||!e)return e;var t,n=Array.isArray(e)?[]:{};for(t in e)n[t]=b(e[t]);return n}function x(e,t){return function(){e.apply(t,arguments)}}function S(e){return typeof e==`function`}return s.parse=function(n,r){var i=(r||={}).dynamicTyping||!1;if(S(i)&&(r.dynamicTypingFunction=i,i={}),r.dynamicTyping=i,r.transform=!!S(r.transform)&&r.transform,!r.worker||!s.WORKERS_SUPPORTED)return i=null,s.NODE_STREAM_INPUT,typeof n==`string`?(n=c(n),i=new(r.download?u:f)(r)):!0===n.readable&&S(n.read)&&S(n.on)?i=new p(r):(t.File&&n instanceof File||n instanceof Object)&&(i=new d(r)),i.stream(n);(i=(()=>{var n;return!!s.WORKERS_SUPPORTED&&(n=(()=>{var n=t.URL||t.webkitURL||null,r=e.toString();return s.BLOB_URL||=n.createObjectURL(new Blob([`var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; `,`(`,r,`)();`],{type:`text/javascript`}))})(),(n=new t.Worker(n)).onmessage=_,n.id=o++,a[n.id]=n)})()).userStep=r.step,i.userChunk=r.chunk,i.userComplete=r.complete,i.userError=r.error,r.step=S(r.step),r.chunk=S(r.chunk),r.complete=S(r.complete),r.error=S(r.error),delete r.worker,i.postMessage({input:n,config:r,workerId:i.id})},s.unparse=function(e,t){var n=!1,r=!0,i=`,`,a=`\r
9
+ `,o=`"`,c=o+o,l=!1,u=null,d=!1,f=((()=>{if(typeof t==`object`){if(typeof t.delimiter!=`string`||s.BAD_DELIMITERS.filter(function(e){return t.delimiter.indexOf(e)!==-1}).length||(i=t.delimiter),typeof t.quotes!=`boolean`&&typeof t.quotes!=`function`&&!Array.isArray(t.quotes)||(n=t.quotes),typeof t.skipEmptyLines!=`boolean`&&typeof t.skipEmptyLines!=`string`||(l=t.skipEmptyLines),typeof t.newline==`string`&&(a=t.newline),typeof t.quoteChar==`string`&&(o=t.quoteChar,c=o+o),typeof t.header==`boolean`&&(r=t.header),Array.isArray(t.columns)){if(t.columns.length===0)throw Error(`Option columns is empty`);u=t.columns}t.escapeChar!==void 0&&(c=t.escapeChar+o),t.escapeFormulae instanceof RegExp?d=t.escapeFormulae:typeof t.escapeFormulae==`boolean`&&t.escapeFormulae&&(d=/^[=+\-@\t\r].*$/)}})(),new RegExp(h(o),`g`));if(typeof e==`string`&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return p(null,e,l);if(typeof e[0]==`object`)return p(u||Object.keys(e[0]),e,l)}else if(typeof e==`object`)return typeof e.data==`string`&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||=e.meta&&e.meta.fields||u,e.fields||=Array.isArray(e.data[0])?e.fields:typeof e.data[0]==`object`?Object.keys(e.data[0]):[],Array.isArray(e.data[0])||typeof e.data[0]==`object`||(e.data=[e.data])),p(e.fields||[],e.data||[],l);throw Error(`Unable to serialize unrecognized input`);function p(e,t,n){var o=``,s=(typeof e==`string`&&(e=JSON.parse(e)),typeof t==`string`&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),c=!Array.isArray(t[0]);if(s&&r){for(var l=0;l<e.length;l++)0<l&&(o+=i),o+=m(e[l],l);0<t.length&&(o+=a)}for(var u=0;u<t.length;u++){var d=(s?e:t[u]).length,f=!1,p=s?Object.keys(t[u]).length===0:t[u].length===0;if(n&&!s&&(f=n===`greedy`?t[u].join(``).trim()===``:t[u].length===1&&t[u][0].length===0),n===`greedy`&&s){for(var h=[],g=0;g<d;g++){var _=c?e[g]:g;h.push(t[u][_])}f=h.join(``).trim()===``}if(!f){for(var v=0;v<d;v++){0<v&&!p&&(o+=i);var y=s&&c?e[v]:v;o+=m(t[u][y],v)}u<t.length-1&&(!n||0<d&&!p)&&(o+=a)}}return o}function m(e,t){var r,a,l;return e==null?``:e.constructor===Date?JSON.stringify(e).slice(1,25):(l=!1,d&&typeof e==`string`&&d.test(e)&&(e=`'`+e,l=!0),a=(r=e.toString()).replace(f,c),(l=l||!0===n||typeof n==`function`&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var n=0;n<t.length;n++)if(-1<e.indexOf(t[n]))return!0;return!1})(a,s.BAD_DELIMITERS)||-1<a.indexOf(i)||-1<r.indexOf(o)||a.charAt(0)===` `||a.charAt(a.length-1)===` `)?o+a+o:a)}},s.RECORD_SEP=``,s.UNIT_SEP=``,s.BYTE_ORDER_MARK=``,s.BAD_DELIMITERS=[`\r`,`
10
+ `,`"`,s.BYTE_ORDER_MARK],s.WORKERS_SUPPORTED=!r&&!!t.Worker,s.NODE_STREAM_INPUT=1,s.LocalChunkSize=10485760,s.RemoteChunkSize=5242880,s.DefaultDelimiter=`,`,s.Parser=g,s.ParserHandle=m,s.NetworkStreamer=u,s.FileStreamer=d,s.StringStreamer=f,s.ReadableStreamStreamer=p,t.jQuery&&((n=t.jQuery).fn.parse=function(e){var r=e.config||{},i=[];return this.each(function(e){if(!(n(this).prop(`tagName`).toUpperCase()===`INPUT`&&n(this).attr(`type`).toLowerCase()===`file`&&t.FileReader)||!this.files||this.files.length===0)return!0;for(var a=0;a<this.files.length;a++)i.push({file:this.files[a],inputElem:this,instanceConfig:n.extend({},r)})}),a(),this;function a(){if(i.length===0)S(e.complete)&&e.complete();else{var t,r,a,c,l=i[0];if(S(e.before)){var u=e.before(l.file,l.inputElem);if(typeof u==`object`){if(u.action===`abort`)return t=`AbortError`,r=l.file,a=l.inputElem,c=u.reason,void(S(e.error)&&e.error({name:t},r,a,c));if(u.action===`skip`)return void o();typeof u.config==`object`&&(l.instanceConfig=n.extend(l.instanceConfig,u.config))}else if(u===`skip`)return void o()}var d=l.instanceConfig.complete;l.instanceConfig.complete=function(e){S(d)&&d(e,l.file,l.inputElem),o()},s.parse(l.file,l.instanceConfig)}}function o(){i.splice(0,1),a()}}),i&&(t.onmessage=function(e){e=e.data,s.WORKER_ID===void 0&&e&&(s.WORKER_ID=e.workerId),typeof e.input==`string`?t.postMessage({workerId:s.WORKER_ID,results:s.parse(e.input,e.config),finished:!0}):(t.File&&e.input instanceof File||e.input instanceof Object)&&(e=s.parse(e.input,e.config))&&t.postMessage({workerId:s.WORKER_ID,results:e,finished:!0})}),(u.prototype=Object.create(l.prototype)).constructor=u,(d.prototype=Object.create(l.prototype)).constructor=d,(f.prototype=Object.create(f.prototype)).constructor=f,(p.prototype=Object.create(l.prototype)).constructor=p,s})}));export{t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{n,p as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{n as a}from"./dist-DziNzWI2.js";import{t as o}from"./switch-DoOJF2yg.js";import{t as s}from"./dropzone-B2auMkf2.js";import{o as c,t as l}from"./use-settings-navigation-CzGU4sus.js";import{a as u,c as d,n as f,o as p,r as m,s as h,t as g}from"./field-BXEh3ptU.js";import{wi as _,yi as v}from"./index-DOF2jDq0.js";import{t as y}from"./brand-icon-CrmbX86T.js";import{n as b}from"./global-data-context-3MItMry2.js";import{t as x}from"./integration-header-C7GXGis_.js";``+new URL(`pintura-screenshot-DTzk1LjU.png`,import.meta.url).href;var S=e(t(),1),C=n({method:`POST`,path:()=>`/files/upload/`,body:({file:e})=>{let t=new FormData;return t.append(`file`,e),t}}),w=i();function T(){let{updateRoute:e}=l(),[t,n]=(0,S.useState)({js:!1,css:!1}),{settings:i,config:T}=b(),[E]=v(i,[`pintura`]),{mutateAsync:D}=_(),{mutateAsync:O}=C(),k=r();(0,S.useEffect)(()=>{N(E||!1)},[E]);let[A,j]=(0,S.useState)(`Save`),[M,N]=(0,S.useState)(!!E),P=async()=>{let e=[{key:`pintura`,value:M}];try{j(`Saving...`),await Promise.all([D(e),new Promise(e=>{setTimeout(e,1e3)})]),j(`Saved`)}catch(e){k(e)}finally{setTimeout(()=>j(`Save`),1e3)}},F=async(e,t)=>{try{n(e=>({...e,[t]:!0}));let{files:r}=await O({file:e}),i=r[0].url,o=[{key:`pintura_${t}_url`,value:i}];await D(o),a.success(`Pintura ${t} uploaded`)}catch(e){k(e)}finally{n(e=>({...e,[t]:!1}))}};return(0,w.jsxs)(c,{cancelLabel:`Close`,dirty:M!==E,okLabel:A,okVariant:`default`,testId:`pintura-modal`,title:``,onClose:()=>{e(`integrations`)},onOk:P,children:[(0,w.jsx)(x,{detail:`Advanced image editing`,icon:(0,w.jsx)(y,{name:`pintura`,size:48}),title:`Pintura`}),(0,w.jsxs)(`div`,{className:`mt-7`,children:[!T.pintura&&(0,w.jsxs)(`div`,{className:`mb-7 flex flex-col items-stretch justify-between gap-4 rounded-sm bg-gray-50 p-4 md:flex-row md:p-7 dark:bg-gray-950`,children:[(0,w.jsxs)(`div`,{className:`md:basis-1/2`,children:[(0,w.jsx)(`p`,{className:`mb-4 text-md font-semibold`,children:`Add advanced image editing to Ghost, with Pintura`}),(0,w.jsx)(`p`,{className:`mb-4`,children:`Pintura is a powerful JavaScript image editor that allows you to crop, rotate, annotate and modify images directly inside Ghost.`}),(0,w.jsx)(`p`,{children:`Try a demo, purchase a license, and download the required CSS/JS files from pqina.nl/pintura/ to activate this feature.`})]}),(0,w.jsxs)(`div`,{className:`flex grow flex-col items-end justify-between gap-2 md:basis-1/2`,children:[(0,w.jsx)(`img`,{alt:`Pintura screenshot`,src:``+new URL(`pintura-screenshot-DTzk1LjU.png`,import.meta.url).href}),(0,w.jsx)(`a`,{className:`-mb-1 font-medium text-green`,href:`https://pqina.nl/pintura/ghost/?ref=ghost.org`,rel:`noopener noreferrer`,target:`_blank`,children:`Find out more →`})]})]}),(0,w.jsxs)(d,{className:`gap-0`,children:[(0,w.jsx)(h,{className:`mb-3 text-md! leading-supertight font-bold md:text-lg!`,children:`Pintura configuration`}),(0,w.jsxs)(u,{className:`gap-8 rounded-sm border border-border-default p-4 md:p-7`,children:[(0,w.jsxs)(g,{orientation:`horizontal`,children:[(0,w.jsxs)(f,{children:[(0,w.jsx)(p,{htmlFor:`pintura-enabled`,children:`Enable Pintura`}),(0,w.jsxs)(m,{children:[`Enable`,` `,(0,w.jsx)(`a`,{className:`text-green`,href:`https://pqina.nl/pintura/ghost/?ref=ghost.org`,rel:`noopener noreferrer`,target:`_blank`,children:`Pintura`}),` `,`for editing your images in Ghost`]})]}),(0,w.jsx)(o,{checked:M,id:`pintura-enabled`,onCheckedChange:N})]}),M&&!T.pintura&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`div`,{className:`flex flex-col justify-between gap-1 md:flex-row md:items-center`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`div`,{children:`Upload Pintura script`}),(0,w.jsxs)(`div`,{className:`text-sm text-gray-600`,children:[`Upload the `,(0,w.jsx)(`code`,{children:`pintura-umd.js`}),` file from the Pintura package`]})]}),(0,w.jsx)(s,{accept:{"text/javascript":[`.js`],"application/javascript":[`.js`]},disabled:t.js,variant:`button`,onDropAccepted:e=>void F(e[0],`js`),children:t.js?`Uploading...`:`Upload`})]}),(0,w.jsxs)(`div`,{className:`flex flex-col justify-between gap-1 md:flex-row md:items-center`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`div`,{children:`Upload Pintura styles`}),(0,w.jsxs)(`div`,{className:`text-sm text-gray-600`,children:[`Upload the `,(0,w.jsx)(`code`,{children:`pintura.css`}),` file from the Pintura package`]})]}),(0,w.jsx)(s,{accept:{"text/css":[`.css`]},disabled:t.css,variant:`button`,onDropAccepted:e=>void F(e[0],`css`),children:t.css?`Uploading...`:`Upload`})]})]})]})]})]})]})}export{T 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{$r as r,En as i}from"./index-DOF2jDq0.js";var a=e(t(),1),o=n(),s=({href:e,onDestroyed:t,selectedTab:n,portalParent:s})=>{n||=`signup`;let c=(0,a.useRef)(null),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(!0),p=(0,a.useCallback)(()=>{setTimeout(()=>{c.current&&f(!1)},300)},[c]);if((0,a.useEffect)(()=>{let n=t=>{e&&new URL(t.origin).origin===new URL(e).origin&&t.data?.type===`portal-preview-ready`&&p()};return window.addEventListener(`message`,n,!0),()=>{window.removeEventListener(`message`,n,!0),t?.()}},[e,t,p,l]),!e)return null;let m=`mt-[-7%] flex h-screen items-center justify-center`,h=`hidden`;return s===`preview`?(m=`pointer-events-none absolute inset-0 z-50`,h=`invisible`):s===`offers`&&(m=`absolute inset-0 z-50`,h=`invisible`),(0,o.jsxs)(o.Fragment,{children:[d&&(0,o.jsx)(r,{align:`center`,className:m,justify:`center`,children:(0,o.jsx)(i,{size:`lg`})}),(0,o.jsx)(`iframe`,{ref:c,className:!d&&l?``:h,"data-testid":`portal-preview`,height:`100%`,src:e,title:`Portal Preview`,width:`100%`,onLoad:()=>{u(!0)}})]})};export{s as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{n,p as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{t as a}from"./use-form-DJKZJhQh.js";import{H as o,s}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as c}from"./grid-BEUIDQX7.js";import{t as l}from"./text-BLI0C8Mc.js";import{D as u,t as d,v as f}from"./button-D414TI3B.js";import{i as p,n as m,o as h,s as g,t as _}from"./select-D_4xWFYv.js";import{i as v,n as y,r as b,t as x}from"./tabs-BZyz4ZCH.js";import{t as S}from"./switch-DoOJF2yg.js";import{t as C}from"./use-settings-navigation-CzGU4sus.js";import{t as w}from"./checkbox-CFFqf0Nh.js";import{a as T,i as E,n as D,o as O,r as k,t as A}from"./copy-field-DRBx6Ady.js";import{a as j,c as M,i as N,n as P,o as F,r as I,s as L,t as R}from"./field-BXEh3ptU.js";import{n as ee,t as te}from"./toggle-group-BTL1QsWY.js";import{$r as ne,B as re,Dn as z,Qr as B,R as V,_i as H,ki as ie,vi as U,wi as ae,yi as W,yn as oe,z as se}from"./index-DOF2jDq0.js";import{a as ce,c as le,i as ue,n as de,o as fe,r as pe,s as me,t as he}from"./images-H-BIm8OQ.js";import{a as G,o as ge,r as K}from"./tiers-6mPzCXlM.js";import{t as q}from"./modal-page-8Ipfl51B.js";import{t as _e}from"./validator-DlFQP70j.js";import{t as ve}from"./brand-icon-CrmbX86T.js";import{n as ye}from"./confirmation-context-znVJD4pX.js";import{n as J}from"./global-data-context-3MItMry2.js";import{t as be}from"./html-field-B3CrKV9Y.js";import{t as xe}from"./preview-modal-CFUxUGHp.js";import{t as Se}from"./portal-frame-DYo0bh0E.js";import{t as Ce}from"./use-query-params-DlOHCo-R.js";var Y=e(t(),1),X=i(),we=({localSettings:e,settingKey:t,updateSetting:n})=>{let r=t.replaceAll(`_`,`-`);return(0,X.jsxs)(R,{orientation:`horizontal`,children:[(0,X.jsx)(F,{htmlFor:r,children:`Display option to purchase gift`}),(0,X.jsx)(S,{checked:!!U(e,t),id:r,onCheckedChange:e=>n(t,e)})]})},Te=({localSettings:e,updateSetting:t})=>{let[n,r,i,a,o,s]=W(e,[`transistor`,`transistor_portal_enabled`,`transistor_portal_heading`,`transistor_portal_description`,`transistor_portal_button_text`,`transistor_portal_url_template`]);if(n!==!0)return null;let c=r===!0;return(0,X.jsxs)(B,{gap:`xl`,children:[(0,X.jsx)(oe,{}),(0,X.jsxs)(B,{gap:`md`,children:[(0,X.jsx)(l,{as:`h5`,className:`md:text-lg`,leading:`supertight`,weight:`bold`,children:`Transistor`}),(0,X.jsxs)(R,{orientation:`horizontal`,children:[(0,X.jsxs)(P,{children:[(0,X.jsx)(F,{htmlFor:`transistor-portal-enabled`,children:`Enable Transistor integration`}),(0,X.jsx)(I,{children:`Show a section on the account page for members to access private podcasts`})]}),(0,X.jsx)(S,{checked:c,id:`transistor-portal-enabled`,onCheckedChange:e=>t(`transistor_portal_enabled`,e)})]})]}),c&&(0,X.jsxs)(j,{className:`gap-6`,children:[(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{htmlFor:`transistor-heading`,children:`Heading`}),(0,X.jsx)(z,{id:`transistor-heading`,placeholder:`Podcasts`,value:i,onChange:e=>t(`transistor_portal_heading`,e.target.value)}),(0,X.jsx)(I,{children:`The heading displayed above the Transistor section`})]}),(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{htmlFor:`transistor-description`,children:`Description`}),(0,X.jsx)(z,{id:`transistor-description`,placeholder:`Access your RSS feeds`,value:a,onChange:e=>t(`transistor_portal_description`,e.target.value)}),(0,X.jsx)(I,{children:`A short description of what members can do`})]}),(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{htmlFor:`transistor-button-text`,children:`Button text`}),(0,X.jsx)(z,{id:`transistor-button-text`,placeholder:`Manage`,value:o,onChange:e=>t(`transistor_portal_button_text`,e.target.value)}),(0,X.jsx)(I,{children:`The text displayed on the button`})]}),(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{htmlFor:`transistor-url-template`,children:`URL template`}),(0,X.jsx)(z,{id:`transistor-url-template`,placeholder:`https://partner.transistor.fm/ghost/{memberUuid}`,value:s,onChange:e=>t(`transistor_portal_url_template`,e.target.value)}),(0,X.jsxs)(I,{children:[`Use `,`{memberUuid}`,` as a placeholder for the member ID`]})]})]})]})},Ee=e(_e(),1),De=({localSettings:e,updateSetting:t,errors:n,setError:r})=>{let{siteData:i,settings:a,config:o}=J(),[s,c]=W(a,[`members_support_address`,`support_email_address`]),l=c?.toString()||V(s?.toString()||``,i,o),u=se(i,o),[d,f]=(0,Y.useState)(l);return(0,Y.useEffect)(()=>{f(l)},[l]),(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(j,{className:`mb-10 gap-8`,children:[(0,X.jsx)(we,{localSettings:e,settingKey:`portal_account_gift_promotion`,updateSetting:t}),(0,X.jsxs)(R,{"data-invalid":!!n.members_support_address||void 0,children:[(0,X.jsx)(F,{htmlFor:`members-support-address`,children:`Support email address`}),(0,X.jsx)(z,{"aria-invalid":!!n.members_support_address||void 0,id:`members-support-address`,value:d,onBlur:e=>{let n=e.target.value;n?Ee.default.isEmail(n)?r(`members_support_address`,``):r(`members_support_address`,`Enter a valid email address`):r(`members_support_address`,`Enter an email address`);let a=u&&n===`noreply@${u}`?`noreply`:n;t(`members_support_address`,a),f(V(a,i,o))},onChange:e=>f(e.target.value)}),n.members_support_address&&(0,X.jsx)(N,{children:n.members_support_address})]}),(0,X.jsx)(Te,{localSettings:e,updateSetting:t})]})})},Z=[{icon:`portal-icon-1`,label:`Portal icon 1`,value:`icon-1`},{icon:`portal-icon-2`,label:`Portal icon 2`,value:`icon-2`},{icon:`portal-icon-3`,label:`Portal icon 3`,value:`icon-3`},{icon:`portal-icon-4`,label:`Portal icon 4`,value:`icon-4`},{icon:`portal-icon-5`,label:`Portal icon 5`,value:`icon-5`}],Oe=({localSettings:e,updateSetting:t})=>{let{mutateAsync:n}=de(),i=r(),[a,o,s,v]=W(e,[`portal_button`,`portal_button_style`,`portal_button_icon`,`portal_button_signup_text`]),y=s||Z[0].value,[b,x]=(0,Y.useState)(Z.map(({value:e})=>e).includes(y)?void 0:y),C=async e=>{try{let r=he(await n({file:e}));t(`portal_button_icon`,r),x(r)}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),i(t)}};return(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(j,{className:`mb-10 gap-8`,children:[(0,X.jsxs)(R,{orientation:`horizontal`,children:[(0,X.jsx)(F,{htmlFor:`show-portal-button`,children:`Show portal button`}),(0,X.jsx)(S,{checked:!!a,id:`show-portal-button`,onCheckedChange:e=>t(`portal_button`,e)})]}),a&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{children:`Button style`}),(0,X.jsxs)(_,{value:o,onValueChange:e=>t(`portal_button_style`,e),children:[(0,X.jsx)(h,{"aria-label":`Button style`,children:(0,X.jsx)(g,{})}),(0,X.jsx)(m,{children:[{value:`icon-and-text`,label:`Icon and text`},{value:`icon-only`,label:`Icon only`},{value:`text-only`,label:`Text only`}].map(e=>(0,X.jsx)(p,{value:e.value,children:e.label},e.value))})]})]}),o?.toString()?.includes(`icon`)&&(0,X.jsxs)(B,{gap:`sm`,children:[(0,X.jsx)(l,{as:`h6`,className:`text-base`,weight:`semibold`,children:`Icon`}),(0,X.jsxs)(c,{className:`w-full gap-px rounded-(--input-group-radius) bg-muted p-0.5`,columns:6,gap:`none`,children:[(0,X.jsx)(te,{"aria-label":`Portal button icon`,className:`contents border-0! bg-transparent! p-0`,type:`single`,value:y,onValueChange:e=>e&&t(`portal_button_icon`,e),children:Z.map(e=>(0,X.jsx)(ee,{"aria-label":e.label,className:`group h-[46px] w-full min-w-0 rounded-[calc(var(--radius-md)+1px)] p-3`,value:e.value,children:(0,X.jsx)(ve,{className:`size-[18px] opacity-70 transition-opacity group-hover:opacity-100 group-data-[state=on]:opacity-100`,name:e.icon})},e.value))}),(0,X.jsx)(pe,{className:`h-[46px] w-full min-w-0 overflow-visible rounded-[calc(var(--radius-md)+1px)] ${y===b?`bg-background shadow-sm`:``}`,children:b?(0,X.jsxs)(le,{className:`overflow-visible`,children:[(0,X.jsx)(me,{className:`rounded-md`,src:b}),(0,X.jsx)(d,{"aria-label":`Use uploaded Portal icon`,"aria-pressed":y===b,className:`absolute inset-0 z-10 size-full rounded-md bg-transparent hover:bg-transparent`,size:`icon`,type:`button`,variant:`ghost`,onClick:()=>t(`portal_button_icon`,b)}),(0,X.jsx)(ce,{className:`-top-2 -right-2 z-20 opacity-100`,children:(0,X.jsx)(ue,{"aria-label":`Delete uploaded Portal icon`,className:`size-6 rounded-full p-0`,onClick:()=>{y===b&&t(`portal_button_icon`,null),x(void 0)},children:(0,X.jsx)(u,{})})})]}):(0,X.jsx)(fe,{accept:{"image/*":[]},"aria-label":`Upload Portal icon`,className:`size-full rounded-[calc(var(--radius-md)+1px)] border-0 bg-transparent p-0 hover:bg-surface-elevated`,inputAriaLabel:`Upload Portal icon`,onDropAccepted:e=>void C(e[0]),children:(0,X.jsx)(f,{className:`size-5`})})})]})]}),o?.toString()?.includes(`text`)&&(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{htmlFor:`portal-signup-button-text`,children:`Signup button text`}),(0,X.jsx)(z,{id:`portal-signup-button-text`,value:v,onChange:e=>t(`portal_button_signup_text`,e.target.value)})]})]})]})})},Q=({name:e,value:t})=>(0,X.jsxs)(A,{className:`lg:flex-row lg:items-center lg:gap-5`,value:t,children:[(0,X.jsx)(T,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:e}),(0,X.jsxs)(k,{children:[(0,X.jsx)(O,{}),(0,X.jsx)(D,{children:(0,X.jsx)(E,{})})]})]}),ke=()=>{let[e,t]=(0,Y.useState)(!1),[n,r]=(0,Y.useState)(``),{siteData:i}=J(),{data:{tiers:a}={}}=G(),o=K(a||[]),s=ie();(0,Y.useEffect)(()=>{o?.length&&!n&&r(o[0].id)},[o,n]);let c=o?.map(e=>({label:e.name,value:e.id})),u=re(i);return(0,X.jsx)(q,{className:`max-w-[920px] text-base text-foreground`,children:(0,X.jsxs)(B,{gap:`2xl`,children:[(0,X.jsxs)(B,{gap:`xs`,children:[(0,X.jsx)(q.Title,{className:`mb-0`,children:`Links`}),(0,X.jsxs)(l,{children:[`Use these `,e?`data attributes`:`links`,` in your theme to show pages of Portal.`]})]}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(B,{gap:`lg`,children:[(0,X.jsxs)(ne,{as:`header`,className:`border-b border-border pb-2`,justify:`between`,children:[(0,X.jsx)(l,{as:`h2`,size:`xl`,weight:`semibold`,children:`Generic`}),(0,X.jsx)(x,{value:e?`data-attributes`:`links`,variant:`segmented-sm`,onValueChange:e=>t(e===`data-attributes`),children:(0,X.jsxs)(b,{"aria-label":`Portal link format`,children:[(0,X.jsx)(v,{value:`links`,children:`Links`}),(0,X.jsx)(v,{value:`data-attributes`,children:`Data attributes`})]})})]}),(0,X.jsxs)(B,{gap:`md`,children:[(0,X.jsx)(Q,{name:`Default`,value:e?`data-portal`:`${u}#/portal`}),(0,X.jsx)(Q,{name:`Sign in`,value:e?`data-portal="signin"`:`${u}#/portal/signin`}),(0,X.jsx)(Q,{name:`Sign up`,value:e?`data-portal="signup"`:`${u}#/portal/signup`}),s&&(0,X.jsx)(Q,{name:`Gift subscriptions`,value:e?`data-portal="gift"`:`${u}#/portal/gift`})]})]})}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(B,{gap:`lg`,children:[(0,X.jsx)(l,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Tiers`}),(0,X.jsxs)(B,{gap:`md`,children:[(0,X.jsxs)(R,{className:`lg:flex-row lg:items-center lg:justify-between lg:gap-5 [&>*]:w-auto`,children:[(0,X.jsx)(F,{className:`shrink-0 whitespace-nowrap lg:w-[180px]`,children:`Tier`}),(0,X.jsxs)(_,{value:n,onValueChange:r,children:[(0,X.jsx)(h,{"aria-label":`Tier`,className:`w-fit`,children:(0,X.jsx)(g,{})}),(0,X.jsx)(m,{children:c.map(e=>(0,X.jsx)(p,{value:e.value,children:e.label},e.value))})]})]}),(0,X.jsx)(Q,{name:`Signup / Monthly`,value:e?`data-portal="signup/${n}/monthly"`:`${u}#/portal/signup/${n}/monthly`}),(0,X.jsx)(Q,{name:`Signup / Yearly`,value:e?`data-portal="signup/${n}/yearly"`:`${u}#/portal/signup/${n}/yearly`}),(0,X.jsx)(Q,{name:`Signup / Free`,value:e?`data-portal="signup/free"`:`${u}#/portal/signup/free`})]})]})}),(0,X.jsx)(`section`,{children:(0,X.jsxs)(B,{gap:`lg`,children:[(0,X.jsx)(l,{as:`h2`,className:`border-b border-border pb-2`,size:`xl`,weight:`semibold`,children:`Account`}),(0,X.jsxs)(B,{gap:`md`,children:[(0,X.jsx)(Q,{name:`Account`,value:e?`data-portal="account"`:`${u}#/portal/account`}),(0,X.jsx)(Q,{name:`Account / Plans`,value:e?`data-portal="account/plans"`:`${u}#/portal/account/plans`}),(0,X.jsx)(Q,{name:`Account / Profile`,value:e?`data-portal="account/profile"`:`${u}#/portal/account/profile`}),(0,X.jsx)(Q,{name:`Account / Newsletters`,value:e?`data-portal="account/newsletters"`:`${u}#/portal/account/newsletters`}),(0,X.jsx)(Q,{name:`Account / Newsletter help`,value:e?`data-portal="account/newsletters/help"`:`${u}#/portal/account/newsletters/help`})]})]})})]})})},Ae=({settings:e,config:t,tiers:n,siteData:r,selectedTab:i,previewTheme:a})=>{if(!r?.url)return null;let o=n.filter(e=>e.visibility===`public`&&e.type===`paid`).map(e=>e.id),s=r.url.replace(/\/$/,``),c=JSON.parse(U(e,`portal_plans`)||``),l=new URLSearchParams;l.append(`button`,U(e,`portal_button`)?`true`:`false`),l.append(`name`,U(e,`portal_name`)?`true`:`false`),l.append(`signupGiftPromotion`,U(e,`portal_signup_gift_promotion`)?`true`:`false`),l.append(`accountGiftPromotion`,U(e,`portal_account_gift_promotion`)?`true`:`false`),l.append(`isFree`,c.includes(`free`)?`true`:`false`),l.append(`isMonthly`,H(e,t)&&c.includes(`monthly`)?`true`:`false`),l.append(`isYearly`,H(e,t)&&c.includes(`yearly`)?`true`:`false`),l.append(`page`,i===`account`?`accountHome`:`signup`),l.append(`previewTheme`,a),l.append(`buttonIcon`,encodeURIComponent(U(e,`portal_button_icon`)||`icon-1`)),l.append(`signupButtonText`,encodeURIComponent(U(e,`portal_button_signup_text`)||``)),l.append(`membersSignupAccess`,U(e,`members_signup_access`)||`all`),l.append(`allowSelfSignup`,U(e,`allow_self_signup`)||`false`),l.append(`signupTermsHtml`,U(e,`portal_signup_terms_html`)||``),l.append(`signupCheckboxRequired`,U(e,`portal_signup_checkbox_required`)?`true`:`false`),l.append(`portalProducts`,o.join(`,`));let u=U(e,`portal_default_plan`);u&&l.append(`portalDefaultPlan`,u),c&&c.length&&l.append(`portalPrices`,encodeURIComponent(c.join(`,`)));let d=U(e,`accent_color`);d!=null&&l.append(`accentColor`,encodeURIComponent(d));let f=U(e,`portal_button_style`);return f&&l.append(`buttonStyle`,encodeURIComponent(f)),l.append(`disableBackground`,`false`),U(e,`transistor`)&&l.append(`transistorPortalSettings`,JSON.stringify({enabled:U(e,`transistor_portal_enabled`),heading:U(e,`transistor_portal_heading`)||`Podcasts`,description:U(e,`transistor_portal_description`)||`Access your RSS feeds`,button_text:U(e,`transistor_portal_button_text`)||`Manage`,url_template:U(e,`transistor_portal_url_template`)||`https://partner.transistor.fm/ghost/{memberUuid}`})),l.append(`admin_toolbar`,`0`),`${s}/?v=modal-portal-settings#/portal/preview?${l.toString()}`},je=({darkMode:e,selectedTab:t=`signup`,localSettings:n,localTiers:r})=>{let{siteData:i,config:a}=J(),o=Ae({settings:n,tiers:r,selectedTab:t,previewTheme:e?`dark`:`light`,siteData:i,config:a}),s=(0,X.jsx)(X.Fragment,{});switch(t){case`account`:s=(0,X.jsx)(X.Fragment,{children:(0,X.jsx)(Se,{href:o||``,portalParent:`preview`,selectedTab:t})});break;case`links`:s=(0,X.jsx)(ke,{});break;default:s=(0,X.jsx)(X.Fragment,{children:(0,X.jsx)(Se,{href:o||``,portalParent:`preview`,selectedTab:t})});break}return s},Me=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a})=>{let{config:s}=J(),[c,l,u,d,f,v]=W(e,[`members_signup_access`,`portal_name`,`portal_signup_terms_html`,`portal_signup_checkbox_required`,`portal_plans`,`portal_default_plan`]),y=JSON.parse(f?.toString()||`[]`),b=(0,Y.useMemo)(()=>{let e=document.createElement(`div`);return e.innerHTML=u?.toString()||``,e.innerText.length},[u]),x=(0,Y.useCallback)((e,t)=>{a(e,t)},[]);(0,Y.useEffect)(()=>{b>115?x(`portal_signup_terms_html`,`Signup notice is too long`):x(`portal_signup_terms_html`,void 0)},[b,x]);let C=e=>{let n=y.indexOf(e);n===-1?y.push(e):y.splice(n,1),t(`portal_plans`,JSON.stringify(y)),v===`yearly`?!y.includes(`yearly`)&&y.includes(`monthly`)&&t(`portal_default_plan`,`monthly`):v===`monthly`&&(y.includes(`monthly`)||t(`portal_default_plan`,`yearly`))},T=c===`all`||c===`paid`,E=c===`all`,D=H(e,s),O=[];n&&n.forEach(e=>{e.type===`free`&&E&&O.push({checked:y.includes(`free`),disabled:!T,label:e.name,value:`free`,testId:`free-tier-checkbox`,onChange:n=>{y.includes(`free`)&&!n&&y.splice(y.indexOf(`free`),1),!y.includes(`free`)&&n&&y.push(`free`),t(`portal_plans`,JSON.stringify(y)),r({...e,visibility:n?`public`:`none`})}})});let k=K(n)||[],A=[{value:`yearly`,label:`Yearly`},{value:`monthly`,label:`Monthly`}];D&&k.length>0&&k.forEach(e=>{O.push({checked:e.visibility===`public`,label:e.name,value:e.id,onChange:t=>r({...e,visibility:t?`public`:`none`})})});let N=D&&k.length>0&&k.some(e=>e.visibility===`public`);return(0,X.jsx)(`div`,{className:`mt-7`,children:(0,X.jsxs)(j,{className:`mb-10 gap-8`,children:[(0,X.jsxs)(R,{"data-disabled":!T||void 0,orientation:`horizontal`,children:[(0,X.jsx)(F,{htmlFor:`portal-display-name`,children:`Display name in signup form`}),(0,X.jsx)(S,{checked:!!l,disabled:!T,id:`portal-display-name`,onCheckedChange:e=>t(`portal_name`,e)})]}),(0,X.jsxs)(M,{children:[(0,X.jsx)(L,{variant:`label`,children:`Available tiers`}),(0,X.jsx)(j,{"data-slot":`checkbox-group`,children:O.map(e=>(0,X.jsxs)(R,{"data-disabled":e.disabled||void 0,orientation:`horizontal`,children:[(0,X.jsx)(w,{checked:e.checked,"data-testid":e.testId,disabled:e.disabled,id:`portal-tier-${e.value}`,onCheckedChange:t=>e.onChange(t===!0)}),(0,X.jsx)(F,{htmlFor:`portal-tier-${e.value}`,children:e.label})]},e.value))})]}),N&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(M,{children:[(0,X.jsx)(L,{variant:`label`,children:`Available prices`}),(0,X.jsx)(j,{"data-slot":`checkbox-group`,children:[`monthly`,`yearly`].map(e=>(0,X.jsxs)(R,{"data-disabled":!T||void 0,orientation:`horizontal`,children:[(0,X.jsx)(w,{checked:y.includes(e),disabled:!T,id:`portal-plan-${e}`,onCheckedChange:()=>C(e)}),(0,X.jsx)(F,{className:`capitalize`,htmlFor:`portal-plan-${e}`,children:e})]},e))})]}),y.includes(`yearly`)&&y.includes(`monthly`)&&(0,X.jsxs)(R,{children:[(0,X.jsx)(F,{children:`Default price at signup`}),(0,X.jsxs)(_,{value:typeof v==`string`?v:``,onValueChange:e=>t(`portal_default_plan`,e),children:[(0,X.jsx)(h,{"aria-label":`Default price at signup`,children:(0,X.jsx)(g,{})}),(0,X.jsx)(m,{children:A.map(e=>(0,X.jsx)(p,{value:e.value,children:e.label},e.value))})]})]})]}),(0,X.jsx)(be,{error:!!i.portal_signup_terms_html,hint:i.portal_signup_terms_html||(0,X.jsxs)(X.Fragment,{children:[`Recommended: `,(0,X.jsx)(`strong`,{children:o(115)}),` characters. You've used`,` `,(0,X.jsx)(`strong`,{className:`text-green`,children:o(b)})]}),nodes:`MINIMAL_NODES`,placeholder:`By signing up, I agree to receive emails from ...`,title:`Display notice at signup`,value:u?.toString(),onChange:e=>t(`portal_signup_terms_html`,e)}),u?.toString()&&(0,X.jsxs)(R,{"data-disabled":!T||void 0,orientation:`horizontal`,children:[(0,X.jsx)(F,{htmlFor:`portal-require-agreement`,children:`Require agreement`}),(0,X.jsx)(S,{checked:!!d,disabled:!T,id:`portal-require-agreement`,onCheckedChange:e=>t(`portal_signup_checkbox_required`,e)})]}),(0,X.jsx)(we,{localSettings:e,settingKey:`portal_signup_gift_promotion`,updateSetting:t})]})})},Ne=n({path:()=>`/settings/verifications`,method:`PUT`,body:({token:e})=>({token:e}),updateQueries:{dataType:`SettingsResponseType`,emberUpdateType:`createOrUpdate`,update:e=>({...e,settings:e.settings})}}),Pe={signupOptions:`signup`,lookAndFeel:`signup`,accountPage:`account`},$=`border-b-2 border-transparent after:hidden data-[state=active]:border-foreground`,Fe=({localSettings:e,updateSetting:t,localTiers:n,updateTier:r,errors:i,setError:a,selectedTab:o,onTabChange:s})=>(0,X.jsx)(`div`,{className:`pt-4`,children:(0,X.jsxs)(x,{value:o,variant:`underline`,onValueChange:e=>s(e),children:[(0,X.jsxs)(b,{children:[(0,X.jsx)(v,{className:$,value:`signupOptions`,children:`Signup options`}),(0,X.jsx)(v,{className:$,value:`lookAndFeel`,children:`Look & feel`}),(0,X.jsx)(v,{className:$,value:`accountPage`,children:`Account page`})]}),(0,X.jsx)(y,{value:`signupOptions`,children:(0,X.jsx)(Me,{errors:i,localSettings:e,localTiers:n,setError:a,updateSetting:t,updateTier:r})}),(0,X.jsx)(y,{value:`lookAndFeel`,children:(0,X.jsx)(Oe,{localSettings:e,updateSetting:t})}),(0,X.jsx)(y,{value:`accountPage`,children:(0,X.jsx)(De,{errors:i,localSettings:e,setError:a,updateSetting:t})})]})}),Ie=()=>{let{updateRoute:e}=C(),{darkMode:t}=s(),[n,i]=(0,Y.useState)(`signup`),[o,c]=(0,Y.useState)(`signupOptions`),l=r(),{confirm:u}=ye(),{settings:d,siteData:f,config:p}=J(),{mutateAsync:m}=ae(),{data:{tiers:h}={}}=G(),{mutateAsync:g}=ge(),{mutateAsync:_}=Ne(),{getParam:y}=Ce(),S=y(`verifyEmail`);(0,Y.useEffect)(()=>{S&&(async({token:e})=>{try{let{settings:t}=await _({token:e}),[n]=W(t,[`members_support_address`]);u({title:`Support address verified`,prompt:(0,X.jsxs)(X.Fragment,{children:[`Your support email address has been changed to `,(0,X.jsx)(`strong`,{children:n}),`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}catch(e){let t=`There was an error verifying your email address. Please try again.`;e instanceof Error&&e.message===`Token expired`&&(t=`Verification link has expired.`),u({title:`Error verifying support address`,prompt:t,okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()}),l(e,{withToast:!1})}})({token:S})},[u,l,S,_]);let{formState:w,setFormState:T,saveState:E,handleSave:D,updateForm:O,okProps:k}=a({initialState:{settings:d,tiers:h||[]},savingDelay:500,onSave:async()=>{await Promise.all(w.tiers.filter(({dirty:e})=>e).map(e=>g(e))),T(e=>({...e,tiers:w.tiers.map(e=>({...e,dirty:!1}))}));let e=w.settings.filter(e=>e.dirty);if(!e.length)return;let{meta:t,settings:n}=await m(e);if(T(e=>({...e,settings:w.settings.map(e=>({...e,dirty:!1}))})),t?.sent_email_verification){let e=w.settings.find(e=>e.key===`members_support_address`)?.value,t=n.find(e=>e.key===`support_email_address`)?.value||V(n.find(e=>e.key===`members_support_address`)?.value?.toString()||`noreply`,f,p);u({title:`Confirm email address`,prompt:(0,X.jsxs)(X.Fragment,{children:[`We've sent a confirmation email to `,(0,X.jsx)(`strong`,{children:e}),`. Until verified, your support email address will remain `,t,`.`]}),okLabel:`Close`,cancelLabel:``,onOk:e=>e?.remove()})}},onSaveError:l});(0,Y.useEffect)(()=>{!w.tiers.length&&h?.length&&T(e=>({...e,tiers:h}))},[h,w.tiers,T]);let[A,j]=(0,Y.useState)({}),M=(e,t)=>{O(n=>({...n,settings:n.settings.map(n=>n.key===e?{...n,value:t,dirty:!0}:n)}))},N=(e,t)=>{j(n=>({...n,[e]:t}))},P=e=>{O(t=>({...t,tiers:t.tiers.map(t=>t.id===e.id?{...e,dirty:!0}:t)}))},F=e=>{i(e),e===`account`?c(`accountPage`):e===`signup`&&o===`accountPage`&&c(`signupOptions`)},I=(0,X.jsx)(Fe,{errors:A,localSettings:w.settings,localTiers:w.tiers,selectedTab:o,setError:N,updateSetting:M,updateTier:P,onTabChange:e=>{c(e),i(Pe[e])}}),L=(0,X.jsx)(je,{darkMode:t,localSettings:w.settings,localTiers:w.tiers,selectedTab:n}),R=(0,X.jsx)(x,{value:n,variant:`button`,onValueChange:e=>F(e),children:(0,X.jsxs)(b,{children:[(0,X.jsx)(v,{value:`signup`,children:`Signup`}),(0,X.jsx)(v,{value:`account`,children:`Account page`}),(0,X.jsx)(v,{value:`links`,children:`Links`})]})});return(0,X.jsx)(xe,{buttonsDisabled:k.disabled,cancelLabel:`Close`,dirty:E===`unsaved`,okLabel:k.label||`Save`,okVariant:k.variant,preview:L,previewBgColor:n===`links`?`white`:`greygradient`,previewToolbarTabs:R,sidebar:I,testId:`portal-modal`,title:`Portal`,onClose:()=>{e(`portal`)},onOk:async()=>{Object.values(A).filter(Boolean).length||await D({force:!0})}})};export{Ie 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{r}from"./posts-tcoO3iRG.js";import{t as i}from"./analytics-53FOa2wq.js";import{i as a}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{H as o}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as s}from"./box-LUuYRT-1.js";import{t as c}from"./container-CHHif8km.js";import{Zr as l}from"./index-DOF2jDq0.js";import{t as u}from"./use-analytics-data-B3lGOxsC.js";import{t as d}from"./post-share-modal-wxmqbAv_.js";var f=e(t(),1),p=n(),m=({children:e})=>(0,p.jsx)(s,{className:`size-full`,children:(0,p.jsx)(c,{className:`relative flex h-full flex-col`,size:`page`,children:(0,p.jsx)(`div`,{className:`grid w-full grow grid-cols-[minmax(0,1fr)]`,children:(0,p.jsx)(`div`,{className:`flex h-full flex-col px-(--page-gutter)`,children:e})})})}),h=()=>{let[e,t]=(0,f.useState)(!1),[n,i]=(0,f.useState)(null),[a,s]=(0,f.useState)(null),{site:c}=u(),d=l(`improveSendingUI`),{data:p}=r({searchParams:n?{filter:`id:${n.id}`,include:`authors,newsletter,email`}:{},enabled:!!n}),{data:m}=r({searchParams:{filter:`status:[published,sent]`,limit:`1`,fields:`id`},enabled:!!n}),h=p?.posts?.[0],g=e=>`${o(e)} subscriber${e===1?``:`s`}`,_=e=>new Date(e).toLocaleTimeString(`en-US`,{hour:`2-digit`,minute:`2-digit`,hour12:!1}),v=e=>e?.map(e=>e.name).join(`, `)||``,y=(0,f.useMemo)(()=>{if(!h)return null;let n=!!a,r=d&&h.email?.status!==`submitted`,l=()=>{let e=[];if(h.email_only?e.push(r?`Your email is being sent to`:`Your email was sent to`):h.email?.email_count?e.push(r?`Your post was published on your site and is being sent to`:`Your post was published on your site and sent to`):e.push(`Your post was published on your site`),h.email?.email_count){let t=g(h.email.email_count);e.push(` `),e.push(f.createElement(`strong`,{key:`subscriber-count`},t)),h.newsletter?.name&&(e.push(` of `),e.push(f.createElement(`strong`,{key:`newsletter-name`},h.newsletter.name))),e.push(`,`)}if(h.published_at){let t=new Date(h.published_at);t.toDateString()===new Date().toDateString()?(e.push(` `),e.push(f.createElement(`strong`,{key:`today`},`today`))):(e.push(` on `),e.push(f.createElement(`strong`,{key:`date`},t.toLocaleDateString(`en-US`,{month:`long`,day:`numeric`})))),e.push(` at `),e.push(f.createElement(`strong`,{key:`time`},_(h.published_at)))}return e.push(`.`),f.createElement(`span`,{},...e)},u=()=>{t(!1),i(null),s(null)};return{open:e,onOpenChange:e=>{e||u()},emailOnly:h.email_only,postURL:h.url||``,primaryTitle:`Boom! It's out there.`,secondaryTitle:n&&a?`That's ${o(a)} post${a===1?``:`s`} published.`:`Spread the word!`,description:l(),featureImageURL:h.feature_image||``,postTitle:h.title||``,postExcerpt:h.excerpt||``,faviconURL:c?.icon||``,siteTitle:c?.title||``,author:v(h.authors),onClose:u}},[h,e,a,c?.title,d]);return(0,f.useEffect)(()=>{let e=()=>{try{let e=localStorage.getItem(`ghost-last-published-post`);if(e){let n=JSON.parse(e);i(n),t(!0),localStorage.removeItem(`ghost-last-published-post`)}}catch{}};e();let n=setTimeout(e,100);return()=>clearTimeout(n)},[]),(0,f.useEffect)(()=>{m?.meta?.pagination?.total&&s(m.meta.pagination.total)},[m]),{isModalOpen:e,post:h,postCount:a,showPostCount:!!a,closeModal:()=>{t(!1),i(null),s(null)},modalProps:y}},g=()=>{let{isModalOpen:e,modalProps:t}=h(),n=e&&!!t;return(0,f.useEffect)(()=>{n&&i(`Share Modal Opened`,{giftLinkShown:!1,source:`publish-flow`})},[n]),(0,p.jsxs)(m,{children:[(0,p.jsx)(a,{}),e&&t&&(0,p.jsx)(d,{...t})]})};export{g as default};
@@ -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=()=>{let e=(0,n.useContext)(r);if(!e)throw Error(`usePostAnalytics must be used within a PostAnalyticsProvider`);return e};export{i as n,r as t};
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{o as n,p as r}from"./hooks-DYfTEQLk.js";import{t as i}from"./jsx-runtime-BlNNh7jY.js";import{n as a,o,r as s,t as c}from"./pagemenu-CKQD9hoP.js";import{c as l}from"./posts-tcoO3iRG.js";import{t as u}from"./analytics-53FOa2wq.js";import{n as d,r as f}from"./post-helpers-C88JBa4D.js";import{a as ee}from"./router-provider-DDZvgS3V.js";import{B as p,H as m,L as h,R as g,c as te}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as _}from"./box-LUuYRT-1.js";import{t as v}from"./grid-BEUIDQX7.js";import{t as y}from"./text-BLI0C8Mc.js";import{t as ne}from"./heading-ih-fOVqF.js";import{r as b}from"./users-C60_hpn6.js";import{E as re,Er as x,Nn as ie,Pn as ae,X as oe,a as S,t as C,xt as se}from"./button-D414TI3B.js";import{a as ce,i as le,n as w,o as ue,r as de,t as fe}from"./breadcrumb-DDDpzLyo.js";import{An as pe,Di as me,Fn as he,Mi as ge,Mn as _e,Nn as ve,On as ye,Pn as be,Qn as xe,cr as Se,er as Ce,i as we,jn as Te,kn as Ee,nr as T,or as De,tr as E,xn as D}from"./index-DOF2jDq0.js";import{t as O}from"./page-header-CdCpekG9.js";import{t as Oe}from"./use-analytics-data-B3lGOxsC.js";import{t as ke}from"./get-site-timezone-HgL0jI_F.js";import{t as Ae}from"./post-share-modal-wxmqbAv_.js";import{n as k}from"./email-sending-status-context-C76KYL1V.js";import{n as A}from"./post-analytics-context-bt2YTBAC.js";import{i as je,t as Me}from"./gift-link-modal-BX-Q1TOk.js";import{n as j,t as M}from"./use-sending-eta-DR9ueMH8.js";var N=e(t(),1),P=i(),F=(0,N.forwardRef)(({children:e,className:t,...n},r)=>(0,P.jsx)(`section`,{ref:r,className:h(`flex size-full grow flex-col gap-6 py-8`,t),...n,children:e}));F.displayName=`PostAnalyticsContent`;var I=`email-sending-fill-clip`,L=()=>(0,P.jsxs)(`svg`,{"aria-hidden":`true`,fill:`none`,height:`12`,viewBox:`0 0 12 12`,width:`12`,children:[(0,P.jsx)(`clipPath`,{id:I,children:(0,P.jsx)(`circle`,{cx:`6`,cy:`6`,r:`5.1`})}),(0,P.jsx)(`circle`,{cx:`6`,cy:`6`,fill:`currentColor`,r:`4.8`}),(0,P.jsx)(`g`,{clipPath:`url(#${I})`,children:(0,P.jsx)(`rect`,{className:`animate-email-sending-fill-rise fill-muted-foreground motion-reduce:translate-y-1/2 motion-reduce:animate-none`,height:`12`,width:`12`,x:`0`,y:`0`})})]}),R=({sending:e})=>e.status===`preparing`?(0,P.jsx)(`span`,{className:`relative flex size-4 shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted-foreground text-white ring-1 ring-muted-foreground ring-offset-1 ring-offset-background`,children:(0,P.jsx)(L,{})}):e.status===`failed`?(0,P.jsx)(`span`,{className:`relative flex size-4 shrink-0 items-center justify-center overflow-hidden rounded-full bg-state-danger text-white ring-1 ring-state-danger ring-offset-1 ring-offset-background`,children:(0,P.jsx)(S,{"aria-hidden":`true`,size:12,strokeWidth:2.5})}):(0,P.jsx)(`span`,{className:`relative flex size-4 shrink-0 items-center justify-center overflow-hidden rounded-full bg-state-info text-white ring-1 ring-state-info ring-offset-1 ring-offset-background`,children:(0,P.jsx)(`span`,{className:`animate-email-sending-arrow-rise motion-reduce:animate-none`,children:(0,P.jsx)(x,{"aria-hidden":`true`,size:12,strokeWidth:2.5})})}),z=e=>{let{completed:t,total:n}=e.progress;return n===0?null:e.status===`preparing`?`${m(Math.min(100,Math.floor(t/n*100)))}% complete · ${m(n)} total`:j(e,null).detail},B=(e,t)=>{let{completed:n,total:r}=e.progress,i=e.failed_during===`submitting`?n:0,a=i>0?`${m(i)} of ${m(r)} emails were sent.`:r>0?`None of the ${m(r)} emails were sent.`:`No emails were sent.`;return t?`${a} ${t}`:a},Ne=()=>{let{post:e}=A(),{status:t,isNewsletterDataHidden:n,hasUnknownDeliveryOutcome:r,isRetrying:i,retrySending:a}=k(),o=t?.sending,s=M(t);if(!o||o.status===`submitted`&&!n)return null;let c=o.status===`failed`,l=c?!r&&o.failed_during===`submitting`&&o.progress.completed>0:!1,u,d;o.status===`failed`?(u=l?`Some emails failed to send`:`Emails failed to send`,d=r?e?.email?.error||`Something went wrong while sending this email.`:B(o,e?.email?.error)):(u=j(o,null).title,d=z(o));let f=l?`Send remaining emails`:`Retry sending email`;return(0,P.jsx)(D,{className:`bg-surface-elevated shadow-none hover:shadow-none`,"data-testid":`email-sending-status-banner`,role:c?`alert`:`status`,size:`lg`,children:(0,P.jsxs)(v,{align:`center`,className:h(`grid-cols-[auto_minmax(0,1fr)] gap-y-0 lg:grid-cols-[auto_auto_minmax(0,1fr)_auto]`,c&&!r&&`grid-cols-[auto_minmax(0,1fr)_auto]`),gap:`md`,children:[(0,P.jsx)(_,{className:`row-span-2 lg:row-span-1`,children:(0,P.jsx)(R,{sending:o})}),(0,P.jsx)(y,{as:`strong`,className:`text-base`,weight:`semibold`,children:u}),(0,P.jsxs)(y,{className:`col-start-2 min-w-0 tabular-nums lg:contents`,size:`sm`,tone:`secondary`,children:[(0,P.jsx)(y,{as:`span`,size:`sm`,tone:`secondary`,children:d}),!c&&s&&(0,P.jsxs)(y,{as:`span`,className:`whitespace-nowrap`,size:`sm`,tone:`secondary`,children:[d&&(0,P.jsx)(`span`,{className:`lg:hidden`,children:` · `}),s]})]}),c&&!r&&(0,P.jsx)(C,{className:`col-start-3 row-span-2 row-start-1 lg:col-start-4 lg:row-span-1`,disabled:i,size:`sm`,variant:`outline`,onClick:()=>void a(),children:i?`Sending…`:f})]})})},V=e=>{let{data:t}=n();return!e||!t?!1:e.status===`published`&&!!e.visibility&&e.visibility!==`public`&&b(t)},H=({currentTab:e,children:t})=>{let{isAdmin7:n}=te(),i=ee(),h=ge(),_=me(),{mutateAsync:v}=l(),y=r(),[b,x]=(0,N.useState)(!1),[S,C]=(0,N.useState)(!1),[D,j]=(0,N.useState)(!1),{settings:M,site:F,statsConfig:I}=Oe(),{post:L,isPostLoading:R,postId:z}=A(),{hasNewsletterAnalytics:B,status:H}=k(),U=V(L),W=`/editor/post/${z}`,Pe=we(W),G=ke(M),K=L?.status===`published`,q=H?.sending.status===`failed`,Fe=K&&(!B||q),Ie=K&&B&&!q,J=(0,N.useRef)(!1);(0,N.useEffect)(()=>{if(!S){J.current=!1;return}J.current||(J.current=!0,u(`Share Modal Opened`,{giftLinkShown:U,source:`post-analytics`}))},[S,U]);let{activeVisitors:Y,isLoading:X}=o({postUuid:L?.uuid,statsConfig:I,enabled:h}),Z=(0,N.useMemo)(()=>{if(!L)return[];let e=[];return f(L)&&!h||(e.push(`Overview`),!L.email_only&&h&&e.push(`Web`)),B&&e.push(`Newsletter`),_&&e.push(`Growth`),e},[L,h,_,B]),Le=()=>{L&&x(!0)},Re=async()=>{if(L)try{await v({id:z}),x(!1),i(`/posts/`,{crossApp:!0})}catch(e){y(e)}},Q=!L?.email_only&&(0,P.jsx)(Ae,{author:L?.authors?.[0]?.name||``,canShareAsGift:U,description:``,faviconURL:F?.icon||``,featureImageURL:L?.feature_image??void 0,giftAccessLabel:je(L?.visibility),open:S,postExcerpt:L?.excerpt||``,postTitle:L?.title,postURL:L?.url,siteTitle:F?.title||``,onClose:()=>C(!1),onOpenChange:C,onShareAsGift:()=>{C(!1),j(!0)},children:(0,P.jsxs)(O.Action,{label:`Share`,primary:!0,onClick:()=>C(!0),children:[(0,P.jsx)(oe,{}),` Share`]})}),$=(0,P.jsx)(P.Fragment,{children:(0,P.jsxs)(xe,{children:[(0,P.jsx)(Se,{asChild:!0,children:(0,P.jsx)(O.Action,{label:`More post actions`,iconOnly:!0,children:(0,P.jsx)(ae,{})})}),(0,P.jsxs)(Ce,{align:`end`,children:[(0,P.jsxs)(E,{children:[(0,P.jsx)(T,{asChild:!0,children:(0,P.jsxs)(`a`,{href:L?.url,rel:`noopener noreferrer`,target:`_blank`,children:[(0,P.jsx)(ie,{}),`View in browser`]})}),(0,P.jsxs)(T,{onClick:()=>{i(W,{crossApp:Pe})},children:[(0,P.jsx)(se,{}),`Edit post`]})]}),(0,P.jsx)(De,{}),(0,P.jsx)(E,{children:(0,P.jsxs)(T,{className:`text-destructive focus:text-destructive`,onClick:Le,children:[(0,P.jsx)(re,{}),`Delete post`]})})]})]})});return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`header`,{className:`z-50 -mx-(--page-gutter) bg-white/70 backdrop-blur-md dark:bg-background`,children:(0,P.jsx)(`div`,{className:`relative flex min-h-[102px] w-full items-start justify-between gap-5 px-(--page-gutter) pt-[28px]! pb-0`,"data-header":`header`,children:(0,P.jsxs)(`div`,{className:`flex w-full flex-col gap-6`,children:[(0,P.jsxs)(`div`,{className:`flex w-full flex-col flex-wrap justify-between md:flex-row md:items-center`,children:[(0,P.jsx)(fe,{children:(0,P.jsxs)(le,{children:[(0,P.jsx)(w,{children:(0,P.jsx)(de,{asChild:!0,children:(0,P.jsx)(`button`,{className:`cursor-pointer rounded-sm focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:outline-hidden`,type:`button`,onClick:()=>i(`/analytics/`),children:`Analytics`})})}),(0,P.jsx)(ue,{}),(0,P.jsx)(w,{children:(0,P.jsx)(ce,{children:`Post analytics`})})]})}),(0,P.jsxs)(`div`,{className:`flex w-full items-center gap-2 md:w-auto`,children:[h&&!L?.email_only&&(0,P.jsx)(`div`,{className:`mr-3 flex grow items-center gap-2 md:grow-0`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,title:`Active readers in the last 5 minutes · Updates every 60 seconds`,children:[(0,P.jsxs)(`span`,{children:[X?``:m(Y),` reading now`]}),(0,P.jsx)(`div`,{className:`size-2 rounded-full ${X?`animate-pulse bg-muted`:Y?`bg-green-500`:`border border-muted-foreground`}`})]})}),!R&&(0,P.jsx)(O.ActionGroup,{children:n?(0,P.jsxs)(P.Fragment,{children:[$,Q&&(0,P.jsx)(O.ActionGroup.Primary,{children:Q})]}):(0,P.jsxs)(P.Fragment,{children:[Q,$]})})]})]}),!R&&(0,P.jsxs)(`div`,{className:`flex items-start gap-6 md:items-center`,children:[L?.feature_image&&(0,P.jsx)(`div`,{className:`aspect-[16/10] w-full max-w-[100px] rounded-md bg-cover bg-center md:max-w-[132px]`,style:{backgroundImage:`url(${L.feature_image})`}}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(ne,{className:`-ml-px max-w-[920px] indent-0 !text-xl md:leading-[1.2em]`,"data-header":`header-title`,children:L?.title}),L?.published_at&&(0,P.jsxs)(`div`,{className:`mt-0.5 flex items-center justify-start leading-[1.65em] text-muted-foreground`,children:[d(L)&&`Sent on ${g(L.published_at,G)} at ${p(L.published_at,G)}`,Fe&&`Published on your site on ${g(L.published_at,G)} at ${p(L.published_at,G)}`,Ie&&`Published and sent on ${g(L.published_at,G)} at ${p(L.published_at,G)}`]})]})]}),(0,P.jsx)(Ne,{})]})})}),(0,P.jsxs)(s,{className:`sticky top-0 z-50 -mb-8 transform-gpu flex-col items-start gap-y-0 border-none bg-white/70 py-8 backdrop-blur-md lg:flex-row lg:items-center dark:bg-background`,children:[!R&&(0,P.jsxs)(c,{className:`min-h-[34px]`,defaultValue:e,responsive:!0,children:[Z.includes(`Overview`)&&(0,P.jsx)(a,{value:`Overview`,onClick:()=>{i(`/posts/analytics/${z}`)},children:`Overview`}),Z.includes(`Web`)&&(0,P.jsx)(a,{value:`Web`,onClick:()=>{i(`/posts/analytics/${z}/web`)},children:`Web traffic`}),Z.includes(`Newsletter`)&&(0,P.jsx)(a,{value:`Newsletter`,onClick:()=>{i(`/posts/analytics/${z}/newsletter`)},children:`Newsletter`}),Z.includes(`Growth`)&&(0,P.jsx)(a,{value:`Growth`,onClick:()=>{i(`/posts/analytics/${z}/growth`)},children:`Growth`})]}),t]}),U&&z&&(0,P.jsx)(Me,{open:D,postId:z,source:`share-modal`,onOpenChange:j},z),(0,P.jsx)(ye,{open:b,onOpenChange:x,children:(0,P.jsxs)(Te,{children:[(0,P.jsxs)(be,{children:[(0,P.jsx)(he,{children:`Are you sure you want to delete this post?`}),(0,P.jsxs)(_e,{children:[`You're about to delete "`,(0,P.jsx)(`strong`,{children:L?.title}),`". This is permanent! We warned you, k?`]})]}),(0,P.jsxs)(ve,{children:[(0,P.jsx)(pe,{children:`Cancel`}),(0,P.jsx)(Ee,{className:`bg-red-600 text-white hover:bg-red-700`,onClick:()=>void Re(),children:`Delete`})]})]})})]})};export{V as n,F as r,H 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{r}from"./posts-tcoO3iRG.js";import{h as i}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{S as a,T as o}from"./index-DOF2jDq0.js";import{t as s}from"./post-analytics-context-bt2YTBAC.js";var c=e(t(),1),l=n(),u=({children:e})=>{let{postId:t}=i();if(!t)throw Error(`Post ID is required for PostAnalyticsProvider`);let[n,u]=(0,c.useState)(o.last30Days.value),{data:{posts:[d]}={posts:[]},isLoading:f,refetch:p}=r({searchParams:{filter:`id:${t}`,include:a}}),m=(0,c.useCallback)(async()=>{await p()},[p]);return(0,l.jsx)(s.Provider,{value:{postId:t,post:d,isPostLoading:f,refetchPost:m,range:n,setRange:u},children:e})};export{u as default};
@@ -0,0 +1 @@
1
+ import{t as e}from"./react-BXwhMTuc.js";import{t}from"./jsx-runtime-BlNNh7jY.js";import{c as n}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{r}from"./heading-ih-fOVqF.js";import{t as i}from"./button-D414TI3B.js";import{t as a}from"./share-modal-DBqZobuR.js";e();var o=t(),s=({author:e=``,canShareAsGift:t=!1,children:s,description:c=``,emailOnly:l=!1,faviconURL:u=``,featureImageURL:d=``,giftAccessLabel:f=``,onClose:p=()=>{},onShareAsGift:m=()=>{},postExcerpt:h=``,postTitle:g=``,postURL:_=``,primaryTitle:v=`Your post is published.`,secondaryTitle:y=`Spread the word!`,siteTitle:b=``,...x})=>{let{isAdmin7:S}=n(),C=encodeURIComponent(g),w=encodeURIComponent(_),T=encodeURIComponent(`${g} ${_}`),E=l?[]:[{href:`https://twitter.com/intent/tweet?text=${C}%0A${w}`,label:`Share on X`,service:`x`},{href:`https://threads.net/intent/post?text=${T}`,label:`Share on Threads`,service:`threads`},{href:`https://www.facebook.com/sharer/sharer.php?u=${w}`,label:`Share on Facebook`,service:`facebook`},{href:`https://www.linkedin.com/shareArticle?mini=true&title=${C}&url=${w}`,label:`Share on LinkedIn`,service:`linkedin`},{href:`https://bsky.app/intent/compose?text=${T}`,label:`Share on Bluesky`,service:`bluesky`}];return(0,o.jsxs)(a.Root,{...x,children:[s&&(0,o.jsx)(a.Trigger,{children:s}),(0,o.jsxs)(a.Content,{children:[(0,o.jsx)(`div`,{className:`sticky top-0 ml-auto size-0`,children:(0,o.jsx)(a.CloseButton,{className:`absolute -top-5 -right-5`,onClick:p})}),(0,o.jsxs)(a.Header,{className:`relative -mt-5`,children:[(0,o.jsxs)(a.Title,{className:`text-3xl leading-[1.15em] font-bold`,children:[v&&(0,o.jsx)(`span`,{className:`text-state-success`,children:v}),v&&y&&(0,o.jsx)(`br`,{}),y&&(0,o.jsx)(`span`,{children:y})]}),c&&(0,o.jsx)(a.Description,{className:`mb-0 pt-1 pb-0 text-lg text-foreground`,children:c})]}),(0,o.jsxs)(a.Preview,{className:S?void 0:`rounded-md`,href:_,children:[d&&(0,o.jsx)(`div`,{className:`aspect-video bg-cover bg-center`,style:{backgroundImage:`url(${d})`}}),(0,o.jsxs)(`div`,{className:`p-6 pt-5`,children:[(0,o.jsx)(r,{children:g}),h&&(0,o.jsx)(`p`,{className:`line-clamp-2`,children:h}),(0,o.jsxs)(`div`,{className:`mt-2 flex items-start gap-2`,children:[(0,o.jsx)(`div`,{className:`mt-0.5 size-4 bg-cover bg-center`,style:{backgroundImage:`url(${u})`}}),(0,o.jsxs)(`div`,{className:`flex gap-1`,children:[(0,o.jsx)(`strong`,{children:b}),(0,o.jsx)(`span`,{children:`•`}),(0,o.jsx)(`span`,{children:e})]})]})]})]}),(0,o.jsx)(a.Footer,{children:l?(0,o.jsx)(i,{className:`cursor-pointer`,type:`button`,onClick:p,children:`Close`}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.SocialLinks,{links:E}),(0,o.jsx)(a.CopyButton,{className:`ml-0! grow cursor-pointer`,copyURL:_,icon:`link`})]})}),t&&!l&&(0,o.jsxs)(`p`,{className:`text-center text-sm text-muted-foreground`,children:[`Want to share full access to this `,f,` post?`,` `,(0,o.jsx)(i,{className:`h-auto p-0 align-baseline text-sm`,type:`button`,variant:`link`,onClick:m,children:`Share as a gift`}),`.`]})]})]})};export{s as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./gift-link-modal-BX-Q1TOk.js","./react-BXwhMTuc.js","./hooks-DYfTEQLk.js","./framework-provider-DB-svAju.js","./jsx-runtime-BlNNh7jY.js","./dist-DziNzWI2.js","./react-dom-CMOtJ5MH.js","./use-tinybird-query-BaBNCaj0.js","./use-tinybird-token-CnZ19NDf.js","./index-DOF2jDq0.js","./config-BPljH6wF.js","./preload-helper-DYl5dUZ5.js","./chunk-KS7C4IRE-DhOcHQOU.js","./router-provider-DDZvgS3V.js","./feature-flag-overrides-context-CrcQKm9Z.js","./shade-scope-Cccj-c7I-D0XwkdKQ.js","./text-BLI0C8Mc.js","./heading-ih-fOVqF.js","./lazy-component-COKiVB72.js","./users-C60_hpn6.js","./update-queries-C4CnvJaW.js","./schemas-BoYdB6YU.js","./button-D414TI3B.js","./overlay-escape-C7XYQuvP.js","./dist-B40T-RCQ.js","./Combination-DQ6f9A5P.js","./input-surface-CL23Mlh8.js","./dist-CrlaEoaK.js","./skeleton-CPcTiTSX.js","./accordion-h62UzFhj.js","./badge-CI1Z0xyG.js","./use-navigate-with-base-path-BzgNwMAx.js","./onboarding-DV_XbHts.js","./onboarding-B4hfBi9a.js","./themes-DtcEFQWm.js","./index-JrrNchW1.css","./posts-tcoO3iRG.js","./analytics-53FOa2wq.js","./share-modal-DBqZobuR.js","./pages-DZ_YGB1D.js","./gift-links-D8gl_yJS.js"])))=>i.map(i=>d[i]);
2
+ import{s as e,t}from"./react-BXwhMTuc.js";import{_ as n,s as r}from"./framework-provider-DB-svAju.js";import{o as i,p as a}from"./hooks-DYfTEQLk.js";import{t as o}from"./jsx-runtime-BlNNh7jY.js";import{n as s}from"./dist-DziNzWI2.js";import{a as c,i as l,o as u,r as d,s as f,t as p}from"./posts-tcoO3iRG.js";import{t as m}from"./preload-helper-DYl5dUZ5.js";import{_ as h,u as g}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as _}from"./router-provider-DDZvgS3V.js";import{H as v,L as y,c as b}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as ee}from"./box-LUuYRT-1.js";import{t as te}from"./container-CHHif8km.js";import{t as x}from"./text-BLI0C8Mc.js";import{c as S,f as C,l as w,o as T,u as ne}from"./users-C60_hpn6.js";import{$t as E,At as D,D as O,Dr as re,H as k,I as A,On as j,Or as ie,St as ae,V as oe,Yt as M,b as N,c as P,dr as F,et as se,ft as ce,g as I,gr as L,nr as le,rn as ue,sr as de,t as R,tt as fe,u as pe,vn as z,xt as me,yn as B,zn as V}from"./button-D414TI3B.js";import{i as H,n as he,o as ge,s as _e,t as ve}from"./select-D_4xWFYv.js";import{t as ye}from"./checkbox-CFFqf0Nh.js";import{a as be,i as xe,n as Se,r as Ce,t as we}from"./context-menu-BpY46Dlb.js";import{t as Te}from"./empty-indicator-CSQts7GV.js";import{$r as U,An as Ee,Bn as De,Dn as Oe,En as ke,Fn as Ae,Gn as je,Hn as Me,Jn as Ne,Kn as Pe,Ln as Fe,Mn as Ie,Nn as Le,On as Re,Pn as ze,Qn as Be,Qr as W,Si as G,V as Ve,Vn as He,Wn as Ue,Zr as We,_n as Ge,ar as Ke,c as K,cr as qe,er as Je,g as Ye,gi as Xe,gn as Ze,h as Qe,ir as $e,jn as et,kn as tt,l as nt,n as rt,qn as it,t as at,vi as q,vn as ot,wi as st,yn as ct}from"./index-DOF2jDq0.js";import{t as J}from"./page-header-CdCpekG9.js";import{a as lt,s as ut}from"./filters-DTtZKQyq.js";import{c as dt,d as ft}from"./stats-Cvp8Ep5m.js";import{a as pt}from"./tiers-6mPzCXlM.js";import{t as mt}from"./post-share-modal-wxmqbAv_.js";import{t as ht}from"./feature-image-placeholder-DFXA4vfJ.js";import{t as gt}from"./list-page-CH_wnDC3.js";import{n as _t,t as vt}from"./create-ghost-browse-value-source-eIXo5Qws.js";import{a as yt,i as bt,o as xt,r as St,s as Ct}from"./pages-DZ_YGB1D.js";import{t as wt}from"./virtual-list-tAuPUICw.js";import{c as Tt,s as Et,t as Dt}from"./tag-picker-BKUCZuRc.js";import{n as Ot}from"./tags-NwZ7BPK6.js";import{t as kt}from"./use-email-sending-status-DNMtL5B9.js";import{n as At,t as jt}from"./use-sending-eta-DR9ueMH8.js";import{t as Mt}from"./nql-DnDc7UuU.js";var Nt={deleted:{single:`{Type} deleted`,multiple:`{count} {type}s deleted`},unpublished:{single:`{Type} reverted to a draft`,multiple:`{count} {type}s reverted to drafts`},unscheduled:{single:`{Type} unscheduled`,multiple:`{count} {type}s unscheduled`},accessUpdated:{single:`{Type} access updated`,multiple:`{Type} access updated for {count} {type}s`},tagsAdded:{single:`Tags added`,multiple:`Tags added to {count} {type}s`},tagAdded:{single:`Tag added`,multiple:`Tag added to {count} {type}s`},duplicated:{single:`{Type} duplicated`,multiple:`{count} {type}s duplicated`},copiedPostUrl:{single:`Post link copied`},copiedPreviewUrl:{single:`Preview link copied`}};function Y(e,{count:t,resource:n,isSingle:r=t===1}){let i=Nt[e],a=(r?i.single:i.multiple)??i.single,o=n===`pages`?`page`:`post`;return a.replace(/\{Type\}/g,o.charAt(0).toUpperCase()+o.slice(1)).replace(/\{type\}/g,o).replace(/\{count\}/g,String(t))}function Pt(e,t){return e.uuid?`${t.replace(/\/$/,``)}/p/${e.uuid}/`:``}var X=e(t(),1),Ft=new Set([`copy-link`,`copy-preview`,`duplicate`,`gift-link`,`delete`,`unpublish`,`unschedule`,`feature`,`unfeature`,`add-tag`,`change-access`]);function It({resource:e,posts:t,onShareAsGift:n,count:i,onBulkAction:a,selectionFilter:o,bucketFilters:c,isSingle:l,inverted:u}){let{data:d}=Ve(),p=d?.site.url??``,m=f(),h=Ct(),g=r();return(0,X.useCallback)(async r=>{let d=t[0];if(!d)return;let f=t=>{s.success(Y(t,{count:i,resource:e,isSingle:l}))};try{switch(r){case`copy-link`:await navigator.clipboard.writeText(d.url),f(`copiedPostUrl`);break;case`copy-preview`:await navigator.clipboard.writeText(Pt(d,p)),f(`copiedPreviewUrl`);break;case`duplicate`:{e===`pages`?await h.mutateAsync(d.id):await m.mutateAsync(d.id);let t=e===`pages`?`PagesResponseType`:`PostsResponseType`;g.invalidateQueries({queryKey:[t]}),f(`duplicated`);break}case`gift-link`:n?.(d.id);break;default:a?.(r,{filter:o,posts:t,count:i,bucketFilters:c,isSingle:l,inverted:u});break}}catch(t){s.error(t instanceof Error&&t.message?t.message:`Could not complete that action on this ${e===`pages`?`page`:`post`}.`)}},[t,e,p,m,h,g,n,i,a,o,c,l,u])}var Z=o(),Lt={"copy-link":ue,"copy-preview":ue,"gift-link":B,unpublish:N,unschedule:F,feature:oe,unfeature:k,"add-tag":A,"change-access":E,duplicate:V,delete:O};function Rt({children:e,getItems:t,showGiftLink:n,enabled:r,onOpenChange:i,onAction:a}){if(!r)return(0,Z.jsx)(Z.Fragment,{children:e});let o=n?t():t().filter(e=>e.key!==`gift-link`);return(0,Z.jsxs)(we,{onOpenChange:i,children:[(0,Z.jsx)(be,{asChild:!0,children:e}),(0,Z.jsx)(Se,{children:o.map((e,t)=>{let n=Lt[e.key];return(0,Z.jsxs)(X.Fragment,{children:[t>0&&(e.separated||o[t-1].key===`gift-link`)&&(0,Z.jsx)(xe,{}),(0,Z.jsxs)(Ce,{"data-testid":`post-menu-${e.key}`,disabled:!Ft.has(e.key),variant:e.destructive?`destructive`:void 0,onSelect:()=>{a(e.key)},children:[(0,Z.jsx)(n,{}),e.label]})]},e.key)})})]})}function zt(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Bt(e,t){return t===1?e:`${e}s`}function Vt(e,t){let n=RegExp(`${t}s:\\[(.*?)\\]`).exec(e);if(n)return n[1].split(`,`);let r=[...e.matchAll(RegExp(`${t}:(.*?)(?:,|$)`,`g`))].map(([,e])=>e).filter(Boolean);return r.length?r:null}function Ht(e=``){let t=e.split(`,`);if(t.includes(`status:free`)&&t.includes(`status:-free`))return`All subscribers`;let n=[];t.includes(`status:free`)?n.push(`Free subscribers`):t.includes(`status:-free`)&&n.push(`Paid subscribers`);let r=Vt(e,`label`);r&&n.push(`${Bt(`Label`,r.length)}: ${r.map(zt).join(`, `)}`);let i=Vt(e,`product`);return i&&n.push(`${Bt(`Product`,i.length)}: ${i.map(zt).join(`, `)}`),n.length?n.join(` & `):e}function Q(e){return e.status??`draft`}function Ut(e,t=`posts`){let n=Q(e);return t===`posts`&&(n===`published`||n===`sent`)&&e.email?.status===`failed`}function Wt(e){return e.email?.status===`failed`}function Gt(e,t=`posts`){let n=Q(e);return t===`posts`&&(n===`published`||n===`sent`)&&!!e.email&&!Wt(e)}function Kt(e){return(e.authors??[]).map(e=>e.name||e.email).filter(Boolean).join(`, `)}function qt(e){let t=Q(e);return t===`draft`||t===`scheduled`?`updated_at`:`published_at`}function Jt(e){return(qt(e)===`updated_at`?e.updated_at:e.published_at)??void 0}function Yt(e){let t=Kt(e);return{byline:t?`By ${t}`:null,primaryTagName:e.primary_tag?.name??null}}function Xt(e,{timezone:t,now:n}={}){let{byline:r,primaryTagName:i}=Yt(e),a=Jt(e);return[r,i?`in ${i}`:null,a?Tt(a,{timezone:t,absolute:!0,short:!0,now:n}):null].filter(e=>!!e)}function Zt(e,{timezone:t,now:n}={}){let r=Jt(e);if(r)return`${qt(e)===`updated_at`?`Updated`:`Published`} ${Tt(r,{timezone:t,absolute:!0,now:n})}`}function Qt(e,t=`posts`){switch(Q(e)){case`scheduled`:return`Scheduled`;case`published`:return Ut(e,t)?`Published but failed to send newsletter`:Gt(e,t)?`Published and sent`:`Published`;case`sent`:return Ut(e,t)?`Failed to send newsletter`:`Sent`;default:return`Draft`}}function $t(e,{timezone:t,now:n,resource:r=`posts`}={}){if(Q(e)===`scheduled`){let r=Tt(e.published_at,{timezone:t,scheduled:!0,now:n}),i=e.email_segment?`to ${Ht(e.email_segment)}`:null;return[e.email_only?`to be sent`:`to be published${e.newsletter?` and sent`:``}`,r,e.email_only||e.newsletter?i:null].filter(Boolean).join(` `)}if(Gt(e,r)){let t=e.email?.email_count??0;return`to ${v(t)} ${t===1?`member`:`members`}`}return null}var en={visitors:{label:`Visitors`,tab:`web`},opens:{label:`Opens`,tab:`newsletter`},clicks:{label:`Clicks`,tab:`newsletter`},sent:{label:`Sent`,tab:`newsletter`},members:{label:`Members`,tab:`growth`}};function tn(e,t){return t===`posts`&&(e.status===`published`||e.status===`sent`)&&!!e.email&&e.email?.status!==`failed`}function nn(e,t,n){return tn(e,n)&&!t.isContributor&&t.membersSignupAccess!==`none`&&t.emailTrackOpens&&e.email?.track_opens===!0}function rn(e,t,n){return tn(e,n)&&!t.isContributor&&t.membersSignupAccess!==`none`&&t.emailTrackClicks&&e.email?.track_clicks===!0}function an(e,t,n){return(n===`pages`||!e.email_only)&&e.status===`published`&&t.membersTrackSources&&!t.isMembersInviteOnly&&!t.isContributor}function on(e,t,n){let r=[],i=e.status===`published`;if(t.webAnalyticsEnabled&&i&&r.push(`visitors`),e.email){let i=nn(e,t,n),a=rn(e,t,n);i&&r.push(`opens`),a&&r.push(`clicks`),!i&&!a&&r.push(`sent`)}return t.membersTrackSources&&i&&r.push(`members`),r.map(e=>({key:e,...en[e]}))}function sn(e){let t=e.email?.email_count,n=e.count?.clicks;return!t||!n?0:Math.round(n/t*100)}function cn(e){let t=e.email?.email_count,n=e.email?.opened_count;return!t||!n?0:Math.round(n/t*100)}function ln(e,t,n,r){return n!==`posts`||!r?!1:nn(e,t,n)||rn(e,t,n)||an(e,t,n)}var un={visitors:z,opens:M,clicks:D,sent:se,members:I,free:pe,paid:P};function dn({title:e,rows:t,children:n}){return(0,Z.jsxs)(Ze,{closeDelay:0,openDelay:0,children:[(0,Z.jsx)(ot,{asChild:!0,children:n}),(0,Z.jsx)(Ge,{className:`pointer-events-none w-48 p-3`,"data-testid":`post-metric-panel`,side:`top`,children:(0,Z.jsxs)(W,{gap:`xs`,children:[(0,Z.jsx)(x,{size:`sm`,weight:`semibold`,children:e}),(0,Z.jsx)(ct,{className:`my-1 bg-border-default`}),t.map(e=>{let t=un[e.icon];return(0,Z.jsxs)(U,{gap:`md`,justify:`between`,children:[(0,Z.jsxs)(U,{align:`center`,gap:`xs`,children:[(0,Z.jsx)(t,{className:`size-3.5 shrink-0 text-muted-foreground`,strokeWidth:1.5}),(0,Z.jsx)(x,{size:`sm`,tone:`secondary`,children:e.label})]}),(0,Z.jsx)(x,{className:`font-mono`,size:`sm`,children:v(e.value)})]},e.label)})]})})]})}function fn(e,t,n){return e===`visitors`?{title:`Web traffic`,rows:[{label:`Unique visitors`,value:n.visitors??0,icon:`visitors`}]}:e===`opens`||e===`clicks`||e===`sent`?{title:`Newsletter performance`,rows:[{label:`Sent`,value:t.email?.email_count??0,icon:`sent`},...n.showOpens?[{label:`Opens`,value:t.email?.opened_count??0,icon:`opens`}]:[],...n.showClicks?[{label:`Clicks`,value:t.count?.clicks??0,icon:`clicks`}]:[]]}:{title:`New members`,rows:[{label:`Free`,value:n.freeMembers??0,icon:`free`},...n.paidMembersEnabled?[{label:`Paid`,value:n.paidMembers??0,icon:`paid`}]:[]]}}var pn=[`opens`,`clicks`,`sent`];function mn(e,t,n,r){switch(e.key){case`visitors`:return v(n?.[t.uuid??``]??0);case`opens`:return`${cn(t)}%`;case`clicks`:return`${sn(t)}%`;case`sent`:return v(t.email?.email_count??0);case`members`:{let e=r?.[t.id];return v((e?.free??0)+(e?.paid??0))}default:return``}}function hn({post:e,settings:t,resource:n,visitorCounts:r,memberCounts:i,paidMembersEnabled:a,className:o,hideEmailMetrics:s}){let c=on(e,t,n).filter(e=>!(s&&pn.includes(e.key))),l=new Set(c.map(e=>e.key)),u=i?.[e.id];if(c.length===0)return null;let d=[];return c.forEach(e=>{let t=d[d.length-1];pn.includes(e.key)&&t!==void 0&&pn.includes(t[0].key)?t.push(e):d.push([e])}),(0,Z.jsx)(U,{align:`center`,className:y(`shrink-0 max-[1200px]:hidden`,o),gap:`md`,children:d.map(t=>{let o=fn(t[0].key,e,{visitors:r?.[e.uuid??``],freeMembers:u?.free,paidMembers:u?.paid,paidMembersEnabled:a,showOpens:l.has(`opens`),showClicks:l.has(`clicks`)});return(0,Z.jsx)(dn,{rows:o.rows,title:o.title,children:(0,Z.jsx)(U,{align:`center`,gap:`md`,children:t.map(t=>{let a=un[t.key],o=mn(t,e,r,i),s=(0,Z.jsxs)(U,{align:`center`,gap:`xs`,justify:`end`,children:[(0,Z.jsx)(a,{className:`size-4 shrink-0 text-muted-foreground`,strokeWidth:1.5}),(0,Z.jsx)(x,{className:`font-mono`,size:`sm`,children:o})]});return n===`pages`?(0,Z.jsx)(`span`,{"aria-label":`${t.label}: ${o}`,className:`min-w-16`,title:t.label,"data-ignore-select":!0,children:s},t.key):(0,Z.jsx)(`a`,{"aria-label":`${t.label}: ${o}`,className:`min-w-16 no-underline`,href:`#/posts/analytics/${e.id}/${t.tab}`,title:t.label,"data-ignore-select":!0,children:s},t.key)})})},t[0].key)})})}var gn={status:`settled`};function _n(e,t,n){return!!(n&&t===`posts`&&(e.status===`published`||e.status===`sent`)&&e.email?.id&&(e.email.status===`pending`||e.email.status===`submitting`))}function vn({post:e,children:t}){let n=r(),i=e.email?.id,a=e.email?.status,o=kt({emailId:i,emailStatus:a,enabled:!0}),s=o.status,c=s?.sending,l=c?.status,u=jt(s),[d,f]=(0,X.useState)(null);if((0,X.useEffect)(()=>{if(!(!i||!l)){if(l!==`submitted`&&f(e=>e===i?null:e),l===`failed`){n.invalidateQueries({queryKey:[p]});return}if(l===`submitted`){let e=!1;return n.invalidateQueries({queryKey:[p]}).then(()=>{e||f(i)}),()=>{e=!0}}}},[i,n,l]),o.isUnsupported)return(0,Z.jsx)(Z.Fragment,{children:t(gn)});if(c?.status===`failed`)return(0,Z.jsx)(Z.Fragment,{children:t({status:`failed`})});let m=!!(i&&c?.status===`submitted`&&d!==i);return c&&(c.status!==`submitted`||m)?(0,Z.jsx)(Z.Fragment,{children:t({status:`sending`,copy:At(c,u)})}):!c&&(a===`pending`||a===`submitting`)?(0,Z.jsx)(Z.Fragment,{children:t({status:`sending`,copy:{title:a===`pending`?`Preparing emails`:`Sending emails`,detail:null}})}):(0,Z.jsx)(Z.Fragment,{children:t(gn)})}function yn(e,t){if(t)return`text-state-danger`;switch(e.status){case`draft`:return`text-pink`;case`scheduled`:return`text-green`;default:return`text-muted-foreground`}}var bn=`aspect-[16/10] w-[80px] shrink-0 rounded-sm lg:w-[100px]`;function xn({post:e}){return e.feature_image?(0,Z.jsx)(`div`,{className:y(bn,`bg-muted bg-cover bg-center`),role:`presentation`,style:{backgroundImage:`url(${JSON.stringify(e.feature_image)})`}}):(0,Z.jsx)(ht,{className:y(bn,`p-0`)})}var Sn=(0,X.forwardRef)(function({post:e,resource:t,timezone:n,isContributor:r,hasAdminAccess:i,paidMembersEnabled:a,isSelected:o,onSelectMouseDown:s,onSelectClick:c,getMenuItems:l,showGiftLink:u,menuEnabled:d,menuOnOpenChange:f,menuOnAction:p,metricsSettings:m,visitorCounts:h,memberCounts:g,improveSendingUI:_,emailSendingState:v,...ee},te){let{isAdmin7:S}=b(),[C,w]=(0,X.useState)(!1),T=Xt(e,{timezone:n}),ne=Zt(e,{timezone:n}),E=Qt(e,t),D=$t(e,{timezone:n,resource:t}),O=Ut(e,t),k=v.status===`failed`?{...e,email:{...e.email,status:`failed`}}:e,A=v.status===`failed`||O,j=v.status===`failed`?Qt(k,t):E,ie=e.status===`published`,ae=t===`pages`?`page`:`post`,M=!!(r&&ie),N=M?e.url:`#/editor/${ae}/${e.id}`,P=ln(e,m,t,!!i)?{href:`#/posts/analytics/${e.id}`,label:`Go to Analytics`,external:!1,Icon:de}:M?{href:e.url,label:`View post`,external:!0,Icon:re}:{href:N,label:`Go to Editor`,external:!1,Icon:me},F=(0,Z.jsx)(`li`,{ref:te,...ee,className:y(`group border-b border-border-default`,o?`bg-table-row-selected select-none`:`hover:bg-table-row-hover`),"data-selected":o?`true`:void 0,"data-testid":`posts-list-item`,onClickCapture:c,onMouseDownCapture:t=>{s?.(t,e.id)},onMouseEnter:()=>{w(!0)},onMouseLeave:()=>{w(!1)},children:(0,Z.jsxs)(U,{align:`center`,className:`pr-4`,gap:`md`,children:[(0,Z.jsxs)(`a`,{className:`flex min-w-0 flex-1 items-start gap-4 py-4 pl-4 no-underline`,"data-testid":`post-list-item-link`,href:N,rel:M?`noopener noreferrer`:void 0,target:M?`_blank`:void 0,children:[(0,Z.jsx)(xn,{post:e}),(0,Z.jsxs)(W,{className:`min-w-0 flex-1`,gap:`xs`,children:[(0,Z.jsxs)(U,{align:`center`,gap:`xs`,children:[e.featured&&(0,Z.jsx)(oe,{"aria-label":`Featured`,className:`size-4 shrink-0 fill-state-warning text-state-warning`,"data-testid":`post-featured`}),(0,Z.jsx)(x,{as:`h3`,className:`truncate`,weight:`semibold`,children:e.title})]}),T.length>0&&(0,Z.jsx)(x,{className:`truncate`,size:`sm`,title:ne,tone:`secondary`,children:T.join(` - `)}),v.status===`sending`?(0,Z.jsxs)(x,{className:`text-muted-foreground tabular-nums`,size:`sm`,children:[v.copy.title,v.copy.detail&&(0,Z.jsx)(`span`,{children:` · ${v.copy.detail}`})]}):(0,Z.jsxs)(x,{className:yn(k,A),size:`sm`,children:[j,v.status!==`failed`&&C&&D&&(0,Z.jsxs)(`span`,{children:[` `,D]})]})]})]}),(0,Z.jsx)(hn,{className:`py-4`,hideEmailMetrics:v.status===`sending`,memberCounts:g,paidMembersEnabled:a,post:e,resource:t,settings:m,visitorCounts:h}),(0,Z.jsx)(R,{className:y(`my-4 shrink-0`,S?`ms-8`:`ms-2`,S?C&&`bg-background`:`bg-control-surface px-4`),size:S?`icon`:void 0,variant:S?C?`outline`:`ghost`:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{"aria-label":P.label,"data-testid":`post-list-item-action`,href:P.href,rel:P.external?`noopener noreferrer`:void 0,target:P.external?`_blank`:void 0,title:P.label,"data-ignore-select":!0,children:(0,Z.jsx)(P.Icon,{})})})]})});return(0,Z.jsx)(Rt,{enabled:d??!1,getItems:l,showGiftLink:u??!1,onAction:p??(()=>{}),onOpenChange:f??(()=>{}),children:F})}),Cn=(0,X.forwardRef)(function(e,t){return _n(e.post,e.resource,e.improveSendingUI??!1)?(0,Z.jsx)(vn,{post:e.post,children:n=>(0,Z.jsx)(Sn,{ref:t,...e,emailSendingState:n})}):(0,Z.jsx)(Sn,{ref:t,...e,emailSendingState:gn})}),wn=(0,X.memo)(Cn),Tn={posts:{title:`Posts`,plural:`posts`,newLabel:`New post`,newHref:`#/editor/post`,emptyTitle:`Start creating content.`,emptyAction:`Write a new post`},pages:{title:`Pages`,plural:`pages`,newLabel:`New page`,newHref:`#/editor/page`,emptyTitle:`Tell the world about yourself.`,emptyAction:`Create a new page`}};function En(e){return Tn[e]}function Dn({resource:e,hasFilters:t,onClearFilters:n}){let r=En(e);return t?(0,Z.jsx)(Te,{actions:(0,Z.jsxs)(R,{onClick:n,children:[`Show all `,r.plural]}),"data-testid":`posts-empty-filtered`,title:`No ${r.plural} match the current filter`,children:(0,Z.jsx)(fe,{})}):(0,Z.jsx)(Te,{actions:(0,Z.jsx)(R,{asChild:!0,children:(0,Z.jsx)(`a`,{href:r.newHref,children:r.emptyAction})}),"data-testid":`posts-empty-cold`,title:r.emptyTitle,children:(0,Z.jsx)(ae,{})})}var On=[{value:`draft`,label:`Draft posts`},{value:`published`,label:`Published posts`},{value:`sent`,label:`Email only posts`},{value:`scheduled`,label:`Scheduled posts`},{value:`featured`,label:`Featured posts`}],kn=[{value:`draft`,label:`Draft pages`},{value:`published`,label:`Published pages`},{value:`scheduled`,label:`Scheduled pages`},{value:`featured`,label:`Featured pages`}],An=[{value:`public`,label:`Public`},{value:`members`,label:`Members-only`},{value:`[paid,tiers]`,label:`Paid members-only`}],jn=[{value:`published_at asc`,label:`Oldest first`},{value:`updated_at desc`,label:`Recently updated`}],Mn=`Newest first`;function Nn(e){return e===`pages`?kn:On}function Pn(e){return e?jn.find(t=>t.value===e)?.label??e:Mn}var Fn=`100`;function In(e){return{value:e.slug,label:e.name||e.email,metadata:{id:e.id}}}var Ln=vt({id:`posts.authors`,buildBrowseSearchParams:e=>({limit:Fn,order:`name asc`,...e?{filter:`name:~${Xe(e)}`}:{}}),buildHydrateFilter:e=>_t(`slug`,e),buildHydrateSearchParams:e=>({filter:e,order:`name asc`}),getMissingSelectedOption:e=>({value:e,label:`Unknown author`}),selectItems:e=>e?.users,useQuery:({enabled:e,searchParams:t})=>C({enabled:e,placeholderData:n,searchParams:t}),toOption:In,debounceMs:250});function Rn(){return Ln()}var zn=`100`;function Bn(e){return{value:e.slug,label:e.name,detail:e.slug,metadata:{id:e.id}}}var Vn=vt({id:`posts.tags`,buildBrowseSearchParams:e=>({limit:zn,order:`name asc`,...e?{filter:`tags.name:~${Xe(e)}`}:{}}),buildHydrateFilter:e=>_t(`slug`,e),buildHydrateSearchParams:e=>({filter:e,order:`name asc`}),getMissingSelectedOption:e=>({value:e,label:`Unknown tag`}),selectItems:e=>e?.tags,useQuery:({enabled:e,searchParams:t})=>Ot({filter:{},enabled:e,placeholderData:n,searchParams:t}),toOption:Bn,debounceMs:250});function Hn(){return Vn()}var Un=[{value:`is`,label:`is`}];function Wn(e,t,n){return!t||e.some(e=>e.value===t)?e:[...e,{value:t,label:`Unknown ${n}`}]}function Gn({resource:e,authorValueSource:t,tagValueSource:n,isContributor:r=!1,isAuthorOrContributor:i=!1,params:a={}}){let o={key:`type`,label:`${e===`pages`?`Page`:`Post`} type`,type:`select`,icon:(0,Z.jsx)(j,{className:`size-4`}),operators:Un,options:Wn(Nn(e),a.type,`type`)};if(r)return[o];let s=[o,{key:`visibility`,label:`Access`,type:`select`,icon:(0,Z.jsx)(E,{className:`size-4`}),operators:Un,options:Wn(An,a.visibility,`access`)}];return i||s.push({key:`author`,label:`Author`,type:`select`,icon:(0,Z.jsx)(pe,{className:`size-4`}),operators:Un,searchable:!0,placeholder:`Search authors`,valueSource:t}),s.push({key:`tag`,label:`Tag`,type:`select`,icon:(0,Z.jsx)(A,{className:`size-4`}),operators:Un,searchable:!0,placeholder:`Search tags`,valueSource:n,className:`w-[320px]`}),s}function Kn(e,t,n){return Gn({resource:e,authorValueSource:Rn(),tagValueSource:Hn(),isContributor:!!(t&&w(t)),isAuthorOrContributor:!!(t&&S(t)),params:n})}function qn({resource:e,filters:t,params:n,currentUser:r,iconOnly:i=!1,viewActions:a,onFiltersChange:o}){let{isAdmin7:s}=b(),c=Kn(e,r,n),l=t.length>0,u=l?(0,Z.jsxs)(ut.Actions,{children:[(0,Z.jsx)(ut.Action,{className:y(`hidden items-center lg:inline-flex`,!s&&`text-muted-foreground hover:text-foreground`),type:`button`,variant:s?`ghost`:`outline`,onClick:()=>o([]),children:`Clear`}),a]}):void 0;return(0,Z.jsx)(U,{align:`center`,className:y(!i&&`w-full`),"data-testid":`posts-filters`,gap:`sm`,children:(0,Z.jsx)(lt,{addButton:(0,Z.jsx)(lt.Trigger,{collapseLabel:i}),allowMultiple:!1,className:y(`[&>button]:order-last`,i?`w-auto`:`w-full`,l&&`sm:!pr-40`),clearButton:u,fields:c,filters:t,keyboardShortcut:`f`,popoverAlign:`start`,showClearButton:l,showSearchInput:!1,onChange:o})})}var $=[`midgrey`,`blue`,`green`,`red`,`teal`,`purple`,`yellow`,`orange`,`pink`];function Jn(){return $[Math.floor(Math.random()*$.length)]}function Yn(e){let t={};return Ye.forEach(n=>{let r=e[n];r!=null&&r!==``&&(t[n]=r)}),t}function Xn(e,t,n){return{name:e.trim(),route:`posts`,color:n,filter:Yn(t)}}function Zn({isAdmin:e,resource:t,params:n,isDefaultView:r}){return!e||t!==`posts`||r?!1:Ye.some(e=>!!n[e])}function Qn(e,t){let n=Yn(t);return e.find(e=>Ye.every(t=>(e.filter[t]??null)===(n[t]??null)))}var $n=`Saved views could not be read, so nothing was changed`,er=`A view with this name already exists`,tr=`Saved view could not be found`;function nr(e){let t;try{t=JSON.parse(e)}catch{throw Error($n)}if(!Array.isArray(t))throw Error($n);return t}function rr(e,t){return e.route===`posts`&&typeof e.name==`string`&&K(e.name)===K(t.name)}function ir(e,t,n){let r=K(t);return e.some((e,t)=>t!==n&&e.route===`posts`&&typeof e.name==`string`&&K(e.name)===r)}function ar(e,t,n,r,i){let a=nr(e),o=Xn(t,n,r),s=i?a.findIndex(e=>rr(e,i)):-1;if(i&&s===-1)throw Error(tr);if(ir(a,o.name,s))throw Error(er);let c=s===-1?[...a,o]:a.map((e,t)=>t===s?o:e);return JSON.stringify(c)}function or(e,t){let n=nr(e),r=n.findIndex(e=>rr(e,t));if(r===-1)throw Error(tr);return JSON.stringify(n.filter((e,t)=>t!==r))}var sr=`Settings are still loading, so nothing was changed`;function cr(e){if(e)return q(e.settings,`shared_views`)??`[]`}function lr(){let{data:e}=G(),t=cr(e);if(t===void 0)return[];let n=nt(t);return n.ok?n.views.filter(e=>e.route===`posts`):[]}function ur(){let{data:e}=G(),{mutateAsync:t}=st(),n=a();return(0,X.useCallback)(async r=>{let i=cr(e);if(i===void 0){let e=Error(sr);throw n(e,{withToast:!1}),e}let a=r(i);try{await t([{key:`shared_views`,value:a}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function dr(){let e=ur();return(0,X.useCallback)(async(t,n,r,i)=>{await e(e=>ar(e,t,n,r,i))},[e])}function fr(){let e=ur();return(0,X.useCallback)(async t=>{await e(e=>or(e,t))},[e])}function pr(e){return $.includes(e)}function mr({value:e,onChange:t}){return(0,Z.jsx)(U,{gap:`sm`,role:`radiogroup`,children:$.map(n=>(0,Z.jsx)(`button`,{"aria-checked":n===e,"aria-label":n,className:y(`size-5 rounded-full border-2`,n===e?`border-foreground`:`border-transparent`),role:`radio`,style:{backgroundColor:rt(n)},type:`button`,onClick:()=>{t(n)}},n))})}function hr({resource:e,params:t,activeView:n,onClose:r}){let[i,a]=(0,X.useState)(n?.name??``),[o,s]=(0,X.useState)(pr(n?.color)?n.color:Jn()),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(!1),f=dr(),p=fr(),m=_(),h=!!n,g=async()=>{if(u)return;let e=i.trim();if(!e){l(`Please enter a name`);return}d(!0);try{await f(e,t,o,n),r()}catch(e){l(e instanceof Error?e.message:`Failed to save view`)}finally{d(!1)}},v=async()=>{if(!(!n||u)){d(!0);try{await p(n),r(),m(`/${e}`)}catch(e){l(e instanceof Error?e.message:`Failed to delete view`)}finally{d(!1)}}};return(0,Z.jsxs)(W,{gap:`md`,children:[(0,Z.jsx)(Oe,{"aria-label":`View name`,placeholder:`Name this view`,value:i,autoFocus:!0,onChange:e=>{a(e.target.value),l(``)},onKeyDown:e=>{e.key===`Enter`&&g()}}),(0,Z.jsx)(mr,{value:o,onChange:s}),c&&(0,Z.jsx)(x,{className:`text-state-danger`,role:`alert`,size:`sm`,children:c}),(0,Z.jsxs)(U,{gap:`sm`,justify:h?`between`:`end`,children:[h&&(0,Z.jsx)(R,{disabled:u,variant:`destructive`,onClick:()=>void v(),children:`Delete`}),(0,Z.jsx)(R,{disabled:u,onClick:()=>void g(),children:h?`Save`:`Save view`})]})]})}function gr({resource:e,params:t,activeView:n,inHeader:r=!1}){let[i,a]=(0,X.useState)(!1),{isAdmin7:o}=b();return(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsxs)(Fe,{open:i,onOpenChange:a,children:[(0,Z.jsx)(He,{asChild:!0,children:r?(0,Z.jsxs)(J.Action,{"data-testid":`manage-post-view`,label:n?`Edit view`:`Save view`,children:[o&&(0,Z.jsx)(L,{className:`size-4`}),n?`Edit view`:`Save view`]}):(0,Z.jsx)(ut.Action,{"data-testid":`manage-post-view`,variant:`outline`,children:n?`Edit view`:`Save view`})}),(0,Z.jsx)(De,{align:`end`,className:`w-72`,children:(0,Z.jsx)(hr,{activeView:n,params:t,resource:e,onClose:()=>{a(!1)}},n?.name??`new`)})]})})}function _r({order:e,onOrderChange:t}){let{isAdmin7:n}=b();return(0,Z.jsxs)(Be,{children:[(0,Z.jsx)(qe,{asChild:!0,children:(0,Z.jsxs)(J.Action,{"aria-label":`Sort: ${Pn(e)}`,"data-testid":`posts-sort`,label:`Sort`,children:[(0,Z.jsx)(ie,{className:`size-4`}),Pn(e),!n&&(0,Z.jsx)(le,{className:`size-4`})]})}),(0,Z.jsx)(Je,{align:`end`,children:(0,Z.jsxs)($e,{value:e??``,onValueChange:e=>{t(e||null)},children:[(0,Z.jsx)(Ke,{value:``,children:Mn}),jn.map(e=>(0,Z.jsx)(Ke,{value:e.value,children:e.label},e.value))]})})]})}var vr=[`scheduled`,`draft`,`publishedAndSent`],yr=[`draft`,`scheduled`,`published`,`sent`],br={draft:[`draft`],published:[`published`],scheduled:[`scheduled`],sent:[`sent`]};function xr(e){return[...br[e??``]??yr]}function Sr(e){return e.length===1?e[0]:`[${e.join(`,`)}]`}function Cr(e){return e.filter(e=>{let t=e[1];return t!=null&&t.trim()!==``}).map(([e,t])=>`${e}:${t}`).join(`+`)}function wr(e,t,{ownAuthorSlug:n}){return[[`tag`,e.tag],[`visibility`,e.visibility],[`status`,Sr(t)],[`featured`,e.type===`featured`?`true`:null],[`authors`,n||e.author]]}function Tr(e,t={}){return Cr(wr(e,xr(e.type),t))}function Er(e){let t=xr(e.type);return vr.filter(e=>e===`publishedAndSent`?t.includes(`published`)||t.includes(`sent`):t.includes(e))}function Dr(e,t){return e===`publishedAndSent`?xr(t.type).filter(e=>e===`published`||e===`sent`):[e]}function Or(e,t,n={}){return Cr(wr(t,Dr(e,t),n))}function kr(e,t){return t||(e===`draft`?`updated_at desc`:`published_at desc`)}function Ar(e,t,n={}){return{filter:Or(e,t,n),order:kr(e,t.order),limit:`30`}}function jr(e){return`'${[...e].join(`','`)}'`}function Mr(e,t){let{selectedIds:n,inverted:r}=e;return r?t?n.size===0?t:`(${t})+id:-[${jr(n)}]`:n.size===0?``:`id:-[${jr(n)}]`:n.size===0?`id:nothing`:`id:[${jr(n)}]`}function Nr(e,t,n){let r=e.indexOf(t),i=e.indexOf(n);return r===-1||i===-1||i===r?[]:i>r?e.slice(r+1,i+1):e.slice(i,r+1)}function Pr(){return{selectedIds:new Set,inverted:!1,lastSelectedId:null,lastShiftGroup:new Set,transient:!1}}var Fr=Pr();function Ir(e,t){return e.inverted?!e.selectedIds.has(t):e.selectedIds.has(t)}function Lr(e){return!e.inverted&&e.selectedIds.size===1}function Rr(e,t){return e.inverted?Math.max(t-e.selectedIds.size,1):e.selectedIds.size}function zr(e,t){let n=new Set(e.selectedIds),r=n.delete(t);r||n.add(t);let i=e.lastSelectedId;return!r||e.inverted?i=t:e.lastSelectedId===t&&(i=null),{selectedIds:n,inverted:e.inverted,lastSelectedId:i,lastShiftGroup:new Set,transient:!1}}function Br(e,t,n){if(e.lastSelectedId===null)return zr(e,t);let r=new Set(e.selectedIds);e.lastShiftGroup.forEach(t=>{e.inverted?r.add(t):r.delete(t)});let i=Nr(n,e.lastSelectedId,t);return i.forEach(t=>{e.inverted?r.delete(t):r.add(t)}),{selectedIds:r,inverted:e.inverted,lastSelectedId:e.lastSelectedId,lastShiftGroup:new Set(i),transient:!1}}function Vr(e,t){switch(t.type){case`toggle`:return zr(e,t.id);case`shift`:return Br(e,t.id,t.orderedIds);case`selectAll`:return{selectedIds:new Set,inverted:!e.inverted,lastSelectedId:null,lastShiftGroup:new Set,transient:!1};case`contextMenu`:return Ir(e,t.id)?e:{selectedIds:new Set([t.id]),inverted:!1,lastSelectedId:t.id,lastShiftGroup:new Set,transient:!0};case`keepOnly`:{if(e.inverted)return e;let n=new Set([...e.selectedIds].filter(e=>t.ids.has(e)));return{...e,selectedIds:n,lastShiftGroup:new Set}}case`closeContextMenu`:return e.transient?Pr():e;case`clear`:return Pr();default:return e}}function Hr(){let e=window.getSelection();e&&(e.empty?e.empty():e.removeAllRanges&&e.removeAllRanges())}function Ur({orderedIds:e,allFilter:t,enabled:n}){let[r,i]=(0,X.useReducer)(Vr,Fr),[a,o]=(0,X.useState)(!1),s=(0,X.useRef)({orderedIds:e,enabled:n});s.current={orderedIds:e,enabled:n};let c=(0,X.useRef)(t);(0,X.useEffect)(()=>{c.current!==t&&(c.current=t,i({type:`clear`}))},[t]),(0,X.useEffect)(()=>{function e(e){if(!s.current.enabled)return;let t=e.target;if(!(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t?.isContentEditable===!0)){if((e.metaKey||e.ctrlKey)&&!e.shiftKey&&e.key.toLowerCase()===`a`){i({type:`selectAll`}),e.preventDefault();return}e.key===`Escape`&&i({type:`clear`})}}function t(e){o(e.metaKey||e.ctrlKey||e.shiftKey)}function n(){o(!1)}function r(e){s.current.enabled&&(e.target?.closest(`[role="menu"], [role="dialog"], [role="alertdialog"], [role="listbox"]`)||!e.metaKey&&!e.ctrlKey&&i({type:`clear`}))}return window.addEventListener(`keydown`,e),window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,t),window.addEventListener(`click`,r),window.addEventListener(`click`,t),window.addEventListener(`blur`,n),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,t),window.removeEventListener(`click`,r),window.removeEventListener(`click`,t),window.removeEventListener(`blur`,n)}},[]);let l=(0,X.useCallback)((e,t)=>{if(s.current.enabled&&!e.target.closest(`[data-ignore-select]`)){if(e.ctrlKey||e.metaKey)i({type:`toggle`,id:t});else if(e.shiftKey)i({type:`shift`,id:t,orderedIds:s.current.orderedIds});else return;e.preventDefault(),e.stopPropagation(),Hr()}},[]),u=(0,X.useCallback)(e=>{s.current.enabled&&(e.target.closest(`[data-ignore-select]`)||!e.ctrlKey&&!e.metaKey&&!e.shiftKey||(e.preventDefault(),e.stopPropagation(),Hr()))},[]),d=(0,X.useCallback)((e,t)=>{s.current.enabled&&i(e?{type:`contextMenu`,id:t}:{type:`closeContextMenu`})},[]),f=(0,X.useRef)(new Map),p=(0,X.useCallback)(e=>{let t=f.current.get(e);if(t)return t;let n=t=>{d(t,e)};return f.current.set(e,n),n},[d]),m=(0,X.useCallback)(e=>{i({type:`keepOnly`,ids:e})},[]);return{state:r,filter:(0,X.useMemo)(()=>Mr(r,t),[r,t]),modifierHeld:n&&a,isSelected:(0,X.useCallback)(e=>n&&Ir(r,e),[n,r]),clear:(0,X.useCallback)(()=>i({type:`clear`}),[]),keepOnly:m,onRowMouseDown:l,onRowClick:u,getContextMenuOpenHandler:p,enabled:n}}function Wr({user:e,post:t}){if(!e||!t)return!1;let n=T(e)||ne(e),r=t.status===`published`&&!!t.visibility&&t.visibility!==`public`;return n&&r}function Gr({wasPublished:e,type:t,emailOnly:n,postCount:r}){if(!e)return{primary:`All set!`,secondary:``};let i=typeof r==`number`,a=i?`Boom! It’s out there.`:`Your post is published.`;if(t===`page`)return{primary:a,secondary:`Your page is published.`};if(n)return{primary:a,secondary:`Your email has been sent.`};if(i){let e=r===1?`post`:`posts`;return{primary:a,secondary:`That’s ${v(r)} ${e} published.`}}return{primary:a,secondary:`Spread the word!`}}function Kr({post:e,type:t,wasPublished:n,postCount:r,siteTitle:i,onClose:a}){let o=Gr({wasPublished:n,type:t,emailOnly:e.email_only===!0,postCount:r});return(0,Z.jsx)(mt,{author:e.authors?.[0]?.name??``,emailOnly:e.email_only===!0,featureImageURL:e.feature_image??``,postExcerpt:e.excerpt??e.custom_excerpt??``,postTitle:e.title,postURL:e.url,primaryTitle:o.primary,secondaryTitle:o.secondary,siteTitle:i,open:!0,onClose:a,onOpenChange:e=>{e||a()}})}var qr={published:`ghost-last-published-post`,scheduled:`ghost-last-scheduled-post`};function Jr(){let e=localStorage.getItem(qr.published),t=localStorage.getItem(qr.scheduled);localStorage.removeItem(qr.published),localStorage.removeItem(qr.scheduled);let n=e??t;if(!n)return null;try{let t=JSON.parse(n);return typeof t?.id!=`string`||!t.id?null:{id:t.id,type:typeof t.type==`string`?t.type:`post`,wasPublished:e!==null}}catch{return null}}function Yr(){let[e,t]=(0,X.useState)(null),n=(0,X.useRef)(!1);(0,X.useEffect)(()=>{n.current||(n.current=!0,t(Jr()))},[]);let r=e?.type===`page`,i={filter:`id:${e?.id??``}`,limit:`1`,include:`authors,newsletter,email`},{data:a}=d({searchParams:i,enabled:!!e&&!r}),{data:o}=St({searchParams:i,enabled:!!e&&r}),{data:s}=d({searchParams:{filter:`status:published`,limit:`1`},enabled:e?.wasPublished===!0});return{celebration:e,post:r?o?.pages?.[0]:a?.posts?.[0],postCount:e?.wasPublished?s?.meta?.pagination.total:void 0,dismiss:()=>{t(null)}}}function Xr({isRunning:e,onConfirm:t,onCancel:n}){let[r,i]=(0,X.useState)([]),[a,o]=(0,X.useState)(``);return(0,Z.jsx)(Me,{open:!0,onOpenChange:e=>{e||n()},children:(0,Z.jsxs)(Ue,{"data-testid":`add-tag-modal`,onEscapeKeyDown:e=>{(r.length>0||a.length>0)&&e.preventDefault()},children:[(0,Z.jsxs)(it,{children:[(0,Z.jsx)(Ne,{children:`Add tags`}),(0,Z.jsx)(je,{children:`Added to everything selected, on top of any tags already applied.`})]}),(0,Z.jsx)(Dt,{inputLabel:`Search tags`,selected:r,onAdd:e=>{i(t=>[...t,e])},onRemove:e=>{i(t=>t.filter(t=>Et(t)!==e))},onSearchChange:o}),(0,Z.jsxs)(Pe,{children:[(0,Z.jsx)(R,{disabled:e,variant:`outline`,onClick:n,children:`Cancel`}),(0,Z.jsx)(R,{disabled:e||r.length===0,onClick:()=>{t(r)},children:e?`Adding`:`Add`})]})]})})}var Zr={delete:{confirm:`Delete`,running:`Deleting`},unpublish:{confirm:`Unpublish`,running:`Unpublishing`},unschedule:{confirm:`Unschedule`,running:`Unscheduling`}};function Qr(e,{count:t,resource:n,title:r,isSingle:i=t===1}){let a=n===`pages`?`page`:`post`,o=i?`this ${a}`:`these ${a}s`,s=i?r?`"${r}"`:`this ${a}`:`${t} ${a}s`,c=e===`delete`?`You’re about to delete ${s}. This is permanent! We warned you, k?`:`You’re about to revert ${s} to a private draft.`;return{title:`Are you sure you want to ${e} ${o}?`,body:c,confirmLabel:Zr[e].confirm,runningLabel:Zr[e].running}}function $r({count:e,resource:t,isSingle:n}){let r=t===`pages`?`page`:`post`;return n?`Change ${r} access`:`Change ${r} access for ${e} ${r}s`}var ei=[{value:`public`,label:`Public`},{value:`members`,label:`Members only`},{value:`paid`,label:`Paid-members only`},{value:`tiers`,label:`Specific tier(s)`}];function ti({resource:e,count:t,isSingle:n,currentVisibility:r,currentTiers:i,isRunning:a,onConfirm:o,onCancel:s}){let{data:c}=G(),l=q(c?.settings,`default_content_visibility`)??`public`,[u,d]=(0,X.useState)(n&&r?r:l),[f,p]=(0,X.useState)(n&&i?i.map(e=>e.id):[]),{data:m}=pt(),h=(m?.tiers??[]).filter(e=>e.type===`paid`&&e.active),g=u!==`tiers`||f.length>0;return(0,Z.jsx)(Me,{open:!0,onOpenChange:e=>{e||s()},children:(0,Z.jsxs)(Ue,{"data-testid":`change-access-modal`,children:[(0,Z.jsxs)(it,{children:[(0,Z.jsx)(Ne,{children:$r({count:t,resource:e,isSingle:n})}),(0,Z.jsxs)(je,{children:[`Controls who can read the selected`,` `,(e===`pages`?`page`:`post`)+(n?``:`s`),`.`]})]}),(0,Z.jsxs)(W,{gap:`md`,children:[(0,Z.jsxs)(ve,{value:u,onValueChange:d,children:[(0,Z.jsx)(ge,{"aria-label":`Access`,children:(0,Z.jsx)(_e,{})}),(0,Z.jsx)(he,{children:ei.map(e=>(0,Z.jsx)(H,{value:e.value,children:e.label},e.value))})]}),u===`tiers`&&(0,Z.jsx)(W,{gap:`sm`,children:h.map(e=>(0,Z.jsxs)(U,{align:`center`,gap:`sm`,children:[(0,Z.jsx)(ye,{checked:f.includes(e.id),id:`tier-${e.id}`,onCheckedChange:t=>{p(n=>t?[...n,e.id]:n.filter(t=>t!==e.id))}}),(0,Z.jsx)(`label`,{className:`text-sm`,htmlFor:`tier-${e.id}`,children:e.name})]},e.id))})]}),(0,Z.jsxs)(Pe,{children:[(0,Z.jsx)(R,{disabled:a,variant:`outline`,onClick:s,children:`Cancel`}),(0,Z.jsx)(R,{disabled:a||!g,onClick:()=>{o({visibility:u,tiers:u===`tiers`?f.map(e=>({id:e})):[]})},children:a?`Saving`:`Save`})]})]})})}function ni({action:e,resource:t,count:n,title:r,isSingle:i,isRunning:a,onConfirm:o,onCancel:s}){let c=Qr(e,{count:n,resource:t,title:r,isSingle:i});return(0,Z.jsx)(Re,{open:!0,onOpenChange:e=>{e||s()},children:(0,Z.jsxs)(et,{"data-testid":`bulk-${e}-modal`,onEscapeKeyDown:e=>{a&&e.preventDefault()},children:[(0,Z.jsxs)(ze,{children:[(0,Z.jsx)(Ae,{children:c.title}),(0,Z.jsx)(Ie,{children:c.body})]}),(0,Z.jsxs)(Le,{children:[(0,Z.jsx)(Ee,{disabled:a,children:`Cancel`}),(0,Z.jsx)(tt,{className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,disabled:a,onClick:e=>{e.preventDefault(),o()},children:a?c.runningLabel:c.confirmLabel})]})]})})}var ri=e(Mt(),1),ii=[{key:`primary_tag`,replacement:`tags.slug`,expansion:`posts_tags.sort_order:0+tags.visibility:public`},{key:`primary_author`,replacement:`authors.slug`,expansion:`posts_authors.sort_order:0+authors.visibility:public`},{key:`authors`,replacement:`authors.slug`},{key:`author`,replacement:`authors.slug`},{key:`tag`,replacement:`tags.slug`},{key:`tags`,replacement:`tags.slug`}];function ai({posts:e,editedIds:t,filter:n}){let r=(0,ri.default)(n,{expansions:ii});try{r.queryJSON({})}catch{return e}return e.filter(e=>t.has(e.id)?r.queryJSON(e):!0)}var oi={unpublish:{action:`unpublish`,message:`unpublished`},unschedule:{action:`unschedule`,message:`unscheduled`},feature:{action:`feature`},unfeature:{action:`unfeature`}};function si(e,t){switch(t){case`unpublish`:return e.status===`published`?{...e,status:`draft`}:e;case`unschedule`:return e.status===`scheduled`?{...e,status:`draft`,published_at:void 0}:e;case`feature`:return{...e,featured:!0};case`unfeature`:return{...e,featured:!1};default:return e}}function ci(e){let t=e[1];if(typeof t!=`string`)return null;try{return new URL(t,window.location.origin).searchParams.get(`filter`)}catch{return null}}function li({resource:e,onDeleted:t,onEdited:n}){let[i,a]=(0,X.useState)(!1),o=r(),l=u(),d=xt(),f=c(),p=yt(),m=e===`pages`,h=m?`PagesResponseType`:`PostsResponseType`,g=(0,X.useCallback)((e,t)=>{let n=new Set(e.posts.map(e=>e.id)),r=t===`delete`,i=new Set;for(let a of e.bucketFilters)o.setQueriesData({queryKey:[h],predicate:e=>ci(e.queryKey)===a},o=>{if(!Array.isArray(o?.pageParams)||!o.pages)return o;let s=0,c=0,l=o.pages.map(e=>{let o=m?`pages`:`posts`,l=e[o]??[],u;return r?u=l.filter(e=>!n.has(e.id)):(u=ai({posts:l.map(e=>n.has(e.id)?si(e,t):e),editedIds:n,filter:a}),u.forEach(e=>{n.has(e.id)&&i.add(e.id)})),s+=l.length-u.length,c+=u.length,{...e,[o]:u}});return!r||s===0&&!e.inverted?{...o,pages:l}:{...o,pages:l.map(t=>typeof t.meta?.pagination?.total==`number`?{...t,meta:{...t.meta,pagination:{...t.meta.pagination,total:e.inverted?c:Math.max(0,t.meta.pagination.total-s)}}}:t)}});return i},[o,h,m]),_=(0,X.useCallback)(async(t,r,i)=>{a(!0);try{let a=t===`add-tag`?{type:`addTag`,meta:i}:{type:`access`,meta:i};if(m?await d.mutateAsync({filter:r.filter,action:a}):await l.mutateAsync({filter:r.filter,action:a}),t===`change-access`)s.success(Y(`accessUpdated`,{count:r.count,resource:e,isSingle:r.isSingle}));else{let t=`tags`in i?i.tags.length:1;s.success(Y(t>1?`tagsAdded`:`tagAdded`,{count:r.count,resource:e,isSingle:r.isSingle}))}n?.(new Set(r.posts.map(e=>e.id))),o.invalidateQueries({queryKey:[h]}),t===`add-tag`&&o.invalidateQueries({queryKey:[`TagsResponseType`]})}catch(e){s.error(e instanceof Error&&e.message?e.message:`That action could not be completed.`)}finally{a(!1)}},[m,e,n,o,h,l,d]);return{run:(0,X.useCallback)(async(r,i)=>{a(!0);try{if(r===`delete`){m?await p.mutateAsync({filter:i.filter}):await f.mutateAsync({filter:i.filter}),g(i,`delete`),o.invalidateQueries({queryKey:[h],refetchType:`none`}),s.success(Y(`deleted`,{count:i.count,resource:e,isSingle:i.isSingle})),t?.();return}let a=oi[r];if(!a)return;let c={filter:i.filter,action:{type:a.action}};m?await d.mutateAsync(c):await l.mutateAsync(c),a.message&&s.success(Y(a.message,{count:i.count,resource:e,isSingle:i.isSingle}));let u=g(i,r);o.invalidateQueries({queryKey:[h],refetchType:`none`}),n?.(u)}catch(e){s.error(e instanceof Error&&e.message?e.message:`That action could not be completed.`)}finally{a(!1)}},[m,e,t,n,g,h,o,l,d,f,p]),runWithPayload:_,isRunning:i}}function ui(e){return e.length===1}function di(e,t){return e.some(e=>e.status===t)}function fi(e){return e.filter(e=>e.featured).length<=e.length/2}function pi(e){let{posts:t,isAdmin:n,membersEnabled:r,canCopyGiftLink:i}=e;if(t.length===0)return[];let a=[],o=(e,t,n={})=>{a.push({key:e,label:t,separated:!1,...n})};return di(t,`published`)?(ui(t)&&o(`copy-link`,`Copy link to post`),i&&o(`gift-link`,`Share as a gift`),o(`unpublish`,`Unpublish`)):(ui(t)&&o(`copy-preview`,`Copy preview link`),di(t,`scheduled`)&&o(`unschedule`,`Unschedule`)),t.some(e=>e.status!==`sent`)&&(fi(t)?o(`feature`,`Feature`):o(`unfeature`,`Unfeature`)),o(`add-tag`,`Add a tag`),r&&o(`change-access`,`Change access`),ui(t)&&o(`duplicate`,`Duplicate`),n&&o(`delete`,`Delete`,{destructive:!0,separated:!0}),a}var mi=[`type`,`visibility`,`author`,`tag`],hi={type:null,visibility:null,author:null,tag:null},gi=`is`;function _i(e){return mi.includes(e)}function vi(e){return mi.flatMap((t,n)=>{let r=e[t];return r==null||r.trim()===``?[]:[{id:`${t}:${n+1}`,field:t,operator:gi,values:[r]}]})}function yi(e){return typeof e==`string`?e===``?null:e:typeof e==`number`||typeof e==`boolean`?String(e):null}function bi(e){let t={...hi};return e.forEach(e=>{_i(e.field)&&(t[e.field]=yi(e.values[0]))}),t}var xi=`order`;function Si(e){let t={};return mi.forEach(n=>{t[n]=e.get(n)}),t.order=e.get(xi),t}function Ci(e,t){let n=new URLSearchParams(e);return Object.entries(t).forEach(([e,t])=>{t==null||t===``?n.delete(e):n.set(e,t)}),n}function wi(){let[e,t]=h(),n=(0,X.useMemo)(()=>Si(e),[e]),r=(0,X.useMemo)(()=>vi(n),[n]),i=n.order??null,a=(0,X.useCallback)((e,{replace:n=!0}={})=>{t(t=>Ci(t,e),{replace:n})},[t]);return{filters:r,params:n,order:i,setFilters:(0,X.useCallback)((e,t)=>{a(bi(e),t)},[a]),setOrder:(0,X.useCallback)((e,t)=>{a({[xi]:e},t)},[a]),clearFilters:(0,X.useCallback)(e=>{a(bi([]),e)},[a]),hasFilters:r.length>0}}function Ti({items:e,webAnalyticsEnabled:t,membersTrackSources:n}){let r=(0,X.useMemo)(()=>e.filter(e=>e.status===`published`),[e]),i=(0,X.useMemo)(()=>r.map(e=>e.uuid).filter(e=>!!e),[r]),a=(0,X.useMemo)(()=>r.map(e=>e.id),[r]),{data:o}=ft(i,{enabled:t}),{data:s}=dt(a,{enabled:n});return{visitorCounts:o,memberCounts:s}}var Ei=()=>{};function Di(e){let t=e.reduce((e,t)=>e+t.total,0),n=e.some(e=>e.isError);if(e.some(e=>e.isLoading))return{items:[],totalItems:t,hasNextPage:!1,isFetchingNextPage:!1,isLoading:!0,isError:n,fetchNextPage:Ei};let r=[],i;for(let t of e){if(r.push(t),t.isError)break;if(t.hasNextPage){i=t;break}}return{items:r.flatMap(e=>e.items),totalItems:t,hasNextPage:!!i,isFetchingNextPage:i?.isFetchingNextPage??!1,isLoading:!1,isError:n,fetchNextPage:i?.fetchNextPage??Ei}}function Oi(e,{resource:t,params:r,context:i},a){let o=Ar(e,r,i),s=l({searchParams:o,enabled:a&&t===`posts`,placeholderData:n}),c=bt({searchParams:o,enabled:a&&t===`pages`,placeholderData:n}),u=t===`pages`?c:s;return{bucket:e,items:(t===`pages`?c.data?.pages:s.data?.posts)??[],total:u.data?.meta?.pagination.total??0,hasNextPage:u.hasNextPage,isLoading:a&&u.isLoading,isFetchingNextPage:u.isFetchingNextPage,isError:u.isError,fetchNextPage:()=>{u.fetchNextPage()}}}function ki(e){let t=Er(e.params),n={scheduled:Oi(`scheduled`,e,t.includes(`scheduled`)),draft:Oi(`draft`,e,t.includes(`draft`)),publishedAndSent:Oi(`publishedAndSent`,e,t.includes(`publishedAndSent`))};return Di(vr.filter(e=>t.includes(e)).map(e=>n[e]))}var Ai=[`delete`,`unpublish`,`unschedule`],ji=(0,X.lazy)(()=>m(()=>import(`./gift-link-modal-BX-Q1TOk.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url));function Mi({resource:e}){let t=En(e),{params:n,filters:r,order:a,setFilters:o,setOrder:s,hasFilters:c,clearFilters:l}=wi(),{data:u}=i(),{data:d}=G(),f=We(`improveSendingUI`),p=g();(0,X.useEffect)(()=>{Qe(e,p.search)},[e,p.search]);let m=q(d?.settings,`timezone`)??void 0,h=!!(u&&w(u)),_=!!(u&&T(u)),v=d?.settings??null,b=(0,X.useMemo)(()=>({webAnalyticsEnabled:q(v,`web_analytics_enabled`)===!0,membersTrackSources:q(v,`members_track_sources`)===!0,emailTrackOpens:q(v,`email_track_opens`)===!0,emailTrackClicks:q(v,`email_track_clicks`)===!0,membersSignupAccess:q(v,`members_signup_access`)??`all`,isMembersInviteOnly:q(v,`members_signup_access`)===`invite`,isContributor:h}),[v,h]),C=q(v,`paid_members_enabled`)===!0,ne=lr(),E=e===`posts`?Qn(ne,n):void 0,D=Zn({isAdmin:_,resource:e,params:n,isDefaultView:at.some(e=>Qn([{...e,route:`posts`}],n))}),O=c,re=D&&!O,k=!!(u&&S(u)),A=u&&k?u.slug:null,{items:j,isLoading:ie,isError:ae,hasNextPage:oe,isFetchingNextPage:M,fetchNextPage:N,totalItems:P}=ki({resource:e,params:n,context:{ownAuthorSlug:A}}),F=Ur({orderedIds:j.map(e=>e.id),allFilter:Tr(n,{ownAuthorSlug:A}),enabled:!!u&&!k}),se=(0,X.useMemo)(()=>Er(n).map(e=>Or(e,n,{ownAuthorSlug:A})),[n,A]),I=F.state,L=(0,X.useMemo)(()=>j.filter(e=>Ir(I,e.id)),[j,I]),le=q(v,`members_signup_access`)!==`none`,ue=(0,X.useMemo)(()=>pi({posts:L,resource:e,isAdmin:_,membersEnabled:le,canCopyGiftLink:!0}),[L,e,_,le]),de=Lr(I)?L[0]:void 0,R=de&&Wr({user:u,post:de})?de.id:null,[fe,pe]=(0,X.useState)(null),z=Yr(),{data:me}=Ve(),[B,V]=(0,X.useState)(null),H=li({resource:e,onDeleted:()=>{V(null),F.clear()},onEdited:e=>{V(null),F.keepOnly(e)}}),he=(0,X.useRef)(ue),ge=(0,X.useRef)(()=>{});he.current=ue;let _e=(0,X.useCallback)(()=>he.current,[]),ve=(0,X.useCallback)(e=>ge.current(e),[]);ge.current=It({resource:e,posts:L,onShareAsGift:pe,onBulkAction:(e,t)=>{if(e===`feature`||e===`unfeature`){H.run(e,t);return}V({key:e,snapshot:t})},selectionFilter:F.filter,bucketFilters:se,isSingle:Lr(I),inverted:I.inverted,count:Rr(I,P)});let{visitorCounts:ye,memberCounts:be}=Ti({items:j,webAnalyticsEnabled:b.webAnalyticsEnabled,membersTrackSources:b.membersTrackSources});return(0,Z.jsx)(ee,{className:`size-full`,children:(0,Z.jsxs)(te,{className:`relative flex h-full flex-col`,size:`page`,children:[(0,Z.jsxs)(gt,{"data-testid":`${e}-page`,children:[(0,Z.jsxs)(gt.Header,{children:[(0,Z.jsxs)(J,{blurredBackground:!1,sticky:!1,children:[(0,Z.jsx)(J.Left,{children:(0,Z.jsx)(J.Title,{children:t.title})}),(0,Z.jsx)(J.Actions,{children:(0,Z.jsxs)(J.ActionGroup,{children:[!O&&(0,Z.jsx)(qn,{currentUser:u,filters:r,iconOnly:!0,params:n,resource:e,onFiltersChange:o}),(0,Z.jsx)(_r,{order:a,onOrderChange:s}),re&&(0,Z.jsx)(gr,{activeView:E,params:n,resource:e,inHeader:!0}),(0,Z.jsx)(J.ActionGroup.Primary,{children:(0,Z.jsx)(J.Action,{fallbackVariant:`default`,label:t.newLabel,asChild:!0,primary:!0,children:(0,Z.jsxs)(`a`,{"aria-label":t.newLabel,className:`font-bold`,href:t.newHref,children:[(0,Z.jsx)(ce,{className:`size-4`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:t.newLabel})]})})})]})})]}),O&&(0,Z.jsx)(ut,{children:(0,Z.jsx)(qn,{currentUser:u,filters:r,params:n,resource:e,viewActions:D&&(0,Z.jsx)(gr,{activeView:E,params:n,resource:e}),onFiltersChange:o})})]}),(0,Z.jsx)(gt.Body,{children:ie?(0,Z.jsx)(W,{align:`center`,className:`flex-1`,justify:`center`,children:(0,Z.jsx)(ke,{size:`lg`})}):ae?(0,Z.jsx)(W,{align:`center`,className:`flex-1`,justify:`center`,children:(0,Z.jsxs)(x,{tone:`secondary`,children:[`Error loading `,t.title.toLowerCase()]})}):j.length===0?(0,Z.jsx)(W,{align:`center`,className:`flex-1`,justify:`center`,children:(0,Z.jsx)(Dn,{hasFilters:c,resource:e,onClearFilters:l})}):(0,Z.jsxs)(W,{gap:`md`,children:[(0,Z.jsx)(`ul`,{className:y(`border-t border-border-default`,F.modifierHeld&&[`cursor-default`,`[&_li_*]:pointer-events-none [&_li_*]:cursor-default`,`[&_li_[data-ignore-select]]:pointer-events-auto`,`[&_li_[data-ignore-select]]:cursor-pointer`]),"data-ctrl":F.modifierHeld?`true`:void 0,"data-selection":F.state.inverted?`inverted`:void 0,"data-testid":`posts-list`,children:j.map(t=>(0,Z.jsx)(wn,{getMenuItems:_e,hasAdminAccess:_,improveSendingUI:f,isContributor:h,isSelected:F.isSelected(t.id),memberCounts:be,menuEnabled:F.enabled,menuOnAction:ve,menuOnOpenChange:F.getContextMenuOpenHandler(t.id),metricsSettings:b,paidMembersEnabled:C,post:t,resource:e,showGiftLink:R===t.id,timezone:m,visitorCounts:ye,onSelectClick:F.onRowClick,onSelectMouseDown:F.onRowMouseDown},t.id))}),oe&&(0,Z.jsx)(wt,{isLoading:M,onClick:N})]})})]}),B&&Ai.includes(B.key)&&(0,Z.jsx)(ni,{action:B.key,count:B.snapshot.count,isRunning:H.isRunning,isSingle:B.snapshot.isSingle,resource:e,title:B.snapshot.posts[0]?.title,onCancel:()=>{V(null)},onConfirm:()=>{H.run(B.key,B.snapshot)}}),B?.key===`add-tag`&&(0,Z.jsx)(Xr,{isRunning:H.isRunning,onCancel:()=>{V(null)},onConfirm:e=>{H.runWithPayload(`add-tag`,B.snapshot,{tags:e})}}),B?.key===`change-access`&&(0,Z.jsx)(ti,{count:B.snapshot.count,currentTiers:B.snapshot.posts[0]?.tiers,currentVisibility:B.snapshot.posts[0]?.visibility,isRunning:H.isRunning,isSingle:B.snapshot.isSingle,resource:e,onCancel:()=>{V(null)},onConfirm:e=>{H.runWithPayload(`change-access`,B.snapshot,e)}}),z.celebration&&z.post&&(0,Z.jsx)(Kr,{post:z.post,postCount:z.postCount,siteTitle:me?.site.title??``,type:z.celebration.type,wasPublished:z.celebration.wasPublished,onClose:z.dismiss}),fe&&(0,Z.jsx)(X.Suspense,{fallback:null,children:(0,Z.jsx)(ji,{postId:fe,resource:e,source:`context-menu`,open:!0,onOpenChange:e=>{e||pe(null)}})})]})})}export{Mi as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BlNNh7jY.js";import{t}from"./posts-list-screen-B978ZO0R.js";var n=e();function r(){return(0,n.jsx)(t,{resource:`posts`})}export{r as default};
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"./hooks-Cy_-oZ4o.js";var i=[`tags`,`authors`,`authors.roles`,`email`,`tiers`,`newsletter`,`count.clicks`,`post_revisions`,`post_revisions.author`].join(`,`),a=`mobiledoc,lexical`,o=`status:free,status:-free`;function s(){return{formats:a}}function c(){return{formats:a,include:i}}function l(e={}){let t={formats:a};return e.source&&(t.source=e.source),e.newsletter&&(t.newsletter=e.newsletter,e.emailSegment&&(t.email_segment=e.emailSegment===o?`all`:e.emailSegment)),e.saveRevision&&(t.save_revision=`true`),e.convertToLexical&&(t.convert_to_lexical=`true`),t.include=i,t}function u(e={}){let t={formats:a};return e.source&&(t.source=e.source),e.saveRevision&&(t.save_revision=`true`),e.convertToLexical&&(t.convert_to_lexical=`true`),t.include=i,t}var d=[`author_id`,`uuid`,`url`,`send_email_when_published`,`email_recipient_filter`,`email`,`newsletter`,`post_revisions`,`author`],f=[`email_subject`,`email_only`,`email_id`];function p(e,t=`post`){let n={...e};for(let e of d)delete n[e];if(t===`page`)for(let e of f)delete n[e];else delete n.show_title_and_feature_image;return n.visibility===null&&(delete n.visibility,delete n.visibility_filter,delete n.tiers),n.visibility===`tiers`&&delete n.visibility_filter,n.visibility===`tiers`&&!n.tiers?.length&&(delete n.visibility,delete n.tiers),n}var m=`PostsResponseType`,h=m,g=n({dataType:m,path:`/posts/`}),_=r({dataType:m,path:`/posts/`,defaultNextPageParams:(e,t)=>{if(e.meta?.pagination.next)return{...t,page:e.meta.pagination.next.toString()}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.posts),r=t[t.length-1].meta;return{posts:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}}),v=e({dataType:m,path:e=>`/posts/${e}/`}),y=(e,t={})=>{let{searchParams:n,...r}=t;return v(e,{...r,searchParams:{...s(),...n}})},b=e({dataType:m,path:e=>`/posts/${e}/`}),x=(e,t={})=>{let{searchParams:n,...r}=t;return b(e,{...r,searchParams:{...n,...c()}})},S=t({method:`POST`,path:()=>`/posts/`,searchParams:({options:e})=>l(e),body:({post:e})=>({posts:[p(e)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:m}}),C=t({method:`PUT`,path:({post:e})=>`/posts/${e.id}/`,searchParams:({options:e})=>l(e),body:({post:e})=>({posts:[p(e)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:m}}),w=t({method:`DELETE`,path:({id:e})=>`/posts/${e}/`,requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e})}),T=t({method:`PUT`,path:()=>`/posts/bulk/`,searchParams:({filter:e})=>({filter:e}),body:({action:e})=>({bulk:{action:e.type,meta:`meta`in e?e.meta:{}}})}),E=t({method:`DELETE`,path:()=>`/posts/`,searchParams:({filter:e})=>({filter:e})}),D=t({method:`POST`,path:e=>`/posts/${e}/copy/`}),O=t({method:`POST`,retry:!1,path:()=>`/posts/upload/`,body:({file:e,mapping:t})=>{let n=new FormData;n.append(`postsfile`,e);for(let[e,r]of Object.entries(t))n.append(`mapping[${e}]`,r);return n}});export{E as a,w as c,O as d,y as f,p as h,_ as i,C as l,c as m,S as n,T as o,u as p,g as r,D as s,h as t,x as u};
1
+ import{i as e,n as t,r as n,t as r}from"./hooks-DYfTEQLk.js";var i=[`tags`,`authors`,`authors.roles`,`email`,`tiers`,`newsletter`,`count.clicks`,`post_revisions`,`post_revisions.author`].join(`,`),a=`mobiledoc,lexical`,o=`status:free,status:-free`;function s(){return{formats:a}}function c(){return{formats:a,include:i}}function l(e={}){let t={formats:a};return e.source&&(t.source=e.source),e.newsletter&&(t.newsletter=e.newsletter,e.emailSegment&&(t.email_segment=e.emailSegment===o?`all`:e.emailSegment)),e.saveRevision&&(t.save_revision=`true`),e.convertToLexical&&(t.convert_to_lexical=`true`),t.include=i,t}function u(e={}){let t={formats:a};return e.source&&(t.source=e.source),e.saveRevision&&(t.save_revision=`true`),e.convertToLexical&&(t.convert_to_lexical=`true`),t.include=i,t}var d=[`author_id`,`uuid`,`url`,`send_email_when_published`,`email_recipient_filter`,`email`,`newsletter`,`post_revisions`,`author`],f=[`email_subject`,`email_only`,`email_id`];function p(e,t=`post`){let n={...e};for(let e of d)delete n[e];if(t===`page`)for(let e of f)delete n[e];else delete n.show_title_and_feature_image;return n.visibility===null&&(delete n.visibility,delete n.visibility_filter,delete n.tiers),n.visibility===`tiers`&&delete n.visibility_filter,n.visibility===`tiers`&&!n.tiers?.length&&(delete n.visibility,delete n.tiers),n}var m=`PostsResponseType`,h=m,g=n({dataType:m,path:`/posts/`}),_=r({dataType:m,path:`/posts/`,defaultNextPageParams:(e,t)=>{if(e.meta?.pagination.next)return{...t,page:e.meta.pagination.next.toString()}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.posts),r=t[t.length-1].meta;return{posts:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}}),v=e({dataType:m,path:e=>`/posts/${e}/`}),y=(e,t={})=>{let{searchParams:n,...r}=t;return v(e,{...r,searchParams:{...s(),...n}})},b=e({dataType:m,path:e=>`/posts/${e}/`}),x=(e,t={})=>{let{searchParams:n,...r}=t;return b(e,{...r,searchParams:{...n,...c()}})},S=t({method:`POST`,path:()=>`/posts/`,searchParams:({options:e})=>l(e),body:({post:e})=>({posts:[p(e)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:m}}),C=t({method:`PUT`,path:({post:e})=>`/posts/${e.id}/`,searchParams:({options:e})=>l(e),body:({post:e})=>({posts:[p(e)]}),requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e}),invalidateQueries:{dataType:m}}),w=t({method:`DELETE`,path:({id:e})=>`/posts/${e}/`,requestOptions:({sessionExpiryRedirect:e})=>({sessionExpiryRedirect:e})}),T=t({method:`PUT`,path:()=>`/posts/bulk/`,searchParams:({filter:e})=>({filter:e}),body:({action:e})=>({bulk:{action:e.type,meta:`meta`in e?e.meta:{}}})}),E=t({method:`DELETE`,path:()=>`/posts/`,searchParams:({filter:e})=>({filter:e})}),D=t({method:`POST`,path:e=>`/posts/${e}/copy/`}),O=t({method:`POST`,retry:!1,path:()=>`/posts/upload/`,body:({file:e,mapping:t})=>{let n=new FormData;n.append(`postsfile`,e);for(let[e,r]of Object.entries(t))n.append(`mapping[${e}]`,r);return n}});export{E as a,w as c,O as d,y as f,p as h,_ as i,C as l,c as m,S as n,T as o,u as p,g as r,D as s,h as t,x as u};