@automattic/data-stores 3.1.0 → 3.1.2

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 (747) hide show
  1. package/README.md +10 -9
  2. package/dist/cjs/add-ons/add-ons-list.js +92 -0
  3. package/dist/cjs/add-ons/add-ons-list.js.map +1 -0
  4. package/dist/cjs/add-ons/constants.js +21 -3
  5. package/dist/cjs/add-ons/constants.js.map +1 -1
  6. package/dist/cjs/add-ons/hooks/use-add-on-prices.js +55 -54
  7. package/dist/cjs/add-ons/hooks/use-add-on-prices.js.map +1 -1
  8. package/dist/cjs/add-ons/hooks/use-add-on-purchase-status.js +14 -6
  9. package/dist/cjs/add-ons/hooks/use-add-on-purchase-status.js.map +1 -1
  10. package/dist/cjs/add-ons/hooks/use-add-ons.js +35 -193
  11. package/dist/cjs/add-ons/hooks/use-add-ons.js.map +1 -1
  12. package/dist/cjs/add-ons/hooks/use-available-storage-add-ons.js +19 -12
  13. package/dist/cjs/add-ons/hooks/use-available-storage-add-ons.js.map +1 -1
  14. package/dist/cjs/add-ons/hooks/use-get-purchased-storage-add-on.js +21 -0
  15. package/dist/cjs/add-ons/hooks/use-get-purchased-storage-add-on.js.map +1 -0
  16. package/dist/cjs/add-ons/hooks/use-storage-add-on-availability.js +30 -0
  17. package/dist/cjs/add-ons/hooks/use-storage-add-on-availability.js.map +1 -0
  18. package/dist/cjs/add-ons/icons/custom-design.js +1 -1
  19. package/dist/cjs/add-ons/icons/custom-design.js.map +1 -1
  20. package/dist/cjs/add-ons/icons/unlimited-themes.js +1 -1
  21. package/dist/cjs/add-ons/icons/unlimited-themes.js.map +1 -1
  22. package/dist/cjs/add-ons/index.js +6 -1
  23. package/dist/cjs/add-ons/index.js.map +1 -1
  24. package/dist/cjs/add-ons/mocks.js +31 -0
  25. package/dist/cjs/add-ons/mocks.js.map +1 -0
  26. package/dist/cjs/contextual-help/admin-sections.js +5 -6
  27. package/dist/cjs/contextual-help/admin-sections.js.map +1 -1
  28. package/dist/cjs/contextual-help/contextual-help.js +6 -4
  29. package/dist/cjs/contextual-help/contextual-help.js.map +1 -1
  30. package/dist/cjs/domain-suggestions/index.js +9 -16
  31. package/dist/cjs/domain-suggestions/index.js.map +1 -1
  32. package/dist/cjs/domain-suggestions/queries.js +3 -4
  33. package/dist/cjs/domain-suggestions/queries.js.map +1 -1
  34. package/dist/cjs/domain-suggestions/resolvers.js +3 -3
  35. package/dist/cjs/domain-suggestions/resolvers.js.map +1 -1
  36. package/dist/cjs/domain-suggestions/utils.js +5 -8
  37. package/dist/cjs/domain-suggestions/utils.js.map +1 -1
  38. package/dist/cjs/help-center/actions.js +115 -43
  39. package/dist/cjs/help-center/actions.js.map +1 -1
  40. package/dist/cjs/help-center/index.js +28 -2
  41. package/dist/cjs/help-center/index.js.map +1 -1
  42. package/dist/cjs/help-center/reducer.js +50 -5
  43. package/dist/cjs/help-center/reducer.js.map +1 -1
  44. package/dist/cjs/help-center/resolvers.js +32 -0
  45. package/dist/cjs/help-center/resolvers.js.map +1 -0
  46. package/dist/cjs/help-center/selectors.js +15 -3
  47. package/dist/cjs/help-center/selectors.js.map +1 -1
  48. package/dist/cjs/index.js +5 -8
  49. package/dist/cjs/index.js.map +1 -1
  50. package/dist/cjs/mutations/use-domains-bulk-actions-mutation.js +1 -2
  51. package/dist/cjs/mutations/use-domains-bulk-actions-mutation.js.map +1 -1
  52. package/dist/cjs/newsletter-categories/index.js +36 -0
  53. package/dist/cjs/newsletter-categories/index.js.map +1 -0
  54. package/dist/cjs/onboard/actions.js +9 -84
  55. package/dist/cjs/onboard/actions.js.map +1 -1
  56. package/dist/cjs/onboard/constants.js +18 -7
  57. package/dist/cjs/onboard/constants.js.map +1 -1
  58. package/dist/cjs/onboard/index.js +5 -4
  59. package/dist/cjs/onboard/index.js.map +1 -1
  60. package/dist/cjs/onboard/reducer.js +21 -33
  61. package/dist/cjs/onboard/reducer.js.map +1 -1
  62. package/dist/cjs/onboard/selectors.js +3 -5
  63. package/dist/cjs/onboard/selectors.js.map +1 -1
  64. package/dist/cjs/onboard/utils.js +12 -11
  65. package/dist/cjs/onboard/utils.js.map +1 -1
  66. package/dist/cjs/plans/constants.js +1 -0
  67. package/dist/cjs/plans/constants.js.map +1 -1
  68. package/dist/cjs/plans/hooks/use-current-plan.js +1 -1
  69. package/dist/cjs/plans/hooks/use-current-plan.js.map +1 -1
  70. package/dist/cjs/plans/hooks/use-intro-offers.js +1 -1
  71. package/dist/cjs/plans/hooks/use-intro-offers.js.map +1 -1
  72. package/dist/cjs/plans/hooks/use-pricing-meta-for-grid-plans.js +52 -9
  73. package/dist/cjs/plans/hooks/use-pricing-meta-for-grid-plans.js.map +1 -1
  74. package/dist/cjs/plans/index.js +2 -2
  75. package/dist/cjs/plans/index.js.map +1 -1
  76. package/dist/cjs/plans/mock/next/store/plans.js +12 -6
  77. package/dist/cjs/plans/mock/next/store/plans.js.map +1 -1
  78. package/dist/cjs/plans/queries/lib/unpack-cost-overrides.js +1 -1
  79. package/dist/cjs/plans/queries/lib/unpack-cost-overrides.js.map +1 -1
  80. package/dist/cjs/plans/queries/lib/unpack-intro-offer.js +16 -3
  81. package/dist/cjs/plans/queries/lib/unpack-intro-offer.js.map +1 -1
  82. package/dist/cjs/plans/queries/lib/use-query-keys-factory.js +5 -1
  83. package/dist/cjs/plans/queries/lib/use-query-keys-factory.js.map +1 -1
  84. package/dist/cjs/plans/queries/use-plans.js +1 -1
  85. package/dist/cjs/plans/queries/use-site-plans.js +6 -2
  86. package/dist/cjs/plans/queries/use-site-plans.js.map +1 -1
  87. package/dist/cjs/plans/resolvers.js +5 -7
  88. package/dist/cjs/plans/resolvers.js.map +1 -1
  89. package/dist/cjs/products-list/queries/use-products.js +1 -1
  90. package/dist/cjs/purchases/lib/assembler.js +8 -3
  91. package/dist/cjs/purchases/lib/assembler.js.map +1 -1
  92. package/dist/cjs/purchases/queries/lib/use-query-keys-factory.js +1 -0
  93. package/dist/cjs/purchases/queries/lib/use-query-keys-factory.js.map +1 -1
  94. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js +33 -0
  95. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -0
  96. package/dist/cjs/purchases/queries/use-site-purchases.js +1 -2
  97. package/dist/cjs/purchases/queries/use-site-purchases.js.map +1 -1
  98. package/dist/cjs/queries/use-all-domains-query.js +2 -2
  99. package/dist/cjs/queries/use-all-domains-query.js.map +1 -1
  100. package/dist/cjs/queries/use-bulk-domain-update-status-query.js +7 -7
  101. package/dist/cjs/queries/use-bulk-domain-update-status-query.js.map +1 -1
  102. package/dist/cjs/queries/use-launchpad.js +16 -10
  103. package/dist/cjs/queries/use-launchpad.js.map +1 -1
  104. package/dist/cjs/queries/use-site-domains-query.js +3 -3
  105. package/dist/cjs/queries/use-site-domains-query.js.map +1 -1
  106. package/dist/cjs/queries/use-site-intent.js +1 -2
  107. package/dist/cjs/queries/use-site-intent.js.map +1 -1
  108. package/dist/cjs/queries/use-site-query.js +2 -3
  109. package/dist/cjs/queries/use-site-query.js.map +1 -1
  110. package/dist/cjs/reader/contexts/site-subscriptions-query-props.js +11 -10
  111. package/dist/cjs/reader/contexts/site-subscriptions-query-props.js.map +1 -1
  112. package/dist/cjs/reader/helpers/index.js +2 -2
  113. package/dist/cjs/reader/helpers/index.js.map +1 -1
  114. package/dist/cjs/reader/hooks/index.js +5 -4
  115. package/dist/cjs/reader/hooks/index.js.map +1 -1
  116. package/dist/cjs/reader/hooks/use-is-logged-in.js +10 -8
  117. package/dist/cjs/reader/hooks/use-is-logged-in.js.map +1 -1
  118. package/dist/cjs/reader/mutations/index.js +14 -13
  119. package/dist/cjs/reader/mutations/index.js.map +1 -1
  120. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js +1 -1
  121. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  122. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js +4 -0
  123. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  124. package/dist/cjs/reader/queries/index.js +11 -10
  125. package/dist/cjs/reader/queries/index.js.map +1 -1
  126. package/dist/cjs/reader/queries/use-read-feed-query.js +2 -2
  127. package/dist/cjs/reader/queries/use-read-feed-query.js.map +1 -1
  128. package/dist/cjs/reader/queries/use-read-feed-site-query.js +1 -1
  129. package/dist/cjs/reader/queries/use-read-feed-site-query.js.map +1 -1
  130. package/dist/cjs/site/actions.js +37 -11
  131. package/dist/cjs/site/actions.js.map +1 -1
  132. package/dist/cjs/site/constants.js +3 -5
  133. package/dist/cjs/site/constants.js.map +1 -1
  134. package/dist/cjs/site/index.js +2 -2
  135. package/dist/cjs/site/index.js.map +1 -1
  136. package/dist/cjs/site/queries/use-site-media-storage.js +1 -0
  137. package/dist/cjs/site/queries/use-site-media-storage.js.map +1 -1
  138. package/dist/cjs/site/queries/use-site-user-query.js +1 -2
  139. package/dist/cjs/site/queries/use-site-user-query.js.map +1 -1
  140. package/dist/cjs/site/selectors.js +2 -2
  141. package/dist/cjs/site/selectors.js.map +1 -1
  142. package/dist/cjs/site/types.js.map +1 -1
  143. package/dist/cjs/starter-designs-queries/use-starter-design-by-slug.js +1 -2
  144. package/dist/cjs/starter-designs-queries/use-starter-design-by-slug.js.map +1 -1
  145. package/dist/cjs/starter-designs-queries/use-starter-designs-query.js +3 -3
  146. package/dist/cjs/starter-designs-queries/use-starter-designs-query.js.map +1 -1
  147. package/dist/cjs/stepper-internal/index.js +1 -2
  148. package/dist/cjs/stepper-internal/index.js.map +1 -1
  149. package/dist/cjs/stepper-internal/reducer.js.map +1 -1
  150. package/dist/cjs/subscriber/actions.js +39 -31
  151. package/dist/cjs/subscriber/actions.js.map +1 -1
  152. package/dist/cjs/subscriber/index.js +0 -2
  153. package/dist/cjs/subscriber/index.js.map +1 -1
  154. package/dist/cjs/subscriber/selectors.js +5 -0
  155. package/dist/cjs/subscriber/selectors.js.map +1 -1
  156. package/dist/cjs/templates/index.js +2 -1
  157. package/dist/cjs/templates/index.js.map +1 -1
  158. package/dist/cjs/user/actions.js +1 -2
  159. package/dist/cjs/user/actions.js.map +1 -1
  160. package/dist/cjs/user/index.js +1 -2
  161. package/dist/cjs/user/index.js.map +1 -1
  162. package/dist/cjs/user/resolvers.js +1 -2
  163. package/dist/cjs/user/resolvers.js.map +1 -1
  164. package/dist/cjs/users/use-send-invites.js +2 -4
  165. package/dist/cjs/users/use-send-invites.js.map +1 -1
  166. package/dist/esm/add-ons/add-ons-list.js +86 -0
  167. package/dist/esm/add-ons/add-ons-list.js.map +1 -0
  168. package/dist/esm/add-ons/constants.js +20 -2
  169. package/dist/esm/add-ons/constants.js.map +1 -1
  170. package/dist/esm/add-ons/hooks/use-add-on-prices.js +51 -53
  171. package/dist/esm/add-ons/hooks/use-add-on-prices.js.map +1 -1
  172. package/dist/esm/add-ons/hooks/use-add-on-purchase-status.js +14 -6
  173. package/dist/esm/add-ons/hooks/use-add-on-purchase-status.js.map +1 -1
  174. package/dist/esm/add-ons/hooks/use-add-ons.js +36 -194
  175. package/dist/esm/add-ons/hooks/use-add-ons.js.map +1 -1
  176. package/dist/esm/add-ons/hooks/use-available-storage-add-ons.js +18 -12
  177. package/dist/esm/add-ons/hooks/use-available-storage-add-ons.js.map +1 -1
  178. package/dist/esm/add-ons/hooks/use-get-purchased-storage-add-on.js +17 -0
  179. package/dist/esm/add-ons/hooks/use-get-purchased-storage-add-on.js.map +1 -0
  180. package/dist/esm/add-ons/hooks/use-storage-add-on-availability.js +26 -0
  181. package/dist/esm/add-ons/hooks/use-storage-add-on-availability.js.map +1 -0
  182. package/dist/esm/add-ons/icons/custom-design.js +2 -2
  183. package/dist/esm/add-ons/icons/custom-design.js.map +1 -1
  184. package/dist/esm/add-ons/icons/unlimited-themes.js +2 -2
  185. package/dist/esm/add-ons/icons/unlimited-themes.js.map +1 -1
  186. package/dist/esm/add-ons/index.js +2 -0
  187. package/dist/esm/add-ons/index.js.map +1 -1
  188. package/dist/esm/add-ons/mocks.js +27 -0
  189. package/dist/esm/add-ons/mocks.js.map +1 -0
  190. package/dist/esm/contextual-help/admin-sections.js +4 -4
  191. package/dist/esm/contextual-help/admin-sections.js.map +1 -1
  192. package/dist/esm/contextual-help/contextual-help.js +3 -2
  193. package/dist/esm/contextual-help/contextual-help.js.map +1 -1
  194. package/dist/esm/domain-suggestions/index.js +9 -15
  195. package/dist/esm/domain-suggestions/index.js.map +1 -1
  196. package/dist/esm/domain-suggestions/utils.js +1 -4
  197. package/dist/esm/domain-suggestions/utils.js.map +1 -1
  198. package/dist/esm/help-center/actions.js +103 -38
  199. package/dist/esm/help-center/actions.js.map +1 -1
  200. package/dist/esm/help-center/index.js +24 -0
  201. package/dist/esm/help-center/index.js.map +1 -1
  202. package/dist/esm/help-center/reducer.js +50 -5
  203. package/dist/esm/help-center/reducer.js.map +1 -1
  204. package/dist/esm/help-center/resolvers.js +29 -0
  205. package/dist/esm/help-center/resolvers.js.map +1 -0
  206. package/dist/esm/help-center/selectors.js +7 -1
  207. package/dist/esm/help-center/selectors.js.map +1 -1
  208. package/dist/esm/index.js +3 -5
  209. package/dist/esm/index.js.map +1 -1
  210. package/dist/esm/newsletter-categories/index.js +31 -0
  211. package/dist/esm/newsletter-categories/index.js.map +1 -0
  212. package/dist/esm/onboard/actions.js +4 -74
  213. package/dist/esm/onboard/actions.js.map +1 -1
  214. package/dist/esm/onboard/constants.js +18 -7
  215. package/dist/esm/onboard/constants.js.map +1 -1
  216. package/dist/esm/onboard/index.js +3 -2
  217. package/dist/esm/onboard/index.js.map +1 -1
  218. package/dist/esm/onboard/reducer.js +21 -33
  219. package/dist/esm/onboard/reducer.js.map +1 -1
  220. package/dist/esm/onboard/selectors.js +1 -2
  221. package/dist/esm/onboard/selectors.js.map +1 -1
  222. package/dist/esm/onboard/utils.js +12 -11
  223. package/dist/esm/onboard/utils.js.map +1 -1
  224. package/dist/esm/plans/constants.js +1 -0
  225. package/dist/esm/plans/constants.js.map +1 -1
  226. package/dist/esm/plans/hooks/use-current-plan.js +1 -1
  227. package/dist/esm/plans/hooks/use-current-plan.js.map +1 -1
  228. package/dist/esm/plans/hooks/use-intro-offers.js +1 -1
  229. package/dist/esm/plans/hooks/use-intro-offers.js.map +1 -1
  230. package/dist/esm/plans/hooks/use-pricing-meta-for-grid-plans.js +52 -9
  231. package/dist/esm/plans/hooks/use-pricing-meta-for-grid-plans.js.map +1 -1
  232. package/dist/esm/plans/mock/next/store/plans.js +12 -6
  233. package/dist/esm/plans/mock/next/store/plans.js.map +1 -1
  234. package/dist/esm/plans/queries/lib/unpack-intro-offer.js +16 -3
  235. package/dist/esm/plans/queries/lib/unpack-intro-offer.js.map +1 -1
  236. package/dist/esm/plans/queries/lib/use-query-keys-factory.js +5 -1
  237. package/dist/esm/plans/queries/lib/use-query-keys-factory.js.map +1 -1
  238. package/dist/esm/plans/queries/use-plans.js +1 -1
  239. package/dist/esm/plans/queries/use-site-plans.js +6 -2
  240. package/dist/esm/plans/queries/use-site-plans.js.map +1 -1
  241. package/dist/esm/plans/resolvers.js +1 -1
  242. package/dist/esm/plans/resolvers.js.map +1 -1
  243. package/dist/esm/products-list/queries/use-products.js +1 -1
  244. package/dist/esm/purchases/lib/assembler.js +6 -0
  245. package/dist/esm/purchases/lib/assembler.js.map +1 -1
  246. package/dist/esm/purchases/queries/lib/use-query-keys-factory.js +1 -0
  247. package/dist/esm/purchases/queries/lib/use-query-keys-factory.js.map +1 -1
  248. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js +29 -0
  249. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -0
  250. package/dist/esm/queries/use-all-domains-query.js.map +1 -1
  251. package/dist/esm/queries/use-bulk-domain-update-status-query.js +5 -5
  252. package/dist/esm/queries/use-bulk-domain-update-status-query.js.map +1 -1
  253. package/dist/esm/queries/use-launchpad.js +13 -8
  254. package/dist/esm/queries/use-launchpad.js.map +1 -1
  255. package/dist/esm/queries/use-site-domains-query.js.map +1 -1
  256. package/dist/esm/queries/use-site-intent.js.map +1 -1
  257. package/dist/esm/reader/contexts/site-subscriptions-query-props.js +12 -11
  258. package/dist/esm/reader/contexts/site-subscriptions-query-props.js.map +1 -1
  259. package/dist/esm/reader/hooks/use-is-logged-in.js +9 -8
  260. package/dist/esm/reader/hooks/use-is-logged-in.js.map +1 -1
  261. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js +1 -1
  262. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  263. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js +4 -0
  264. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  265. package/dist/esm/reader/queries/use-read-feed-query.js +2 -2
  266. package/dist/esm/reader/queries/use-read-feed-query.js.map +1 -1
  267. package/dist/esm/reader/queries/use-read-feed-site-query.js +1 -1
  268. package/dist/esm/reader/queries/use-read-feed-site-query.js.map +1 -1
  269. package/dist/esm/site/actions.js +36 -9
  270. package/dist/esm/site/actions.js.map +1 -1
  271. package/dist/esm/site/constants.js +2 -4
  272. package/dist/esm/site/constants.js.map +1 -1
  273. package/dist/esm/site/queries/use-site-media-storage.js +1 -0
  274. package/dist/esm/site/queries/use-site-media-storage.js.map +1 -1
  275. package/dist/esm/site/types.js.map +1 -1
  276. package/dist/esm/starter-designs-queries/use-starter-designs-query.js +2 -1
  277. package/dist/esm/starter-designs-queries/use-starter-designs-query.js.map +1 -1
  278. package/dist/esm/stepper-internal/reducer.js.map +1 -1
  279. package/dist/esm/subscriber/actions.js +38 -29
  280. package/dist/esm/subscriber/actions.js.map +1 -1
  281. package/dist/esm/subscriber/index.js +0 -2
  282. package/dist/esm/subscriber/index.js.map +1 -1
  283. package/dist/esm/subscriber/selectors.js +4 -0
  284. package/dist/esm/subscriber/selectors.js.map +1 -1
  285. package/dist/esm/users/use-send-invites.js +1 -2
  286. package/dist/esm/users/use-send-invites.js.map +1 -1
  287. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  288. package/dist/tsconfig.tsbuildinfo +1 -1
  289. package/dist/types/add-ons/add-ons-list.d.ts +4 -0
  290. package/dist/types/add-ons/add-ons-list.d.ts.map +1 -0
  291. package/dist/types/add-ons/constants.d.ts +8 -3
  292. package/dist/types/add-ons/constants.d.ts.map +1 -1
  293. package/dist/types/add-ons/hooks/use-add-on-checkout-link.d.ts +1 -1
  294. package/dist/types/add-ons/hooks/use-add-on-checkout-link.d.ts.map +1 -1
  295. package/dist/types/add-ons/hooks/use-add-on-prices.d.ts +12 -7
  296. package/dist/types/add-ons/hooks/use-add-on-prices.d.ts.map +1 -1
  297. package/dist/types/add-ons/hooks/use-add-on-purchase-status.d.ts +7 -8
  298. package/dist/types/add-ons/hooks/use-add-on-purchase-status.d.ts.map +1 -1
  299. package/dist/types/add-ons/hooks/use-add-ons.d.ts +1 -2
  300. package/dist/types/add-ons/hooks/use-add-ons.d.ts.map +1 -1
  301. package/dist/types/add-ons/hooks/use-available-storage-add-ons.d.ts +9 -2
  302. package/dist/types/add-ons/hooks/use-available-storage-add-ons.d.ts.map +1 -1
  303. package/dist/types/add-ons/hooks/use-get-purchased-storage-add-on.d.ts +5 -0
  304. package/dist/types/add-ons/hooks/use-get-purchased-storage-add-on.d.ts.map +1 -0
  305. package/dist/types/add-ons/hooks/use-storage-add-on-availability.d.ts +17 -0
  306. package/dist/types/add-ons/hooks/use-storage-add-on-availability.d.ts.map +1 -0
  307. package/dist/types/add-ons/hooks/use-storage-add-ons.d.ts.map +1 -1
  308. package/dist/types/add-ons/icons/custom-design.d.ts.map +1 -1
  309. package/dist/types/add-ons/icons/unlimited-themes.d.ts.map +1 -1
  310. package/dist/types/add-ons/index.d.ts +2 -0
  311. package/dist/types/add-ons/index.d.ts.map +1 -1
  312. package/dist/types/add-ons/mocks.d.ts +4 -0
  313. package/dist/types/add-ons/mocks.d.ts.map +1 -0
  314. package/dist/types/add-ons/types.d.ts +6 -7
  315. package/dist/types/add-ons/types.d.ts.map +1 -1
  316. package/dist/types/contextual-help/contextual-help.d.ts.map +1 -1
  317. package/dist/types/domain-suggestions/actions.d.ts.map +1 -1
  318. package/dist/types/domain-suggestions/index.d.ts +3 -2
  319. package/dist/types/domain-suggestions/index.d.ts.map +1 -1
  320. package/dist/types/domain-suggestions/queries.d.ts +24 -24
  321. package/dist/types/domain-suggestions/reducer.d.ts +6 -2
  322. package/dist/types/domain-suggestions/reducer.d.ts.map +1 -1
  323. package/dist/types/domain-suggestions/resolvers.d.ts.map +1 -1
  324. package/dist/types/domain-suggestions/selectors.d.ts.map +1 -1
  325. package/dist/types/domain-suggestions/types.d.ts +0 -3
  326. package/dist/types/domain-suggestions/types.d.ts.map +1 -1
  327. package/dist/types/domain-suggestions/utils.d.ts +0 -3
  328. package/dist/types/domain-suggestions/utils.d.ts.map +1 -1
  329. package/dist/types/help-center/actions.d.ts +63 -61
  330. package/dist/types/help-center/actions.d.ts.map +1 -1
  331. package/dist/types/help-center/index.d.ts +2 -0
  332. package/dist/types/help-center/index.d.ts.map +1 -1
  333. package/dist/types/help-center/reducer.d.ts +36 -3
  334. package/dist/types/help-center/reducer.d.ts.map +1 -1
  335. package/dist/types/help-center/resolvers.d.ts +24 -0
  336. package/dist/types/help-center/resolvers.d.ts.map +1 -0
  337. package/dist/types/help-center/selectors.d.ts +10 -1
  338. package/dist/types/help-center/selectors.d.ts.map +1 -1
  339. package/dist/types/help-center/types.d.ts +9 -0
  340. package/dist/types/help-center/types.d.ts.map +1 -1
  341. package/dist/types/index.d.ts +109 -112
  342. package/dist/types/index.d.ts.map +1 -1
  343. package/dist/types/mutations/use-domains-bulk-actions-mutation.d.ts +4 -4
  344. package/dist/types/mutations/use-domains-bulk-actions-mutation.d.ts.map +1 -1
  345. package/dist/types/newsletter-categories/index.d.ts +21 -0
  346. package/dist/types/newsletter-categories/index.d.ts.map +1 -0
  347. package/dist/types/onboard/actions.d.ts +17 -94
  348. package/dist/types/onboard/actions.d.ts.map +1 -1
  349. package/dist/types/onboard/constants.d.ts +16 -7
  350. package/dist/types/onboard/constants.d.ts.map +1 -1
  351. package/dist/types/onboard/index.d.ts.map +1 -1
  352. package/dist/types/onboard/reducer.d.ts +53 -6
  353. package/dist/types/onboard/reducer.d.ts.map +1 -1
  354. package/dist/types/onboard/selectors.d.ts +6 -9
  355. package/dist/types/onboard/selectors.d.ts.map +1 -1
  356. package/dist/types/onboard/utils.d.ts +5 -1
  357. package/dist/types/onboard/utils.d.ts.map +1 -1
  358. package/dist/types/plans/actions.d.ts.map +1 -1
  359. package/dist/types/plans/constants.d.ts +1 -0
  360. package/dist/types/plans/constants.d.ts.map +1 -1
  361. package/dist/types/plans/hooks/use-current-plan-expiry-date.d.ts.map +1 -1
  362. package/dist/types/plans/hooks/use-current-plan-term.d.ts +1 -1
  363. package/dist/types/plans/hooks/use-current-plan-term.d.ts.map +1 -1
  364. package/dist/types/plans/hooks/use-current-plan.d.ts.map +1 -1
  365. package/dist/types/plans/hooks/use-intro-offers-for-woo-express.d.ts.map +1 -1
  366. package/dist/types/plans/hooks/use-intro-offers.d.ts.map +1 -1
  367. package/dist/types/plans/hooks/use-pricing-meta-for-grid-plans.d.ts +7 -6
  368. package/dist/types/plans/hooks/use-pricing-meta-for-grid-plans.d.ts.map +1 -1
  369. package/dist/types/plans/mock/next/store/plans.d.ts.map +1 -1
  370. package/dist/types/plans/queries/lib/unpack-intro-offer.d.ts.map +1 -1
  371. package/dist/types/plans/queries/lib/use-query-keys-factory.d.ts +1 -1
  372. package/dist/types/plans/queries/lib/use-query-keys-factory.d.ts.map +1 -1
  373. package/dist/types/plans/queries/use-site-plans.d.ts +6 -1
  374. package/dist/types/plans/queries/use-site-plans.d.ts.map +1 -1
  375. package/dist/types/plans/reducer.d.ts +7 -2
  376. package/dist/types/plans/reducer.d.ts.map +1 -1
  377. package/dist/types/plans/resolvers.d.ts +1 -1
  378. package/dist/types/plans/selectors.d.ts +1 -1
  379. package/dist/types/plans/selectors.d.ts.map +1 -1
  380. package/dist/types/plans/test-utils/index.d.ts.map +1 -1
  381. package/dist/types/plans/types.d.ts +24 -2
  382. package/dist/types/plans/types.d.ts.map +1 -1
  383. package/dist/types/products-list/actions.d.ts.map +1 -1
  384. package/dist/types/products-list/reducer.d.ts +5 -2
  385. package/dist/types/products-list/reducer.d.ts.map +1 -1
  386. package/dist/types/products-list/resolvers.d.ts.map +1 -1
  387. package/dist/types/products-list/selectors.d.ts +2 -2
  388. package/dist/types/products-list/selectors.d.ts.map +1 -1
  389. package/dist/types/products-list/types.d.ts +1 -0
  390. package/dist/types/products-list/types.d.ts.map +1 -1
  391. package/dist/types/purchases/hooks/use-site-purchase-by-id.d.ts.map +1 -1
  392. package/dist/types/purchases/hooks/use-site-purchases-by-product-slug.d.ts.map +1 -1
  393. package/dist/types/purchases/lib/assembler.d.ts.map +1 -1
  394. package/dist/types/purchases/queries/lib/use-query-keys-factory.d.ts +1 -0
  395. package/dist/types/purchases/queries/lib/use-query-keys-factory.d.ts.map +1 -1
  396. package/dist/types/purchases/queries/use-get-jetpack-transferred-license-purchases.d.ts +18 -0
  397. package/dist/types/purchases/queries/use-get-jetpack-transferred-license-purchases.d.ts.map +1 -0
  398. package/dist/types/purchases/queries/use-site-purchases.d.ts +1 -1
  399. package/dist/types/purchases/queries/use-site-purchases.d.ts.map +1 -1
  400. package/dist/types/purchases/types.d.ts +21 -0
  401. package/dist/types/purchases/types.d.ts.map +1 -1
  402. package/dist/types/queries/use-all-domains-query.d.ts +3 -2
  403. package/dist/types/queries/use-all-domains-query.d.ts.map +1 -1
  404. package/dist/types/queries/use-bulk-domain-update-status-query.d.ts +6 -1
  405. package/dist/types/queries/use-bulk-domain-update-status-query.d.ts.map +1 -1
  406. package/dist/types/queries/use-happiness-engineers-query.d.ts +1 -1
  407. package/dist/types/queries/use-launchpad.d.ts +4 -3
  408. package/dist/types/queries/use-launchpad.d.ts.map +1 -1
  409. package/dist/types/queries/use-site-domains-query.d.ts +9 -2
  410. package/dist/types/queries/use-site-domains-query.d.ts.map +1 -1
  411. package/dist/types/queries/use-site-intent.d.ts +3 -2
  412. package/dist/types/queries/use-site-intent.d.ts.map +1 -1
  413. package/dist/types/queries/use-site-query.d.ts +1 -1
  414. package/dist/types/queries/use-site-query.d.ts.map +1 -1
  415. package/dist/types/reader/contexts/site-subscriptions-query-props.d.ts +4 -2
  416. package/dist/types/reader/contexts/site-subscriptions-query-props.d.ts.map +1 -1
  417. package/dist/types/reader/helpers/index.d.ts +1 -1
  418. package/dist/types/reader/helpers/index.d.ts.map +1 -1
  419. package/dist/types/reader/helpers/optimistic-update.d.ts.map +1 -1
  420. package/dist/types/reader/helpers/query-key.d.ts.map +1 -1
  421. package/dist/types/reader/helpers/type-guards.d.ts.map +1 -1
  422. package/dist/types/reader/helpers/validators.d.ts +1 -1
  423. package/dist/types/reader/helpers/validators.d.ts.map +1 -1
  424. package/dist/types/reader/hooks/use-cache-key.d.ts.map +1 -1
  425. package/dist/types/reader/hooks/use-is-logged-in.d.ts +1 -2
  426. package/dist/types/reader/hooks/use-is-logged-in.d.ts.map +1 -1
  427. package/dist/types/reader/index.d.ts +105 -106
  428. package/dist/types/reader/index.d.ts.map +1 -1
  429. package/dist/types/reader/mutations/use-pending-post-confirm-mutation.d.ts +1 -1
  430. package/dist/types/reader/mutations/use-pending-post-delete-mutation.d.ts +1 -1
  431. package/dist/types/reader/mutations/use-pending-site-confirm-mutation.d.ts +1 -1
  432. package/dist/types/reader/mutations/use-pending-site-delete-mutation.d.ts +1 -1
  433. package/dist/types/reader/mutations/use-post-notify-me-of-new-comments-mutation.d.ts +1 -1
  434. package/dist/types/reader/mutations/use-post-unsubscribe-mutation.d.ts +1 -1
  435. package/dist/types/reader/mutations/use-site-delivery-frequency-mutation.d.ts +1 -1
  436. package/dist/types/reader/mutations/use-site-email-me-new-comments-mutation.d.ts +1 -1
  437. package/dist/types/reader/mutations/use-site-email-me-new-posts-mutation.d.ts +1 -1
  438. package/dist/types/reader/mutations/use-site-notify-me-of-new-posts-mutation.d.ts +1 -1
  439. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts +2 -2
  440. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts.map +1 -1
  441. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts +3 -1
  442. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts.map +1 -1
  443. package/dist/types/reader/mutations/use-user-settings-mutation.d.ts +1 -1
  444. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts +8 -8
  445. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts.map +1 -1
  446. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts +8 -8
  447. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts.map +1 -1
  448. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts +16 -16
  449. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts.map +1 -1
  450. package/dist/types/reader/queries/use-read-feed-query.d.ts +3 -1
  451. package/dist/types/reader/queries/use-read-feed-query.d.ts.map +1 -1
  452. package/dist/types/reader/queries/use-read-feed-search-query.d.ts +1 -1
  453. package/dist/types/reader/queries/use-read-feed-search-query.d.ts.map +1 -1
  454. package/dist/types/reader/queries/use-read-feed-site-query.d.ts +1 -1
  455. package/dist/types/reader/queries/use-read-feed-site-query.d.ts.map +1 -1
  456. package/dist/types/reader/queries/use-site-subscription-details-query.d.ts +1 -1
  457. package/dist/types/reader/queries/use-site-subscription-details-query.d.ts.map +1 -1
  458. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts +12 -12
  459. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts.map +1 -1
  460. package/dist/types/reader/queries/use-subscriptions-count-query.d.ts +1 -1
  461. package/dist/types/reader/queries/use-subscriptions-count-query.d.ts.map +1 -1
  462. package/dist/types/reader/queries/use-user-settings-query.d.ts +1 -1
  463. package/dist/types/site/actions.d.ts +11 -11
  464. package/dist/types/site/actions.d.ts.map +1 -1
  465. package/dist/types/site/constants.d.ts +2 -1
  466. package/dist/types/site/constants.d.ts.map +1 -1
  467. package/dist/types/site/queries/use-site-media-storage.d.ts.map +1 -1
  468. package/dist/types/site/queries/use-site-user-query.d.ts +1 -1
  469. package/dist/types/site/queries/use-site-user-query.d.ts.map +1 -1
  470. package/dist/types/site/reducer.d.ts +28 -9
  471. package/dist/types/site/reducer.d.ts.map +1 -1
  472. package/dist/types/site/resolvers.d.ts.map +1 -1
  473. package/dist/types/site/selectors.d.ts +8 -8
  474. package/dist/types/site/selectors.d.ts.map +1 -1
  475. package/dist/types/site/types.d.ts +26 -39
  476. package/dist/types/site/types.d.ts.map +1 -1
  477. package/dist/types/site/utils.d.ts.map +1 -1
  478. package/dist/types/site-reset/use-site-reset-content-summary-query.d.ts.map +1 -1
  479. package/dist/types/site-reset/use-site-reset-mutation.d.ts +4 -4
  480. package/dist/types/site-reset/use-site-reset-mutation.d.ts.map +1 -1
  481. package/dist/types/site-reset/use-site-reset-status-query.d.ts.map +1 -1
  482. package/dist/types/starter-designs-queries/types.d.ts +1 -10
  483. package/dist/types/starter-designs-queries/types.d.ts.map +1 -1
  484. package/dist/types/starter-designs-queries/use-starter-designs-query.d.ts +2 -0
  485. package/dist/types/starter-designs-queries/use-starter-designs-query.d.ts.map +1 -1
  486. package/dist/types/stepper-internal/actions.d.ts.map +1 -1
  487. package/dist/types/stepper-internal/reducer.d.ts +5 -2
  488. package/dist/types/stepper-internal/reducer.d.ts.map +1 -1
  489. package/dist/types/stepper-internal/selectors.d.ts +4 -2
  490. package/dist/types/stepper-internal/selectors.d.ts.map +1 -1
  491. package/dist/types/subscriber/actions.d.ts +11 -53
  492. package/dist/types/subscriber/actions.d.ts.map +1 -1
  493. package/dist/types/subscriber/index.d.ts +14 -52
  494. package/dist/types/subscriber/index.d.ts.map +1 -1
  495. package/dist/types/subscriber/reducers.d.ts +4 -2
  496. package/dist/types/subscriber/reducers.d.ts.map +1 -1
  497. package/dist/types/subscriber/selectors.d.ts +7 -5
  498. package/dist/types/subscriber/selectors.d.ts.map +1 -1
  499. package/dist/types/subscriber/types.d.ts +17 -1
  500. package/dist/types/subscriber/types.d.ts.map +1 -1
  501. package/dist/types/templates/use-template.d.ts +1 -1
  502. package/dist/types/templates/use-template.d.ts.map +1 -1
  503. package/dist/types/theme/utils.d.ts.map +1 -1
  504. package/dist/types/user/reducer.d.ts +4 -2
  505. package/dist/types/user/reducer.d.ts.map +1 -1
  506. package/dist/types/user/selectors.d.ts +2 -2
  507. package/dist/types/user/selectors.d.ts.map +1 -1
  508. package/dist/types/user/types.d.ts +4 -2
  509. package/dist/types/user/types.d.ts.map +1 -1
  510. package/dist/types/users/use-send-invites.d.ts +1 -1
  511. package/dist/types/users/use-send-invites.d.ts.map +1 -1
  512. package/dist/types/wpcom-plans-ui/actions.d.ts +2 -2
  513. package/dist/types/wpcom-plans-ui/actions.d.ts.map +1 -1
  514. package/dist/types/wpcom-plans-ui/reducer.d.ts +5 -2
  515. package/dist/types/wpcom-plans-ui/reducer.d.ts.map +1 -1
  516. package/dist/types/wpcom-plans-ui/selectors.d.ts.map +1 -1
  517. package/dist/types/wpcom-request-controls/index.d.ts +2 -2
  518. package/dist/types/wpcom-request-controls/index.d.ts.map +1 -1
  519. package/package.json +30 -20
  520. package/src/add-ons/add-ons-list.ts +109 -0
  521. package/src/add-ons/constants.ts +20 -2
  522. package/src/add-ons/hooks/use-add-on-prices.ts +67 -54
  523. package/src/add-ons/hooks/use-add-on-purchase-status.ts +21 -10
  524. package/src/add-ons/hooks/use-add-ons.ts +53 -251
  525. package/src/add-ons/hooks/use-available-storage-add-ons.ts +26 -16
  526. package/src/add-ons/hooks/use-get-purchased-storage-add-on.ts +24 -0
  527. package/src/add-ons/hooks/use-storage-add-on-availability.ts +38 -0
  528. package/src/add-ons/icons/custom-design.tsx +3 -11
  529. package/src/add-ons/icons/unlimited-themes.tsx +3 -12
  530. package/src/add-ons/index.ts +5 -0
  531. package/src/add-ons/mocks.ts +29 -0
  532. package/src/add-ons/types.ts +6 -6
  533. package/src/contextual-help/admin-sections.ts +4 -4
  534. package/src/contextual-help/contextual-help.tsx +4 -2
  535. package/src/domain-suggestions/index.ts +9 -16
  536. package/src/domain-suggestions/test/selectors.ts +12 -12
  537. package/src/domain-suggestions/types.ts +0 -4
  538. package/src/domain-suggestions/utils.ts +1 -4
  539. package/src/help-center/actions.ts +155 -47
  540. package/src/help-center/index.ts +34 -0
  541. package/src/help-center/reducer.ts +68 -5
  542. package/src/help-center/resolvers.ts +38 -0
  543. package/src/help-center/selectors.ts +8 -1
  544. package/src/help-center/types.ts +10 -1
  545. package/src/index.ts +7 -8
  546. package/src/newsletter-categories/index.ts +54 -0
  547. package/src/newsletter-categories/test/index.tsx +103 -0
  548. package/src/onboard/actions.ts +7 -122
  549. package/src/onboard/constants.ts +19 -7
  550. package/src/onboard/index.ts +3 -2
  551. package/src/onboard/reducer.ts +33 -35
  552. package/src/onboard/selectors.ts +1 -2
  553. package/src/onboard/test/utils.ts +36 -3
  554. package/src/onboard/utils.ts +21 -15
  555. package/src/plans/constants.ts +1 -0
  556. package/src/plans/hooks/test/use-pricing-meta-for-grid-plans.ts +241 -122
  557. package/src/plans/hooks/use-current-plan.ts +1 -1
  558. package/src/plans/hooks/use-intro-offers.ts +1 -1
  559. package/src/plans/hooks/use-pricing-meta-for-grid-plans.ts +69 -18
  560. package/src/plans/mock/next/store/plans.ts +12 -6
  561. package/src/plans/queries/lib/unpack-intro-offer.ts +23 -4
  562. package/src/plans/queries/lib/use-query-keys-factory.ts +5 -1
  563. package/src/plans/queries/use-plans.ts +1 -1
  564. package/src/plans/queries/use-site-plans.ts +11 -2
  565. package/src/plans/resolvers.ts +1 -1
  566. package/src/plans/types.ts +24 -2
  567. package/src/products-list/queries/use-products.ts +1 -1
  568. package/src/products-list/types.ts +1 -0
  569. package/src/purchases/lib/assembler.ts +7 -0
  570. package/src/purchases/queries/lib/use-query-keys-factory.ts +1 -0
  571. package/src/purchases/queries/use-get-jetpack-transferred-license-purchases.tsx +43 -0
  572. package/src/purchases/types.ts +25 -0
  573. package/src/queries/use-all-domains-query.ts +3 -0
  574. package/src/queries/use-bulk-domain-update-status-query.ts +10 -5
  575. package/src/queries/use-launchpad.ts +17 -10
  576. package/src/queries/use-site-domains-query.ts +8 -1
  577. package/src/queries/use-site-intent.ts +2 -1
  578. package/src/reader/contexts/site-subscriptions-query-props.tsx +23 -14
  579. package/src/reader/hooks/use-is-logged-in.ts +9 -16
  580. package/src/reader/mutations/use-site-subscribe-mutation.ts +2 -2
  581. package/src/reader/mutations/use-site-unsubscribe-mutation.ts +7 -0
  582. package/src/reader/queries/test/use-read-feed-search-query.tsx +1 -1
  583. package/src/reader/queries/use-read-feed-query.ts +4 -2
  584. package/src/reader/queries/use-read-feed-site-query.ts +2 -2
  585. package/src/site/actions.ts +44 -15
  586. package/src/site/constants.ts +2 -7
  587. package/src/site/queries/use-site-media-storage.ts +1 -0
  588. package/src/site/test/actions.ts +73 -7
  589. package/src/site/test/selectors.ts +0 -1
  590. package/src/site/types.ts +26 -43
  591. package/src/starter-designs-queries/types.ts +1 -12
  592. package/src/starter-designs-queries/use-starter-designs-query.ts +4 -0
  593. package/src/stepper-internal/reducer.ts +1 -0
  594. package/src/subscriber/actions.ts +111 -79
  595. package/src/subscriber/index.ts +0 -2
  596. package/src/subscriber/selectors.ts +6 -0
  597. package/src/subscriber/types.ts +18 -1
  598. package/src/user/types.ts +4 -2
  599. package/src/users/use-send-invites.ts +1 -2
  600. package/dist/cjs/add-ons/hooks/use-add-on-display-cost.js +0 -29
  601. package/dist/cjs/add-ons/hooks/use-add-on-display-cost.js.map +0 -1
  602. package/dist/cjs/add-ons/lib/is-storage-addon-enabled.js +0 -11
  603. package/dist/cjs/add-ons/lib/is-storage-addon-enabled.js.map +0 -1
  604. package/dist/cjs/analyzer/actions.js +0 -40
  605. package/dist/cjs/analyzer/actions.js.map +0 -1
  606. package/dist/cjs/analyzer/constants.js +0 -5
  607. package/dist/cjs/analyzer/constants.js.map +0 -1
  608. package/dist/cjs/analyzer/index.js +0 -19
  609. package/dist/cjs/analyzer/index.js.map +0 -1
  610. package/dist/cjs/analyzer/reducers.js +0 -27
  611. package/dist/cjs/analyzer/reducers.js.map +0 -1
  612. package/dist/cjs/analyzer/selectors.js +0 -15
  613. package/dist/cjs/analyzer/selectors.js.map +0 -1
  614. package/dist/cjs/analyzer/types.js +0 -3
  615. package/dist/cjs/analyzer/types.js.map +0 -1
  616. package/dist/cjs/automated-transfer-eligibility/actions.js +0 -10
  617. package/dist/cjs/automated-transfer-eligibility/actions.js.map +0 -1
  618. package/dist/cjs/automated-transfer-eligibility/constants.js +0 -43
  619. package/dist/cjs/automated-transfer-eligibility/constants.js.map +0 -1
  620. package/dist/cjs/automated-transfer-eligibility/index.js +0 -27
  621. package/dist/cjs/automated-transfer-eligibility/index.js.map +0 -1
  622. package/dist/cjs/automated-transfer-eligibility/reducer.js +0 -17
  623. package/dist/cjs/automated-transfer-eligibility/reducer.js.map +0 -1
  624. package/dist/cjs/automated-transfer-eligibility/resolvers.js +0 -18
  625. package/dist/cjs/automated-transfer-eligibility/resolvers.js.map +0 -1
  626. package/dist/cjs/automated-transfer-eligibility/selectors.js +0 -60
  627. package/dist/cjs/automated-transfer-eligibility/selectors.js.map +0 -1
  628. package/dist/cjs/automated-transfer-eligibility/types.js +0 -3
  629. package/dist/cjs/automated-transfer-eligibility/types.js.map +0 -1
  630. package/dist/cjs/launchpad-navigator/actions.js +0 -71
  631. package/dist/cjs/launchpad-navigator/actions.js.map +0 -1
  632. package/dist/cjs/launchpad-navigator/constants.js +0 -7
  633. package/dist/cjs/launchpad-navigator/constants.js.map +0 -1
  634. package/dist/cjs/launchpad-navigator/index.js +0 -19
  635. package/dist/cjs/launchpad-navigator/index.js.map +0 -1
  636. package/dist/cjs/launchpad-navigator/reducer.js +0 -24
  637. package/dist/cjs/launchpad-navigator/reducer.js.map +0 -1
  638. package/dist/cjs/launchpad-navigator/selectors.js +0 -8
  639. package/dist/cjs/launchpad-navigator/selectors.js.map +0 -1
  640. package/dist/cjs/queries/use-launchpad-navigator.js +0 -39
  641. package/dist/cjs/queries/use-launchpad-navigator.js.map +0 -1
  642. package/dist/esm/add-ons/hooks/use-add-on-display-cost.js +0 -26
  643. package/dist/esm/add-ons/hooks/use-add-on-display-cost.js.map +0 -1
  644. package/dist/esm/add-ons/lib/is-storage-addon-enabled.js +0 -8
  645. package/dist/esm/add-ons/lib/is-storage-addon-enabled.js.map +0 -1
  646. package/dist/esm/analyzer/actions.js +0 -36
  647. package/dist/esm/analyzer/actions.js.map +0 -1
  648. package/dist/esm/analyzer/constants.js +0 -2
  649. package/dist/esm/analyzer/constants.js.map +0 -1
  650. package/dist/esm/analyzer/index.js +0 -15
  651. package/dist/esm/analyzer/index.js.map +0 -1
  652. package/dist/esm/analyzer/reducers.js +0 -25
  653. package/dist/esm/analyzer/reducers.js.map +0 -1
  654. package/dist/esm/analyzer/selectors.js +0 -9
  655. package/dist/esm/analyzer/selectors.js.map +0 -1
  656. package/dist/esm/analyzer/types.js +0 -2
  657. package/dist/esm/analyzer/types.js.map +0 -1
  658. package/dist/esm/automated-transfer-eligibility/actions.js +0 -6
  659. package/dist/esm/automated-transfer-eligibility/actions.js.map +0 -1
  660. package/dist/esm/automated-transfer-eligibility/constants.js +0 -40
  661. package/dist/esm/automated-transfer-eligibility/constants.js.map +0 -1
  662. package/dist/esm/automated-transfer-eligibility/index.js +0 -22
  663. package/dist/esm/automated-transfer-eligibility/index.js.map +0 -1
  664. package/dist/esm/automated-transfer-eligibility/reducer.js +0 -13
  665. package/dist/esm/automated-transfer-eligibility/reducer.js.map +0 -1
  666. package/dist/esm/automated-transfer-eligibility/resolvers.js +0 -13
  667. package/dist/esm/automated-transfer-eligibility/resolvers.js.map +0 -1
  668. package/dist/esm/automated-transfer-eligibility/selectors.js +0 -56
  669. package/dist/esm/automated-transfer-eligibility/selectors.js.map +0 -1
  670. package/dist/esm/automated-transfer-eligibility/types.js +0 -2
  671. package/dist/esm/automated-transfer-eligibility/types.js.map +0 -1
  672. package/dist/esm/launchpad-navigator/actions.js +0 -63
  673. package/dist/esm/launchpad-navigator/actions.js.map +0 -1
  674. package/dist/esm/launchpad-navigator/constants.js +0 -4
  675. package/dist/esm/launchpad-navigator/constants.js.map +0 -1
  676. package/dist/esm/launchpad-navigator/index.js +0 -15
  677. package/dist/esm/launchpad-navigator/index.js.map +0 -1
  678. package/dist/esm/launchpad-navigator/reducer.js +0 -22
  679. package/dist/esm/launchpad-navigator/reducer.js.map +0 -1
  680. package/dist/esm/launchpad-navigator/selectors.js +0 -3
  681. package/dist/esm/launchpad-navigator/selectors.js.map +0 -1
  682. package/dist/esm/queries/use-launchpad-navigator.js +0 -33
  683. package/dist/esm/queries/use-launchpad-navigator.js.map +0 -1
  684. package/dist/types/add-ons/hooks/use-add-on-display-cost.d.ts +0 -5
  685. package/dist/types/add-ons/hooks/use-add-on-display-cost.d.ts.map +0 -1
  686. package/dist/types/add-ons/lib/is-storage-addon-enabled.d.ts +0 -7
  687. package/dist/types/add-ons/lib/is-storage-addon-enabled.d.ts.map +0 -1
  688. package/dist/types/analyzer/actions.d.ts +0 -37
  689. package/dist/types/analyzer/actions.d.ts.map +0 -1
  690. package/dist/types/analyzer/constants.d.ts +0 -2
  691. package/dist/types/analyzer/constants.d.ts.map +0 -1
  692. package/dist/types/analyzer/index.d.ts +0 -38
  693. package/dist/types/analyzer/index.d.ts.map +0 -1
  694. package/dist/types/analyzer/reducers.d.ts +0 -9
  695. package/dist/types/analyzer/reducers.d.ts.map +0 -1
  696. package/dist/types/analyzer/selectors.d.ts +0 -7
  697. package/dist/types/analyzer/selectors.d.ts.map +0 -1
  698. package/dist/types/analyzer/types.d.ts +0 -35
  699. package/dist/types/analyzer/types.d.ts.map +0 -1
  700. package/dist/types/automated-transfer-eligibility/actions.d.ts +0 -10
  701. package/dist/types/automated-transfer-eligibility/actions.d.ts.map +0 -1
  702. package/dist/types/automated-transfer-eligibility/constants.d.ts +0 -11
  703. package/dist/types/automated-transfer-eligibility/constants.d.ts.map +0 -1
  704. package/dist/types/automated-transfer-eligibility/index.d.ts +0 -7
  705. package/dist/types/automated-transfer-eligibility/index.d.ts.map +0 -1
  706. package/dist/types/automated-transfer-eligibility/reducer.d.ts +0 -6
  707. package/dist/types/automated-transfer-eligibility/reducer.d.ts.map +0 -1
  708. package/dist/types/automated-transfer-eligibility/resolvers.d.ts +0 -7
  709. package/dist/types/automated-transfer-eligibility/resolvers.d.ts.map +0 -1
  710. package/dist/types/automated-transfer-eligibility/selectors.d.ts +0 -7
  711. package/dist/types/automated-transfer-eligibility/selectors.d.ts.map +0 -1
  712. package/dist/types/automated-transfer-eligibility/types.d.ts +0 -36
  713. package/dist/types/automated-transfer-eligibility/types.d.ts.map +0 -1
  714. package/dist/types/launchpad-navigator/actions.d.ts +0 -22
  715. package/dist/types/launchpad-navigator/actions.d.ts.map +0 -1
  716. package/dist/types/launchpad-navigator/constants.d.ts +0 -4
  717. package/dist/types/launchpad-navigator/constants.d.ts.map +0 -1
  718. package/dist/types/launchpad-navigator/index.d.ts +0 -4
  719. package/dist/types/launchpad-navigator/index.d.ts.map +0 -1
  720. package/dist/types/launchpad-navigator/reducer.d.ts +0 -9
  721. package/dist/types/launchpad-navigator/reducer.d.ts.map +0 -1
  722. package/dist/types/launchpad-navigator/selectors.d.ts +0 -4
  723. package/dist/types/launchpad-navigator/selectors.d.ts.map +0 -1
  724. package/dist/types/queries/use-launchpad-navigator.d.ts +0 -15
  725. package/dist/types/queries/use-launchpad-navigator.d.ts.map +0 -1
  726. package/src/add-ons/hooks/use-add-on-display-cost.ts +0 -28
  727. package/src/add-ons/lib/is-storage-addon-enabled.ts +0 -9
  728. package/src/analyzer/actions.ts +0 -50
  729. package/src/analyzer/constants.ts +0 -1
  730. package/src/analyzer/index.ts +0 -17
  731. package/src/analyzer/reducers.ts +0 -36
  732. package/src/analyzer/selectors.ts +0 -11
  733. package/src/analyzer/types.ts +0 -37
  734. package/src/automated-transfer-eligibility/actions.ts +0 -15
  735. package/src/automated-transfer-eligibility/constants.ts +0 -44
  736. package/src/automated-transfer-eligibility/index.ts +0 -25
  737. package/src/automated-transfer-eligibility/reducer.ts +0 -18
  738. package/src/automated-transfer-eligibility/resolvers.ts +0 -16
  739. package/src/automated-transfer-eligibility/selectors.ts +0 -94
  740. package/src/automated-transfer-eligibility/test/reducer.ts +0 -60
  741. package/src/automated-transfer-eligibility/types.ts +0 -45
  742. package/src/launchpad-navigator/actions.ts +0 -85
  743. package/src/launchpad-navigator/constants.ts +0 -4
  744. package/src/launchpad-navigator/index.ts +0 -16
  745. package/src/launchpad-navigator/reducer.ts +0 -35
  746. package/src/launchpad-navigator/selectors.ts +0 -6
  747. package/src/queries/use-launchpad-navigator.ts +0 -56
@@ -0,0 +1,109 @@
1
+ import {
2
+ PRODUCT_WPCOM_CUSTOM_DESIGN,
3
+ PRODUCT_WPCOM_UNLIMITED_THEMES,
4
+ PRODUCT_1GB_SPACE,
5
+ WPCOM_FEATURES_PREMIUM_THEMES_UNLIMITED,
6
+ WPCOM_FEATURES_CUSTOM_DESIGN,
7
+ } from '@automattic/calypso-products';
8
+ import i18n from 'i18n-calypso';
9
+ import {
10
+ ADD_ON_350GB_STORAGE,
11
+ ADD_ON_300GB_STORAGE,
12
+ ADD_ON_250GB_STORAGE,
13
+ ADD_ON_200GB_STORAGE,
14
+ ADD_ON_150GB_STORAGE,
15
+ ADD_ON_100GB_STORAGE,
16
+ ADD_ON_50GB_STORAGE,
17
+ ADD_ON_CUSTOM_DESIGN,
18
+ ADD_ON_UNLIMITED_THEMES,
19
+ } from './constants';
20
+ import customDesignIcon from './icons/custom-design';
21
+ import spaceUpgradeIcon from './icons/space-upgrade';
22
+ import unlimitedThemesIcon from './icons/unlimited-themes';
23
+ import type { AddOnMeta, AddOnSlug } from './types';
24
+
25
+ const defaultAddOns: AddOnMeta[] = [
26
+ {
27
+ addOnSlug: ADD_ON_UNLIMITED_THEMES,
28
+ productSlug: PRODUCT_WPCOM_UNLIMITED_THEMES,
29
+ featureSlugs: [ WPCOM_FEATURES_PREMIUM_THEMES_UNLIMITED ] as string[],
30
+ icon: unlimitedThemesIcon,
31
+ featured: true,
32
+ },
33
+ {
34
+ addOnSlug: ADD_ON_CUSTOM_DESIGN,
35
+ productSlug: PRODUCT_WPCOM_CUSTOM_DESIGN,
36
+ featureSlugs: [ WPCOM_FEATURES_CUSTOM_DESIGN ] as string[],
37
+ icon: customDesignIcon,
38
+ },
39
+ {
40
+ addOnSlug: ADD_ON_50GB_STORAGE,
41
+ productSlug: PRODUCT_1GB_SPACE,
42
+ featureSlugs: null,
43
+ icon: spaceUpgradeIcon,
44
+ quantity: 50,
45
+ name: i18n.translate( '50 GB Storage' ),
46
+ description: i18n.translate(
47
+ 'Make more space for high-quality photos, videos, and other media. '
48
+ ),
49
+ },
50
+ {
51
+ addOnSlug: ADD_ON_100GB_STORAGE,
52
+ productSlug: PRODUCT_1GB_SPACE,
53
+ featureSlugs: null,
54
+ icon: spaceUpgradeIcon,
55
+ quantity: 100,
56
+ name: i18n.translate( '100 GB Storage' ),
57
+ description: i18n.translate(
58
+ 'Take your site to the next level. Store all your media in one place without worrying about running out of space.'
59
+ ),
60
+ },
61
+ {
62
+ addOnSlug: ADD_ON_150GB_STORAGE,
63
+ productSlug: PRODUCT_1GB_SPACE,
64
+ featureSlugs: null,
65
+ icon: spaceUpgradeIcon,
66
+ quantity: 150,
67
+ name: i18n.translate( '%d GB Storage', { args: [ 150 ] } ),
68
+ },
69
+ {
70
+ addOnSlug: ADD_ON_200GB_STORAGE,
71
+ productSlug: PRODUCT_1GB_SPACE,
72
+ featureSlugs: null,
73
+ icon: spaceUpgradeIcon,
74
+ quantity: 200,
75
+ name: i18n.translate( '%d GB Storage', { args: [ 200 ] } ),
76
+ },
77
+ {
78
+ addOnSlug: ADD_ON_250GB_STORAGE,
79
+ productSlug: PRODUCT_1GB_SPACE,
80
+ featureSlugs: null,
81
+ icon: spaceUpgradeIcon,
82
+ quantity: 250,
83
+ name: i18n.translate( '%d GB Storage', { args: [ 250 ] } ),
84
+ },
85
+ {
86
+ addOnSlug: ADD_ON_300GB_STORAGE,
87
+ productSlug: PRODUCT_1GB_SPACE,
88
+ featureSlugs: null,
89
+ icon: spaceUpgradeIcon,
90
+ quantity: 300,
91
+ name: i18n.translate( '%d GB Storage', { args: [ 300 ] } ),
92
+ },
93
+ {
94
+ addOnSlug: ADD_ON_350GB_STORAGE,
95
+ productSlug: PRODUCT_1GB_SPACE,
96
+ featureSlugs: null,
97
+ icon: spaceUpgradeIcon,
98
+ quantity: 350,
99
+ name: i18n.translate( '%d GB Storage', { args: [ 350 ] } ),
100
+ },
101
+ ];
102
+
103
+ export const getAddOnsList = (): AddOnMeta[] => {
104
+ return defaultAddOns;
105
+ };
106
+
107
+ export const getAddOn = ( addOnSlug: AddOnSlug ): AddOnMeta | undefined => {
108
+ return getAddOnsList().find( ( addOn ) => addOn.addOnSlug === addOnSlug );
109
+ };
@@ -1,10 +1,15 @@
1
- export const STORAGE_LIMIT = 200;
1
+ export const STORAGE_LIMIT = 403;
2
2
 
3
3
  export const ADD_ON_JETPACK_AI_MONTHLY = 'jetpack_ai_monthly-add-on';
4
4
  export const ADD_ON_UNLIMITED_THEMES = 'unlimited_themes-add-on';
5
5
  export const ADD_ON_CUSTOM_DESIGN = 'custom_design-add-on';
6
6
  export const ADD_ON_50GB_STORAGE = '50gb-storage-add-on';
7
7
  export const ADD_ON_100GB_STORAGE = '100gb-storage-add-on';
8
+ export const ADD_ON_150GB_STORAGE = '150gb-storage-add-on';
9
+ export const ADD_ON_200GB_STORAGE = '200gb-storage-add-on';
10
+ export const ADD_ON_250GB_STORAGE = '250gb-storage-add-on';
11
+ export const ADD_ON_300GB_STORAGE = '300gb-storage-add-on';
12
+ export const ADD_ON_350GB_STORAGE = '350gb-storage-add-on';
8
13
 
9
14
  export const ADD_ONS = < const >[
10
15
  ADD_ON_JETPACK_AI_MONTHLY,
@@ -12,6 +17,19 @@ export const ADD_ONS = < const >[
12
17
  ADD_ON_CUSTOM_DESIGN,
13
18
  ADD_ON_50GB_STORAGE,
14
19
  ADD_ON_100GB_STORAGE,
20
+ ADD_ON_150GB_STORAGE,
21
+ ADD_ON_200GB_STORAGE,
22
+ ADD_ON_250GB_STORAGE,
23
+ ADD_ON_300GB_STORAGE,
24
+ ADD_ON_350GB_STORAGE,
15
25
  ];
16
26
 
17
- export const STORAGE_ADD_ONS = < const >[ ADD_ON_50GB_STORAGE, ADD_ON_100GB_STORAGE ];
27
+ export const STORAGE_ADD_ONS = < const >[
28
+ ADD_ON_50GB_STORAGE,
29
+ ADD_ON_100GB_STORAGE,
30
+ ADD_ON_150GB_STORAGE,
31
+ ADD_ON_200GB_STORAGE,
32
+ ADD_ON_250GB_STORAGE,
33
+ ADD_ON_300GB_STORAGE,
34
+ ADD_ON_350GB_STORAGE,
35
+ ];
@@ -1,68 +1,81 @@
1
- import formatCurrency from '@automattic/format-currency';
1
+ import { formatCurrency } from '@automattic/number-formatters';
2
2
  import { useMemo } from '@wordpress/element';
3
3
  import * as ProductsList from '../../products-list';
4
+ import type { AddOnMeta } from '../types';
4
5
 
5
- const useAddOnPrices = ( productSlug: ProductsList.StoreProductSlug, quantity?: number ) => {
6
- const productsList = ProductsList.useProducts( [ productSlug ] );
7
- const product = productsList.data?.[ productSlug ];
6
+ type AddOnPrices = {
7
+ [ key in string ]?: {
8
+ monthlyPrice: number;
9
+ yearlyPrice: number;
10
+ formattedMonthlyPrice: string;
11
+ formattedYearlyPrice: string;
12
+ currencyCode: string;
13
+ } | null;
14
+ };
15
+
16
+ export const createAddOnPriceKey = ( { productSlug, quantity }: AddOnMeta ) => {
17
+ return `${ productSlug }_${ quantity ?? 0 }`;
18
+ };
19
+
20
+ export const useAddOnPrices = ( addOnMetas: AddOnMeta[] ) => {
21
+ const productSlugs = useMemo(
22
+ () => addOnMetas.map( ( { productSlug } ) => productSlug ),
23
+ [ addOnMetas ]
24
+ );
25
+ const productsList = ProductsList.useProducts( productSlugs );
8
26
 
9
27
  return useMemo( () => {
10
- let cost = product?.costSmallestUnit;
28
+ return addOnMetas.reduce< AddOnPrices >( ( accum, addOnMeta ) => {
29
+ const { productSlug, quantity } = addOnMeta;
30
+ const product = productsList.data?.[ productSlug ];
31
+ let cost = product?.costSmallestUnit;
11
32
 
12
- if ( ! cost || ! product?.currencyCode ) {
13
- return null;
14
- }
33
+ if ( ! cost || ! product?.currencyCode ) {
34
+ return {
35
+ [ productSlug ]: null,
36
+ ...accum,
37
+ };
38
+ }
15
39
 
16
- // Finds the applicable tiered price for the quantity.
17
- const priceTier =
18
- quantity &&
19
- product?.priceTierList.find( ( tier ) => {
20
- if ( quantity >= tier.minimumUnits && quantity <= ( tier.maximumUnits ?? 0 ) ) {
21
- return tier;
22
- }
23
- } );
40
+ // Finds the applicable tiered price for the quantity.
41
+ const priceTier =
42
+ quantity &&
43
+ product?.priceTierList.find( ( tier ) => {
44
+ if ( quantity >= tier.minimumUnits && quantity <= ( tier.maximumUnits ?? 0 ) ) {
45
+ return tier;
46
+ }
47
+ } );
24
48
 
25
- if ( priceTier ) {
26
- cost = priceTier?.maximumPrice;
27
- }
49
+ if ( priceTier ) {
50
+ cost = priceTier?.maximumPrice;
51
+ }
28
52
 
29
- // Although memoized, it appears that add-on prices are unnecessarily recalculated dozens of
30
- // times when invoked as part of the PlansFeaturesMain component.
31
- //
32
- // When we format the cost before displaying it to the end user, the formatting library warns us
33
- // that it will round decimal values for smallest currency unit calculations. Because of the
34
- // unnecessary recalculations, this warning is repeated and floods the console.
35
- //
36
- // The ideal answer is to trace the root cause of the recalculations and prevent them, but after
37
- // taking a cursory look, it seems as if this will require deeper investigation. For now, because
38
- // we are always working with smallest currency units for add-ons, we explicitly round decimal add-on
39
- // monthly prices to suppress the warnings ( something that was already happening in the library ).
40
- //
41
- // Once https://github.com/Automattic/wp-calypso/issues/95416 is resolved, we can remove this rounding.
42
- const initialMonthlyPrice = cost / 12;
43
- let monthlyPrice = Number.isInteger( initialMonthlyPrice )
44
- ? initialMonthlyPrice
45
- : Math.round( initialMonthlyPrice );
46
- let yearlyPrice = cost;
53
+ let monthlyPrice = cost / 12;
54
+ let yearlyPrice = cost;
47
55
 
48
- if ( product?.term === 'month' ) {
49
- monthlyPrice = cost;
50
- yearlyPrice = cost * 12;
51
- }
56
+ if ( product?.term === 'month' ) {
57
+ monthlyPrice = cost;
58
+ yearlyPrice = cost * 12;
59
+ }
52
60
 
53
- return {
54
- monthlyPrice,
55
- yearlyPrice,
56
- formattedMonthlyPrice: formatCurrency( monthlyPrice, product?.currencyCode, {
57
- stripZeros: true,
58
- isSmallestUnit: true,
59
- } ),
60
- formattedYearlyPrice: formatCurrency( yearlyPrice, product?.currencyCode, {
61
- stripZeros: true,
62
- isSmallestUnit: true,
63
- } ),
64
- };
65
- }, [ product, quantity ] );
61
+ return {
62
+ [ createAddOnPriceKey( addOnMeta ) ]: {
63
+ monthlyPrice,
64
+ yearlyPrice,
65
+ formattedMonthlyPrice: formatCurrency( monthlyPrice, product?.currencyCode, {
66
+ stripZeros: true,
67
+ isSmallestUnit: true,
68
+ } ),
69
+ formattedYearlyPrice: formatCurrency( yearlyPrice, product?.currencyCode, {
70
+ stripZeros: true,
71
+ isSmallestUnit: true,
72
+ } ),
73
+ currencyCode: product?.currencyCode,
74
+ },
75
+ ...accum,
76
+ };
77
+ }, {} );
78
+ }, [ addOnMetas, productsList.data ] );
66
79
  };
67
80
 
68
81
  export default useAddOnPrices;
@@ -1,17 +1,22 @@
1
- import { useTranslate } from 'i18n-calypso';
1
+ import i18n, { useTranslate } from 'i18n-calypso';
2
2
  import * as Purchases from '../../purchases';
3
3
  import * as Site from '../../site';
4
4
  import type { AddOnMeta } from '../types';
5
5
 
6
6
  interface Props {
7
7
  addOnMeta: AddOnMeta;
8
- selectedSiteId?: number | null | undefined;
8
+ selectedSiteId?: number | null;
9
9
  }
10
10
 
11
+ type AddOnPurchaseStatus = {
12
+ available: boolean;
13
+ text?: ReturnType< typeof i18n.translate >;
14
+ };
15
+
11
16
  /**
12
17
  * Returns whether add-on product has been purchased or included in site plan.
13
18
  */
14
- const useAddOnPurchaseStatus = ( { addOnMeta, selectedSiteId }: Props ) => {
19
+ const useAddOnPurchaseStatus = ( { addOnMeta, selectedSiteId }: Props ): AddOnPurchaseStatus => {
15
20
  const translate = useTranslate();
16
21
  const matchingPurchases = Purchases.useSitePurchasesByProductSlug( {
17
22
  siteId: selectedSiteId,
@@ -22,15 +27,21 @@ const useAddOnPurchaseStatus = ( { addOnMeta, selectedSiteId }: Props ) => {
22
27
  ( slug ) => siteFeatures.data?.active?.includes( slug )
23
28
  );
24
29
 
25
- /*
26
- * Order matters below:
27
- * 1. Check if purchased first.
28
- * 2. Check if site feature next.
29
- * Reason: `siteFeatures.active` involves both purchases and plan features.
30
+ /**
31
+ * First, check if the add-on has a matching purchase. If storage add-on, check matching
32
+ * quantity. Secondly, check if the feature is active on the site. If there's no matching
33
+ * purchase but `siteFeatures.active` still contains the feature, it's because the feature is
34
+ * included in the plan.
30
35
  */
31
-
32
36
  if ( matchingPurchases ) {
33
- return { available: false, text: translate( 'Purchased' ) };
37
+ if ( addOnMeta.quantity ) {
38
+ const purchase: Purchases.Purchase = Object.values( matchingPurchases )[ 0 ];
39
+ if ( purchase.purchaseRenewalQuantity === addOnMeta.quantity ) {
40
+ return { available: false, text: translate( 'Purchased' ) };
41
+ }
42
+ } else {
43
+ return { available: false, text: translate( 'Purchased' ) };
44
+ }
34
45
  }
35
46
 
36
47
  if ( isSiteFeature ) {
@@ -1,274 +1,76 @@
1
- import {
2
- PRODUCT_JETPACK_AI_MONTHLY,
3
- PRODUCT_WPCOM_CUSTOM_DESIGN,
4
- PRODUCT_WPCOM_UNLIMITED_THEMES,
5
- PRODUCT_1GB_SPACE,
6
- WPCOM_FEATURES_AI_ASSISTANT,
7
- WPCOM_FEATURES_PREMIUM_THEMES_UNLIMITED,
8
- WPCOM_FEATURES_CUSTOM_DESIGN,
9
- } from '@automattic/calypso-products';
1
+ import { PRODUCT_1GB_SPACE } from '@automattic/calypso-products';
10
2
  import { useMemo } from '@wordpress/element';
11
3
  import { useTranslate } from 'i18n-calypso';
12
4
  import * as ProductsList from '../../products-list';
13
- import * as Purchases from '../../purchases';
14
5
  import * as Site from '../../site';
15
- import {
16
- ADD_ON_100GB_STORAGE,
17
- ADD_ON_50GB_STORAGE,
18
- ADD_ON_CUSTOM_DESIGN,
19
- ADD_ON_JETPACK_AI_MONTHLY,
20
- ADD_ON_UNLIMITED_THEMES,
21
- STORAGE_LIMIT,
22
- } from '../constants';
23
- import customDesignIcon from '../icons/custom-design';
24
- import jetpackAIIcon from '../icons/jetpack-ai';
25
- import spaceUpgradeIcon from '../icons/space-upgrade';
26
- import unlimitedThemesIcon from '../icons/unlimited-themes';
27
- import isStorageAddonEnabled from '../lib/is-storage-addon-enabled';
6
+ import { getAddOnsList } from '../add-ons-list';
28
7
  import useAddOnCheckoutLink from './use-add-on-checkout-link';
29
- import useAddOnDisplayCost from './use-add-on-display-cost';
30
- import useAddOnPrices from './use-add-on-prices';
8
+ import { createAddOnPriceKey, useAddOnPrices } from './use-add-on-prices';
31
9
  import type { AddOnMeta } from '../types';
32
10
 
33
- const useActiveAddOnsDefs = ( selectedSiteId: Props[ 'selectedSiteId' ] ) => {
34
- const translate = useTranslate();
35
- const checkoutLink = useAddOnCheckoutLink();
36
-
37
- /*
38
- * TODO: `useAddOnDisplayCost` be refactored instead to return an index of `{ [ slug ]: "display cost" }`
39
- */
40
- const displayCostJetpackAIMonthly = useAddOnDisplayCost( PRODUCT_JETPACK_AI_MONTHLY );
41
- const displayCostUnlimitedThemes = useAddOnDisplayCost( PRODUCT_WPCOM_UNLIMITED_THEMES );
42
- const displayCostCustomDesign = useAddOnDisplayCost( PRODUCT_WPCOM_CUSTOM_DESIGN );
43
- const displayCost1GBSpace50 = useAddOnDisplayCost( PRODUCT_1GB_SPACE, 50 );
44
- const displayCost1GBSpace100 = useAddOnDisplayCost( PRODUCT_1GB_SPACE, 100 );
45
-
46
- /*
47
- * TODO: `useAddOnPrices` be refactored instead to return an index of `{ [ slug ]: AddOnPrice }`
48
- */
49
- const addOnPrices1GBSpace50 = useAddOnPrices( PRODUCT_1GB_SPACE, 50 );
50
- const addOnPrices1GBSpace100 = useAddOnPrices( PRODUCT_1GB_SPACE, 100 );
51
-
52
- return useMemo(
53
- () =>
54
- [
55
- {
56
- addOnSlug: ADD_ON_JETPACK_AI_MONTHLY,
57
- productSlug: PRODUCT_JETPACK_AI_MONTHLY,
58
- featureSlugs: null,
59
- icon: jetpackAIIcon,
60
- overrides: null,
61
- displayCost: displayCostJetpackAIMonthly,
62
- featured: true,
63
- description: translate(
64
- 'Elevate your content with Jetpack AI, your AI assistant in the WordPress Editor. Save time writing with effortless content crafting, tone adjustment, title generation, grammar checks, translation, and more.'
65
- ),
66
- name: undefined,
67
- },
68
- {
69
- addOnSlug: ADD_ON_UNLIMITED_THEMES,
70
- productSlug: PRODUCT_WPCOM_UNLIMITED_THEMES,
71
- featureSlugs: [ WPCOM_FEATURES_PREMIUM_THEMES_UNLIMITED ] as string[],
72
- icon: unlimitedThemesIcon,
73
- overrides: null,
74
- displayCost: displayCostUnlimitedThemes,
75
- featured: true,
76
- name: undefined,
77
- description: undefined,
78
- },
79
- {
80
- addOnSlug: ADD_ON_CUSTOM_DESIGN,
81
- productSlug: PRODUCT_WPCOM_CUSTOM_DESIGN,
82
- featureSlugs: [ WPCOM_FEATURES_CUSTOM_DESIGN ] as string[],
83
- icon: customDesignIcon,
84
- overrides: null,
85
- displayCost: displayCostCustomDesign,
86
- featured: false,
87
- name: undefined,
88
- description: undefined,
89
- },
90
- {
91
- addOnSlug: ADD_ON_50GB_STORAGE,
92
- productSlug: PRODUCT_1GB_SPACE,
93
- featureSlugs: null,
94
- icon: spaceUpgradeIcon,
95
- quantity: 50,
96
- name: translate( '50 GB Storage' ),
97
- displayCost: displayCost1GBSpace50,
98
- prices: addOnPrices1GBSpace50,
99
- description: translate(
100
- 'Make more space for high-quality photos, videos, and other media. '
101
- ),
102
- featured: false,
103
- purchased: false,
104
- checkoutLink: checkoutLink( selectedSiteId ?? null, PRODUCT_1GB_SPACE, 50 ),
105
- },
106
- {
107
- addOnSlug: ADD_ON_100GB_STORAGE,
108
- productSlug: PRODUCT_1GB_SPACE,
109
- featureSlugs: null,
110
- icon: spaceUpgradeIcon,
111
- quantity: 100,
112
- name: translate( '100 GB Storage' ),
113
- displayCost: displayCost1GBSpace100,
114
- prices: addOnPrices1GBSpace100,
115
- description: translate(
116
- 'Take your site to the next level. Store all your media in one place without worrying about running out of space.'
117
- ),
118
- featured: false,
119
- purchased: false,
120
- checkoutLink: checkoutLink( selectedSiteId ?? null, PRODUCT_1GB_SPACE, 100 ),
121
- },
122
- ] as const,
123
- [
124
- addOnPrices1GBSpace100,
125
- addOnPrices1GBSpace50,
126
- checkoutLink,
127
- displayCost1GBSpace100,
128
- displayCost1GBSpace50,
129
- displayCostCustomDesign,
130
- displayCostJetpackAIMonthly,
131
- displayCostUnlimitedThemes,
132
- selectedSiteId,
133
- translate,
134
- ]
135
- );
136
- };
137
-
138
11
  interface Props {
139
12
  selectedSiteId?: number | null | undefined;
140
- enableStorageAddOns?: boolean;
141
13
  }
142
14
 
143
- const useAddOns = ( {
144
- selectedSiteId,
145
- enableStorageAddOns,
146
- }: Props = {} ): ( AddOnMeta | null )[] => {
147
- const activeAddOns = useActiveAddOnsDefs( selectedSiteId );
148
- const productSlugs = activeAddOns.map( ( item ) => item.productSlug );
15
+ const useAddOns = ( { selectedSiteId }: Props = {} ): ( AddOnMeta | null )[] => {
16
+ const translate = useTranslate();
17
+ const checkoutLink = useAddOnCheckoutLink();
18
+ const addOns = getAddOnsList();
19
+ const addOnPrices = useAddOnPrices( addOns );
20
+ const productSlugs = addOns.map( ( item ) => item.productSlug );
149
21
  const productsList = ProductsList.useProducts( productSlugs );
150
22
  const mediaStorage = Site.useSiteMediaStorage( { siteIdOrSlug: selectedSiteId } );
151
- const siteFeatures = Site.useSiteFeatures( { siteIdOrSlug: selectedSiteId } );
152
- const sitePurchases = Purchases.useSitePurchases( { siteId: selectedSiteId } );
153
- const spaceUpgradesPurchased = Purchases.useSitePurchasesByProductSlug( {
154
- siteId: selectedSiteId,
155
- productSlug: PRODUCT_1GB_SPACE,
156
- } );
157
23
 
158
24
  return useMemo(
159
25
  () =>
160
- activeAddOns
161
- .filter( ( addOn ) => {
162
- /**
163
- * Remove the Jetpack AI add-on if the site already supports the feature.
164
- * TODO: Potentially another candidate for migrating to `use-add-on-purchase-status`.
165
- * The intention is to have a single source of truth. The add-on can be removed from display
166
- * instead with an appropriate flag, but kept in list of add-ons.
167
- */
168
- if (
169
- addOn.productSlug === PRODUCT_JETPACK_AI_MONTHLY &&
170
- siteFeatures.data?.active?.includes( WPCOM_FEATURES_AI_ASSISTANT )
171
- ) {
172
- return false;
173
- }
174
-
175
- return true;
176
- } )
177
- .map( ( addOn ) => {
178
- const product = productsList.data?.[ addOn.productSlug ];
179
- const name = addOn.name ? addOn.name : product?.name || '';
180
- const description = addOn.description ?? ( product?.description || '' );
181
-
182
- /**
183
- * If siteFeatures, sitePurchases, or productsList are still loading, show the add-on as loading.
184
- * TODO: Potentially another candidate for migrating to `use-add-on-purchase-status`, and attach
185
- * that to the add-on's meta if need to.
186
- */
187
- if ( siteFeatures.isLoading || sitePurchases.isLoading || productsList.isLoading ) {
188
- return {
189
- ...addOn,
190
- name,
191
- description,
192
- isLoading: true,
193
- };
194
- }
195
-
196
- /**
197
- * If the product is not found in the products list, remove the add-on.
198
- * This should signal a wrong slug or a product that doesn't exist i.e. some sort of Bug.
199
- * (not sure if add-on without a connected product is a valid use case)
200
- */
201
- if ( ! product ) {
202
- return null;
203
- }
26
+ addOns.map( ( addOnMeta ) => {
27
+ const { productSlug, quantity } = addOnMeta;
28
+ const key = createAddOnPriceKey( addOnMeta );
204
29
 
205
- /**
206
- * If it's a storage add-on.
207
- */
208
- if ( addOn.productSlug === PRODUCT_1GB_SPACE ) {
209
- // if storage add-ons are not enabled in the config or disabled via hook prop, remove them
210
- if (
211
- ( 'boolean' === typeof enableStorageAddOns && ! enableStorageAddOns ) ||
212
- ( ! isStorageAddonEnabled() && 'boolean' !== typeof enableStorageAddOns )
213
- ) {
214
- return null;
215
- }
30
+ // TODO: can we not specify the product slug here for the storage add-on?
31
+ const isLoading =
32
+ productsList.isLoading || ( productSlug === PRODUCT_1GB_SPACE && mediaStorage.isLoading );
33
+ const product = productsList.data?.[ productSlug ];
34
+ const name = addOnMeta.name ? addOnMeta.name : product?.name || '';
35
+ const description = addOnMeta.description ?? ( product?.description || '' );
216
36
 
217
- /**
218
- * If storage add-on is already purchased.
219
- * TODO: Consider migrating this part to `use-add-on-purchase-status` and attach
220
- * that to the add-on's meta if need to. The intention is to have a single source of truth.
221
- */
222
- const isStorageAddOnPurchased = Object.values( spaceUpgradesPurchased ?? [] ).some(
223
- ( purchase ) => purchase.purchaseRenewalQuantity === addOn.quantity
224
- );
225
- if ( isStorageAddOnPurchased ) {
226
- return {
227
- ...addOn,
228
- name,
229
- description,
230
- purchased: true,
231
- };
232
- }
37
+ /**
38
+ * If the product is not found in the products list, remove the add-on.
39
+ * This should signal a wrong slug or a product that doesn't exist i.e. some sort of Bug.
40
+ * (not sure if add-on without a connected product is a valid use case)
41
+ */
42
+ if ( ! product ) {
43
+ return null;
44
+ }
233
45
 
234
- /**
235
- * If the current storage add-on option is greater than the available upgrade.
236
- * TODO: This is also potentially a candidate for `use-add-on-purchase-status`.
237
- */
238
- const currentMaxStorage = mediaStorage.data?.maxStorageBytes
239
- ? mediaStorage.data.maxStorageBytes / Math.pow( 1024, 3 )
240
- : 0;
241
- const availableStorageUpgrade = STORAGE_LIMIT - currentMaxStorage;
242
- if ( ( addOn.quantity ?? 0 ) > availableStorageUpgrade ) {
243
- return {
244
- ...addOn,
245
- name,
246
- description,
247
- exceedsSiteStorageLimits: true,
248
- };
249
- }
250
- }
46
+ const prices = addOnPrices[ key ];
47
+ const formattedCost = prices?.formattedMonthlyPrice || '';
48
+ const displayCost =
49
+ product.term === 'month'
50
+ ? /* Translators: %(formattedCost)s: monthly price formatted with currency */
51
+ translate( '%(formattedCost)s/month, billed monthly', {
52
+ args: {
53
+ formattedCost,
54
+ },
55
+ } )
56
+ : /* Translators: %(monthlyCost)s: monthly price formatted with currency */
57
+ translate( '%(monthlyCost)s/month, billed yearly', {
58
+ args: {
59
+ monthlyCost: formattedCost,
60
+ },
61
+ } );
251
62
 
252
- /**
253
- * Regular product add-ons.
254
- */
255
- return {
256
- ...addOn,
257
- name,
258
- description,
259
- };
260
- } ),
261
- [
262
- activeAddOns,
263
- enableStorageAddOns,
264
- mediaStorage.data?.maxStorageBytes,
265
- productsList.data,
266
- productsList.isLoading,
267
- siteFeatures.data?.active,
268
- siteFeatures.isLoading,
269
- sitePurchases.isLoading,
270
- spaceUpgradesPurchased,
271
- ]
63
+ return {
64
+ ...addOnMeta,
65
+ name,
66
+ description,
67
+ isLoading,
68
+ prices,
69
+ displayCost,
70
+ checkoutLink: checkoutLink( selectedSiteId ?? null, productSlug, quantity ),
71
+ };
72
+ } ),
73
+ [ addOnPrices, productsList.data, productsList.isLoading, checkoutLink, selectedSiteId ]
272
74
  );
273
75
  };
274
76