@automattic/plans-grid-next 1.0.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 (619) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/__mocks__/wpcom-proxy-request.js +17 -0
  4. package/dist/cjs/__mocks__/wpcom-proxy-request.js.map +1 -0
  5. package/dist/cjs/_media-queries.scss +14 -0
  6. package/dist/cjs/_mixins.scss +15 -0
  7. package/dist/cjs/_shared.scss +174 -0
  8. package/dist/cjs/components/comparison-grid/index.js +527 -0
  9. package/dist/cjs/components/comparison-grid/index.js.map +1 -0
  10. package/dist/cjs/components/comparison-grid/index.stories.js +74 -0
  11. package/dist/cjs/components/comparison-grid/index.stories.js.map +1 -0
  12. package/dist/cjs/components/comparison-grid/style.scss +318 -0
  13. package/dist/cjs/components/dropdown-option.js +33 -0
  14. package/dist/cjs/components/dropdown-option.js.map +1 -0
  15. package/dist/cjs/components/features-grid/billing-timeframes.js +15 -0
  16. package/dist/cjs/components/features-grid/billing-timeframes.js.map +1 -0
  17. package/dist/cjs/components/features-grid/client-logo-list/client-list.js +106 -0
  18. package/dist/cjs/components/features-grid/client-logo-list/client-list.js.map +1 -0
  19. package/dist/cjs/components/features-grid/client-logo-list/index.js +17 -0
  20. package/dist/cjs/components/features-grid/client-logo-list/index.js.map +1 -0
  21. package/dist/cjs/components/features-grid/client-logo-list/style.scss +52 -0
  22. package/dist/cjs/components/features-grid/enterprise-features.js +41 -0
  23. package/dist/cjs/components/features-grid/enterprise-features.js.map +1 -0
  24. package/dist/cjs/components/features-grid/index.js +130 -0
  25. package/dist/cjs/components/features-grid/index.js.map +1 -0
  26. package/dist/cjs/components/features-grid/index.stories.js +112 -0
  27. package/dist/cjs/components/features-grid/index.stories.js.map +1 -0
  28. package/dist/cjs/components/features-grid/mobile-free-domain.js +25 -0
  29. package/dist/cjs/components/features-grid/mobile-free-domain.js.map +1 -0
  30. package/dist/cjs/components/features-grid/plan-features-list.js +56 -0
  31. package/dist/cjs/components/features-grid/plan-features-list.js.map +1 -0
  32. package/dist/cjs/components/features-grid/plan-headers.js +15 -0
  33. package/dist/cjs/components/features-grid/plan-headers.js.map +1 -0
  34. package/dist/cjs/components/features-grid/plan-logos.js +12 -0
  35. package/dist/cjs/components/features-grid/plan-logos.js.map +1 -0
  36. package/dist/cjs/components/features-grid/plan-prices.js +14 -0
  37. package/dist/cjs/components/features-grid/plan-prices.js.map +1 -0
  38. package/dist/cjs/components/features-grid/plan-tagline.js +12 -0
  39. package/dist/cjs/components/features-grid/plan-tagline.js.map +1 -0
  40. package/dist/cjs/components/features-grid/previous-features-included-title.js +36 -0
  41. package/dist/cjs/components/features-grid/previous-features-included-title.js.map +1 -0
  42. package/dist/cjs/components/features-grid/spotlight-plan.js +24 -0
  43. package/dist/cjs/components/features-grid/spotlight-plan.js.map +1 -0
  44. package/dist/cjs/components/features-grid/spotlight-plan.scss +5 -0
  45. package/dist/cjs/components/features-grid/style.scss +630 -0
  46. package/dist/cjs/components/features-grid/table.js +38 -0
  47. package/dist/cjs/components/features-grid/table.js.map +1 -0
  48. package/dist/cjs/components/features-grid/top-buttons.js +15 -0
  49. package/dist/cjs/components/features-grid/top-buttons.js.map +1 -0
  50. package/dist/cjs/components/features.js +72 -0
  51. package/dist/cjs/components/features.js.map +1 -0
  52. package/dist/cjs/components/item.js +9 -0
  53. package/dist/cjs/components/item.js.map +1 -0
  54. package/dist/cjs/components/plan-button/index.js +21 -0
  55. package/dist/cjs/components/plan-button/index.js.map +1 -0
  56. package/dist/cjs/components/plan-button/style.scss +179 -0
  57. package/dist/cjs/components/plan-div-td-container.js +9 -0
  58. package/dist/cjs/components/plan-div-td-container.js.map +1 -0
  59. package/dist/cjs/components/plan-logo.js +45 -0
  60. package/dist/cjs/components/plan-logo.js.map +1 -0
  61. package/dist/cjs/components/plan-type-selector/components/interval-type-dropdown.js +39 -0
  62. package/dist/cjs/components/plan-type-selector/components/interval-type-dropdown.js.map +1 -0
  63. package/dist/cjs/components/plan-type-selector/components/interval-type-selector.js +12 -0
  64. package/dist/cjs/components/plan-type-selector/components/interval-type-selector.js.map +1 -0
  65. package/dist/cjs/components/plan-type-selector/components/interval-type-toggle.js +55 -0
  66. package/dist/cjs/components/plan-type-selector/components/interval-type-toggle.js.map +1 -0
  67. package/dist/cjs/components/plan-type-selector/components/popup-messages.js +108 -0
  68. package/dist/cjs/components/plan-type-selector/components/popup-messages.js.map +1 -0
  69. package/dist/cjs/components/plan-type-selector/hooks/use-interval-options.js +56 -0
  70. package/dist/cjs/components/plan-type-selector/hooks/use-interval-options.js.map +1 -0
  71. package/dist/cjs/components/plan-type-selector/hooks/use-max-discount.js +45 -0
  72. package/dist/cjs/components/plan-type-selector/hooks/use-max-discount.js.map +1 -0
  73. package/dist/cjs/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.js +68 -0
  74. package/dist/cjs/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.js.map +1 -0
  75. package/dist/cjs/components/plan-type-selector/index.js +27 -0
  76. package/dist/cjs/components/plan-type-selector/index.js.map +1 -0
  77. package/dist/cjs/components/plan-type-selector/style.scss +196 -0
  78. package/dist/cjs/components/plans-2023-tooltip.js +46 -0
  79. package/dist/cjs/components/plans-2023-tooltip.js.map +1 -0
  80. package/dist/cjs/components/popular-badge.js +16 -0
  81. package/dist/cjs/components/popular-badge.js.map +1 -0
  82. package/dist/cjs/components/shared/action-button/index.js +91 -0
  83. package/dist/cjs/components/shared/action-button/index.js.map +1 -0
  84. package/dist/cjs/components/shared/action-button/style.scss +12 -0
  85. package/dist/cjs/components/shared/billing-timeframe/index.js +58 -0
  86. package/dist/cjs/components/shared/billing-timeframe/index.js.map +1 -0
  87. package/dist/cjs/components/shared/header-price/header-price-context.js +14 -0
  88. package/dist/cjs/components/shared/header-price/header-price-context.js.map +1 -0
  89. package/dist/cjs/components/shared/header-price/index.js +102 -0
  90. package/dist/cjs/components/shared/header-price/index.js.map +1 -0
  91. package/dist/cjs/components/shared/header-price/style.scss +112 -0
  92. package/dist/cjs/components/shared/plan-pill/index.js +6 -0
  93. package/dist/cjs/components/shared/plan-pill/index.js.map +1 -0
  94. package/dist/cjs/components/shared/plan-pill/style.scss +30 -0
  95. package/dist/cjs/components/shared/storage/components/plan-storage.js +28 -0
  96. package/dist/cjs/components/shared/storage/components/plan-storage.js.map +1 -0
  97. package/dist/cjs/components/shared/storage/components/storage-dropdown.js +96 -0
  98. package/dist/cjs/components/shared/storage/components/storage-dropdown.js.map +1 -0
  99. package/dist/cjs/components/shared/storage/components/storage-feature-label.js +40 -0
  100. package/dist/cjs/components/shared/storage/components/storage-feature-label.js.map +1 -0
  101. package/dist/cjs/components/shared/storage/constants.js +6 -0
  102. package/dist/cjs/components/shared/storage/constants.js.map +1 -0
  103. package/dist/cjs/components/shared/storage/hooks/use-default-storage-option.js +26 -0
  104. package/dist/cjs/components/shared/storage/hooks/use-default-storage-option.js.map +1 -0
  105. package/dist/cjs/components/shared/storage/hooks/use-plan-storage.js +29 -0
  106. package/dist/cjs/components/shared/storage/hooks/use-plan-storage.js.map +1 -0
  107. package/dist/cjs/components/shared/storage/hooks/use-purchased-storage-add-on.js +51 -0
  108. package/dist/cjs/components/shared/storage/hooks/use-purchased-storage-add-on.js.map +1 -0
  109. package/dist/cjs/components/shared/storage/hooks/use-storage-string.js +13 -0
  110. package/dist/cjs/components/shared/storage/hooks/use-storage-string.js.map +1 -0
  111. package/dist/cjs/components/shared/storage/index.js +14 -0
  112. package/dist/cjs/components/shared/storage/index.js.map +1 -0
  113. package/dist/cjs/components/sticky-container.js +74 -0
  114. package/dist/cjs/components/sticky-container.js.map +1 -0
  115. package/dist/cjs/constants.js +11 -0
  116. package/dist/cjs/constants.js.map +1 -0
  117. package/dist/cjs/css-mixins.js +14 -0
  118. package/dist/cjs/css-mixins.js.map +1 -0
  119. package/dist/cjs/fixtures/plans.js +1542 -0
  120. package/dist/cjs/fixtures/plans.js.map +1 -0
  121. package/dist/cjs/fixtures/sites-plans.js +458 -0
  122. package/dist/cjs/fixtures/sites-plans.js.map +1 -0
  123. package/dist/cjs/fixtures/sites-purchases.js +133 -0
  124. package/dist/cjs/fixtures/sites-purchases.js.map +1 -0
  125. package/dist/cjs/grid-context.js +40 -0
  126. package/dist/cjs/grid-context.js.map +1 -0
  127. package/dist/cjs/hooks/data-store/is-popular-plan.js +9 -0
  128. package/dist/cjs/hooks/data-store/is-popular-plan.js.map +1 -0
  129. package/dist/cjs/hooks/data-store/types.js +3 -0
  130. package/dist/cjs/hooks/data-store/types.js.map +1 -0
  131. package/dist/cjs/hooks/data-store/use-grid-plan-for-spotlight.js +18 -0
  132. package/dist/cjs/hooks/data-store/use-grid-plan-for-spotlight.js.map +1 -0
  133. package/dist/cjs/hooks/data-store/use-grid-plans-for-comparison-grid.js +55 -0
  134. package/dist/cjs/hooks/data-store/use-grid-plans-for-comparison-grid.js.map +1 -0
  135. package/dist/cjs/hooks/data-store/use-grid-plans-for-features-grid.js +56 -0
  136. package/dist/cjs/hooks/data-store/use-grid-plans-for-features-grid.js.map +1 -0
  137. package/dist/cjs/hooks/data-store/use-grid-plans.js +254 -0
  138. package/dist/cjs/hooks/data-store/use-grid-plans.js.map +1 -0
  139. package/dist/cjs/hooks/data-store/use-highlight-labels.js +60 -0
  140. package/dist/cjs/hooks/data-store/use-highlight-labels.js.map +1 -0
  141. package/dist/cjs/hooks/data-store/use-highlighted-features.js +35 -0
  142. package/dist/cjs/hooks/data-store/use-highlighted-features.js.map +1 -0
  143. package/dist/cjs/hooks/data-store/use-plan-billing-description.js +216 -0
  144. package/dist/cjs/hooks/data-store/use-plan-billing-description.js.map +1 -0
  145. package/dist/cjs/hooks/data-store/use-plan-features-for-grid-plans.js +133 -0
  146. package/dist/cjs/hooks/data-store/use-plan-features-for-grid-plans.js.map +1 -0
  147. package/dist/cjs/hooks/data-store/use-plans-from-types.js +30 -0
  148. package/dist/cjs/hooks/data-store/use-plans-from-types.js.map +1 -0
  149. package/dist/cjs/hooks/data-store/use-restructured-plan-features-for-comparison-grid.js +90 -0
  150. package/dist/cjs/hooks/data-store/use-restructured-plan-features-for-comparison-grid.js.map +1 -0
  151. package/dist/cjs/hooks/use-grid-size.js +33 -0
  152. package/dist/cjs/hooks/use-grid-size.js.map +1 -0
  153. package/dist/cjs/hooks/use-highlight-adjacency-matrix.js +31 -0
  154. package/dist/cjs/hooks/use-highlight-adjacency-matrix.js.map +1 -0
  155. package/dist/cjs/hooks/use-is-large-currency.js +69 -0
  156. package/dist/cjs/hooks/use-is-large-currency.js.map +1 -0
  157. package/dist/cjs/hooks/use-manage-tooltip-toggle.js +29 -0
  158. package/dist/cjs/hooks/use-manage-tooltip-toggle.js.map +1 -0
  159. package/dist/cjs/hooks/use-plan-pricing-info-from-grid-plans.js +17 -0
  160. package/dist/cjs/hooks/use-plan-pricing-info-from-grid-plans.js.map +1 -0
  161. package/dist/cjs/index.js +36 -0
  162. package/dist/cjs/index.js.map +1 -0
  163. package/dist/cjs/lib/filter-unused-features-object.js +19 -0
  164. package/dist/cjs/lib/filter-unused-features-object.js.map +1 -0
  165. package/dist/cjs/lib/get-plan-features-object.js +11 -0
  166. package/dist/cjs/lib/get-plan-features-object.js.map +1 -0
  167. package/dist/cjs/lib/get-plan-pricing-info-from-grid-plans.js +16 -0
  168. package/dist/cjs/lib/get-plan-pricing-info-from-grid-plans.js.map +1 -0
  169. package/dist/cjs/lib/is-same-plan.js +12 -0
  170. package/dist/cjs/lib/is-same-plan.js.map +1 -0
  171. package/dist/cjs/lib/sort-plan-properties.js +39 -0
  172. package/dist/cjs/lib/sort-plan-properties.js.map +1 -0
  173. package/dist/cjs/lib/touch-detect/index.js +20 -0
  174. package/dist/cjs/lib/touch-detect/index.js.map +1 -0
  175. package/dist/cjs/types.js +3 -0
  176. package/dist/cjs/types.js.map +1 -0
  177. package/dist/esm/__mocks__/wpcom-proxy-request.js +11 -0
  178. package/dist/esm/__mocks__/wpcom-proxy-request.js.map +1 -0
  179. package/dist/esm/_media-queries.scss +14 -0
  180. package/dist/esm/_mixins.scss +15 -0
  181. package/dist/esm/_shared.scss +174 -0
  182. package/dist/esm/components/comparison-grid/index.js +524 -0
  183. package/dist/esm/components/comparison-grid/index.js.map +1 -0
  184. package/dist/esm/components/comparison-grid/index.stories.js +71 -0
  185. package/dist/esm/components/comparison-grid/index.stories.js.map +1 -0
  186. package/dist/esm/components/comparison-grid/style.scss +318 -0
  187. package/dist/esm/components/dropdown-option.js +30 -0
  188. package/dist/esm/components/dropdown-option.js.map +1 -0
  189. package/dist/esm/components/features-grid/billing-timeframes.js +12 -0
  190. package/dist/esm/components/features-grid/billing-timeframes.js.map +1 -0
  191. package/dist/esm/components/features-grid/client-logo-list/client-list.js +104 -0
  192. package/dist/esm/components/features-grid/client-logo-list/client-list.js.map +1 -0
  193. package/dist/esm/components/features-grid/client-logo-list/index.js +14 -0
  194. package/dist/esm/components/features-grid/client-logo-list/index.js.map +1 -0
  195. package/dist/esm/components/features-grid/client-logo-list/style.scss +52 -0
  196. package/dist/esm/components/features-grid/enterprise-features.js +38 -0
  197. package/dist/esm/components/features-grid/enterprise-features.js.map +1 -0
  198. package/dist/esm/components/features-grid/index.js +127 -0
  199. package/dist/esm/components/features-grid/index.js.map +1 -0
  200. package/dist/esm/components/features-grid/index.stories.js +109 -0
  201. package/dist/esm/components/features-grid/index.stories.js.map +1 -0
  202. package/dist/esm/components/features-grid/mobile-free-domain.js +23 -0
  203. package/dist/esm/components/features-grid/mobile-free-domain.js.map +1 -0
  204. package/dist/esm/components/features-grid/plan-features-list.js +53 -0
  205. package/dist/esm/components/features-grid/plan-features-list.js.map +1 -0
  206. package/dist/esm/components/features-grid/plan-headers.js +12 -0
  207. package/dist/esm/components/features-grid/plan-headers.js.map +1 -0
  208. package/dist/esm/components/features-grid/plan-logos.js +9 -0
  209. package/dist/esm/components/features-grid/plan-logos.js.map +1 -0
  210. package/dist/esm/components/features-grid/plan-prices.js +11 -0
  211. package/dist/esm/components/features-grid/plan-prices.js.map +1 -0
  212. package/dist/esm/components/features-grid/plan-tagline.js +9 -0
  213. package/dist/esm/components/features-grid/plan-tagline.js.map +1 -0
  214. package/dist/esm/components/features-grid/previous-features-included-title.js +33 -0
  215. package/dist/esm/components/features-grid/previous-features-included-title.js.map +1 -0
  216. package/dist/esm/components/features-grid/spotlight-plan.js +21 -0
  217. package/dist/esm/components/features-grid/spotlight-plan.js.map +1 -0
  218. package/dist/esm/components/features-grid/spotlight-plan.scss +5 -0
  219. package/dist/esm/components/features-grid/style.scss +630 -0
  220. package/dist/esm/components/features-grid/table.js +35 -0
  221. package/dist/esm/components/features-grid/table.js.map +1 -0
  222. package/dist/esm/components/features-grid/top-buttons.js +12 -0
  223. package/dist/esm/components/features-grid/top-buttons.js.map +1 -0
  224. package/dist/esm/components/features.js +69 -0
  225. package/dist/esm/components/features.js.map +1 -0
  226. package/dist/esm/components/item.js +5 -0
  227. package/dist/esm/components/item.js.map +1 -0
  228. package/dist/esm/components/plan-button/index.js +18 -0
  229. package/dist/esm/components/plan-button/index.js.map +1 -0
  230. package/dist/esm/components/plan-button/style.scss +179 -0
  231. package/dist/esm/components/plan-div-td-container.js +7 -0
  232. package/dist/esm/components/plan-div-td-container.js.map +1 -0
  233. package/dist/esm/components/plan-logo.js +42 -0
  234. package/dist/esm/components/plan-logo.js.map +1 -0
  235. package/dist/esm/components/plan-type-selector/components/interval-type-dropdown.js +34 -0
  236. package/dist/esm/components/plan-type-selector/components/interval-type-dropdown.js.map +1 -0
  237. package/dist/esm/components/plan-type-selector/components/interval-type-selector.js +8 -0
  238. package/dist/esm/components/plan-type-selector/components/interval-type-selector.js.map +1 -0
  239. package/dist/esm/components/plan-type-selector/components/interval-type-toggle.js +50 -0
  240. package/dist/esm/components/plan-type-selector/components/interval-type-toggle.js.map +1 -0
  241. package/dist/esm/components/plan-type-selector/components/popup-messages.js +105 -0
  242. package/dist/esm/components/plan-type-selector/components/popup-messages.js.map +1 -0
  243. package/dist/esm/components/plan-type-selector/hooks/use-interval-options.js +52 -0
  244. package/dist/esm/components/plan-type-selector/hooks/use-interval-options.js.map +1 -0
  245. package/dist/esm/components/plan-type-selector/hooks/use-max-discount.js +42 -0
  246. package/dist/esm/components/plan-type-selector/hooks/use-max-discount.js.map +1 -0
  247. package/dist/esm/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.js +65 -0
  248. package/dist/esm/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.js.map +1 -0
  249. package/dist/esm/components/plan-type-selector/index.js +24 -0
  250. package/dist/esm/components/plan-type-selector/index.js.map +1 -0
  251. package/dist/esm/components/plan-type-selector/style.scss +196 -0
  252. package/dist/esm/components/plans-2023-tooltip.js +41 -0
  253. package/dist/esm/components/plans-2023-tooltip.js.map +1 -0
  254. package/dist/esm/components/popular-badge.js +13 -0
  255. package/dist/esm/components/popular-badge.js.map +1 -0
  256. package/dist/esm/components/shared/action-button/index.js +88 -0
  257. package/dist/esm/components/shared/action-button/index.js.map +1 -0
  258. package/dist/esm/components/shared/action-button/style.scss +12 -0
  259. package/dist/esm/components/shared/billing-timeframe/index.js +55 -0
  260. package/dist/esm/components/shared/billing-timeframe/index.js.map +1 -0
  261. package/dist/esm/components/shared/header-price/header-price-context.js +10 -0
  262. package/dist/esm/components/shared/header-price/header-price-context.js.map +1 -0
  263. package/dist/esm/components/shared/header-price/index.js +99 -0
  264. package/dist/esm/components/shared/header-price/index.js.map +1 -0
  265. package/dist/esm/components/shared/header-price/style.scss +112 -0
  266. package/dist/esm/components/shared/plan-pill/index.js +4 -0
  267. package/dist/esm/components/shared/plan-pill/index.js.map +1 -0
  268. package/dist/esm/components/shared/plan-pill/style.scss +30 -0
  269. package/dist/esm/components/shared/storage/components/plan-storage.js +25 -0
  270. package/dist/esm/components/shared/storage/components/plan-storage.js.map +1 -0
  271. package/dist/esm/components/shared/storage/components/storage-dropdown.js +93 -0
  272. package/dist/esm/components/shared/storage/components/storage-dropdown.js.map +1 -0
  273. package/dist/esm/components/shared/storage/components/storage-feature-label.js +37 -0
  274. package/dist/esm/components/shared/storage/components/storage-feature-label.js.map +1 -0
  275. package/dist/esm/components/shared/storage/constants.js +3 -0
  276. package/dist/esm/components/shared/storage/constants.js.map +1 -0
  277. package/dist/esm/components/shared/storage/hooks/use-default-storage-option.js +22 -0
  278. package/dist/esm/components/shared/storage/hooks/use-default-storage-option.js.map +1 -0
  279. package/dist/esm/components/shared/storage/hooks/use-plan-storage.js +27 -0
  280. package/dist/esm/components/shared/storage/hooks/use-plan-storage.js.map +1 -0
  281. package/dist/esm/components/shared/storage/hooks/use-purchased-storage-add-on.js +48 -0
  282. package/dist/esm/components/shared/storage/hooks/use-purchased-storage-add-on.js.map +1 -0
  283. package/dist/esm/components/shared/storage/hooks/use-storage-string.js +11 -0
  284. package/dist/esm/components/shared/storage/hooks/use-storage-string.js.map +1 -0
  285. package/dist/esm/components/shared/storage/index.js +9 -0
  286. package/dist/esm/components/shared/storage/index.js.map +1 -0
  287. package/dist/esm/components/sticky-container.js +69 -0
  288. package/dist/esm/components/sticky-container.js.map +1 -0
  289. package/dist/esm/constants.js +8 -0
  290. package/dist/esm/constants.js.map +1 -0
  291. package/dist/esm/css-mixins.js +10 -0
  292. package/dist/esm/css-mixins.js.map +1 -0
  293. package/dist/esm/fixtures/plans.js +1540 -0
  294. package/dist/esm/fixtures/plans.js.map +1 -0
  295. package/dist/esm/fixtures/sites-plans.js +456 -0
  296. package/dist/esm/fixtures/sites-plans.js.map +1 -0
  297. package/dist/esm/fixtures/sites-purchases.js +131 -0
  298. package/dist/esm/fixtures/sites-purchases.js.map +1 -0
  299. package/dist/esm/grid-context.js +36 -0
  300. package/dist/esm/grid-context.js.map +1 -0
  301. package/dist/esm/hooks/data-store/is-popular-plan.js +5 -0
  302. package/dist/esm/hooks/data-store/is-popular-plan.js.map +1 -0
  303. package/dist/esm/hooks/data-store/types.js +2 -0
  304. package/dist/esm/hooks/data-store/types.js.map +1 -0
  305. package/dist/esm/hooks/data-store/use-grid-plan-for-spotlight.js +16 -0
  306. package/dist/esm/hooks/data-store/use-grid-plan-for-spotlight.js.map +1 -0
  307. package/dist/esm/hooks/data-store/use-grid-plans-for-comparison-grid.js +52 -0
  308. package/dist/esm/hooks/data-store/use-grid-plans-for-comparison-grid.js.map +1 -0
  309. package/dist/esm/hooks/data-store/use-grid-plans-for-features-grid.js +53 -0
  310. package/dist/esm/hooks/data-store/use-grid-plans-for-features-grid.js.map +1 -0
  311. package/dist/esm/hooks/data-store/use-grid-plans.js +249 -0
  312. package/dist/esm/hooks/data-store/use-grid-plans.js.map +1 -0
  313. package/dist/esm/hooks/data-store/use-highlight-labels.js +58 -0
  314. package/dist/esm/hooks/data-store/use-highlight-labels.js.map +1 -0
  315. package/dist/esm/hooks/data-store/use-highlighted-features.js +33 -0
  316. package/dist/esm/hooks/data-store/use-highlighted-features.js.map +1 -0
  317. package/dist/esm/hooks/data-store/use-plan-billing-description.js +213 -0
  318. package/dist/esm/hooks/data-store/use-plan-billing-description.js.map +1 -0
  319. package/dist/esm/hooks/data-store/use-plan-features-for-grid-plans.js +130 -0
  320. package/dist/esm/hooks/data-store/use-plan-features-for-grid-plans.js.map +1 -0
  321. package/dist/esm/hooks/data-store/use-plans-from-types.js +27 -0
  322. package/dist/esm/hooks/data-store/use-plans-from-types.js.map +1 -0
  323. package/dist/esm/hooks/data-store/use-restructured-plan-features-for-comparison-grid.js +87 -0
  324. package/dist/esm/hooks/data-store/use-restructured-plan-features-for-comparison-grid.js.map +1 -0
  325. package/dist/esm/hooks/use-grid-size.js +29 -0
  326. package/dist/esm/hooks/use-grid-size.js.map +1 -0
  327. package/dist/esm/hooks/use-highlight-adjacency-matrix.js +29 -0
  328. package/dist/esm/hooks/use-highlight-adjacency-matrix.js.map +1 -0
  329. package/dist/esm/hooks/use-is-large-currency.js +66 -0
  330. package/dist/esm/hooks/use-is-large-currency.js.map +1 -0
  331. package/dist/esm/hooks/use-manage-tooltip-toggle.js +25 -0
  332. package/dist/esm/hooks/use-manage-tooltip-toggle.js.map +1 -0
  333. package/dist/esm/hooks/use-plan-pricing-info-from-grid-plans.js +13 -0
  334. package/dist/esm/hooks/use-plan-pricing-info-from-grid-plans.js.map +1 -0
  335. package/dist/esm/index.js +28 -0
  336. package/dist/esm/index.js.map +1 -0
  337. package/dist/esm/lib/filter-unused-features-object.js +17 -0
  338. package/dist/esm/lib/filter-unused-features-object.js.map +1 -0
  339. package/dist/esm/lib/get-plan-features-object.js +9 -0
  340. package/dist/esm/lib/get-plan-features-object.js.map +1 -0
  341. package/dist/esm/lib/get-plan-pricing-info-from-grid-plans.js +12 -0
  342. package/dist/esm/lib/get-plan-pricing-info-from-grid-plans.js.map +1 -0
  343. package/dist/esm/lib/is-same-plan.js +8 -0
  344. package/dist/esm/lib/is-same-plan.js.map +1 -0
  345. package/dist/esm/lib/sort-plan-properties.js +35 -0
  346. package/dist/esm/lib/sort-plan-properties.js.map +1 -0
  347. package/dist/esm/lib/touch-detect/index.js +16 -0
  348. package/dist/esm/lib/touch-detect/index.js.map +1 -0
  349. package/dist/esm/types.js +2 -0
  350. package/dist/esm/types.js.map +1 -0
  351. package/dist/tsconfig-cjs.tsbuildinfo +1 -0
  352. package/dist/tsconfig.tsbuildinfo +1 -0
  353. package/dist/types/__mocks__/wpcom-proxy-request.d.ts +8 -0
  354. package/dist/types/__mocks__/wpcom-proxy-request.d.ts.map +1 -0
  355. package/dist/types/components/comparison-grid/index.d.ts +5 -0
  356. package/dist/types/components/comparison-grid/index.d.ts.map +1 -0
  357. package/dist/types/components/comparison-grid/index.stories.d.ts +66 -0
  358. package/dist/types/components/comparison-grid/index.stories.d.ts.map +1 -0
  359. package/dist/types/components/dropdown-option.d.ts +10 -0
  360. package/dist/types/components/dropdown-option.d.ts.map +1 -0
  361. package/dist/types/components/features-grid/billing-timeframes.d.ts +11 -0
  362. package/dist/types/components/features-grid/billing-timeframes.d.ts.map +1 -0
  363. package/dist/types/components/features-grid/client-logo-list/client-list.d.ts +11 -0
  364. package/dist/types/components/features-grid/client-logo-list/client-list.d.ts.map +1 -0
  365. package/dist/types/components/features-grid/client-logo-list/index.d.ts +4 -0
  366. package/dist/types/components/features-grid/client-logo-list/index.d.ts.map +1 -0
  367. package/dist/types/components/features-grid/enterprise-features.d.ts +11 -0
  368. package/dist/types/components/features-grid/enterprise-features.d.ts.map +1 -0
  369. package/dist/types/components/features-grid/index.d.ts +5 -0
  370. package/dist/types/components/features-grid/index.d.ts.map +1 -0
  371. package/dist/types/components/features-grid/index.stories.d.ts +173 -0
  372. package/dist/types/components/features-grid/index.stories.d.ts.map +1 -0
  373. package/dist/types/components/features-grid/mobile-free-domain.d.ts +8 -0
  374. package/dist/types/components/features-grid/mobile-free-domain.d.ts.map +1 -0
  375. package/dist/types/components/features-grid/plan-features-list.d.ts +31 -0
  376. package/dist/types/components/features-grid/plan-features-list.d.ts.map +1 -0
  377. package/dist/types/components/features-grid/plan-headers.d.ts +10 -0
  378. package/dist/types/components/features-grid/plan-headers.d.ts.map +1 -0
  379. package/dist/types/components/features-grid/plan-logos.d.ts +11 -0
  380. package/dist/types/components/features-grid/plan-logos.d.ts.map +1 -0
  381. package/dist/types/components/features-grid/plan-prices.d.ts +11 -0
  382. package/dist/types/components/features-grid/plan-prices.d.ts.map +1 -0
  383. package/dist/types/components/features-grid/plan-tagline.d.ts +10 -0
  384. package/dist/types/components/features-grid/plan-tagline.d.ts.map +1 -0
  385. package/dist/types/components/features-grid/previous-features-included-title.d.ts +10 -0
  386. package/dist/types/components/features-grid/previous-features-included-title.d.ts.map +1 -0
  387. package/dist/types/components/features-grid/spotlight-plan.d.ts +17 -0
  388. package/dist/types/components/features-grid/spotlight-plan.d.ts.map +1 -0
  389. package/dist/types/components/features-grid/table.d.ts +26 -0
  390. package/dist/types/components/features-grid/table.d.ts.map +1 -0
  391. package/dist/types/components/features-grid/top-buttons.d.ts +14 -0
  392. package/dist/types/components/features-grid/top-buttons.d.ts.map +1 -0
  393. package/dist/types/components/features.d.ts +17 -0
  394. package/dist/types/components/features.d.ts.map +1 -0
  395. package/dist/types/components/item.d.ts +5 -0
  396. package/dist/types/components/item.d.ts.map +1 -0
  397. package/dist/types/components/plan-button/index.d.ts +17 -0
  398. package/dist/types/components/plan-button/index.d.ts.map +1 -0
  399. package/dist/types/components/plan-div-td-container.d.ts +7 -0
  400. package/dist/types/components/plan-div-td-container.d.ts.map +1 -0
  401. package/dist/types/components/plan-logo.d.ts +12 -0
  402. package/dist/types/components/plan-logo.d.ts.map +1 -0
  403. package/dist/types/components/plan-type-selector/components/interval-type-dropdown.d.ts +4 -0
  404. package/dist/types/components/plan-type-selector/components/interval-type-dropdown.d.ts.map +1 -0
  405. package/dist/types/components/plan-type-selector/components/interval-type-selector.d.ts +4 -0
  406. package/dist/types/components/plan-type-selector/components/interval-type-selector.d.ts.map +1 -0
  407. package/dist/types/components/plan-type-selector/components/interval-type-toggle.d.ts +4 -0
  408. package/dist/types/components/plan-type-selector/components/interval-type-toggle.d.ts.map +1 -0
  409. package/dist/types/components/plan-type-selector/components/popup-messages.d.ts +9 -0
  410. package/dist/types/components/plan-type-selector/components/popup-messages.d.ts.map +1 -0
  411. package/dist/types/components/plan-type-selector/hooks/use-interval-options.d.ts +11 -0
  412. package/dist/types/components/plan-type-selector/hooks/use-interval-options.d.ts.map +1 -0
  413. package/dist/types/components/plan-type-selector/hooks/use-max-discount.d.ts +4 -0
  414. package/dist/types/components/plan-type-selector/hooks/use-max-discount.d.ts.map +1 -0
  415. package/dist/types/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.d.ts +10 -0
  416. package/dist/types/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.d.ts.map +1 -0
  417. package/dist/types/components/plan-type-selector/index.d.ts +6 -0
  418. package/dist/types/components/plan-type-selector/index.d.ts.map +1 -0
  419. package/dist/types/components/plans-2023-tooltip.d.ts +11 -0
  420. package/dist/types/components/plans-2023-tooltip.d.ts.map +1 -0
  421. package/dist/types/components/popular-badge.d.ts +9 -0
  422. package/dist/types/components/popular-badge.d.ts.map +1 -0
  423. package/dist/types/components/shared/action-button/index.d.ts +19 -0
  424. package/dist/types/components/shared/action-button/index.d.ts.map +1 -0
  425. package/dist/types/components/shared/billing-timeframe/index.d.ts +8 -0
  426. package/dist/types/components/shared/billing-timeframe/index.d.ts.map +1 -0
  427. package/dist/types/components/shared/header-price/header-price-context.d.ts +12 -0
  428. package/dist/types/components/shared/header-price/header-price-context.d.ts.map +1 -0
  429. package/dist/types/components/shared/header-price/index.d.ts +11 -0
  430. package/dist/types/components/shared/header-price/index.d.ts.map +1 -0
  431. package/dist/types/components/shared/plan-pill/index.d.ts +3 -0
  432. package/dist/types/components/shared/plan-pill/index.d.ts.map +1 -0
  433. package/dist/types/components/shared/storage/components/plan-storage.d.ts +13 -0
  434. package/dist/types/components/shared/storage/components/plan-storage.d.ts.map +1 -0
  435. package/dist/types/components/shared/storage/components/storage-dropdown.d.ts +9 -0
  436. package/dist/types/components/shared/storage/components/storage-dropdown.d.ts.map +1 -0
  437. package/dist/types/components/shared/storage/components/storage-feature-label.d.ts +7 -0
  438. package/dist/types/components/shared/storage/components/storage-feature-label.d.ts.map +1 -0
  439. package/dist/types/components/shared/storage/constants.d.ts +2 -0
  440. package/dist/types/components/shared/storage/constants.d.ts.map +1 -0
  441. package/dist/types/components/shared/storage/hooks/use-default-storage-option.d.ts +14 -0
  442. package/dist/types/components/shared/storage/hooks/use-default-storage-option.d.ts.map +1 -0
  443. package/dist/types/components/shared/storage/hooks/use-plan-storage.d.ts +4 -0
  444. package/dist/types/components/shared/storage/hooks/use-plan-storage.d.ts.map +1 -0
  445. package/dist/types/components/shared/storage/hooks/use-purchased-storage-add-on.d.ts +3 -0
  446. package/dist/types/components/shared/storage/hooks/use-purchased-storage-add-on.d.ts.map +1 -0
  447. package/dist/types/components/shared/storage/hooks/use-storage-string.d.ts +4 -0
  448. package/dist/types/components/shared/storage/hooks/use-storage-string.d.ts.map +1 -0
  449. package/dist/types/components/shared/storage/index.d.ts +9 -0
  450. package/dist/types/components/shared/storage/index.d.ts.map +1 -0
  451. package/dist/types/components/sticky-container.d.ts +33 -0
  452. package/dist/types/components/sticky-container.d.ts.map +1 -0
  453. package/dist/types/constants.d.ts +2 -0
  454. package/dist/types/constants.d.ts.map +1 -0
  455. package/dist/types/css-mixins.d.ts +3 -0
  456. package/dist/types/css-mixins.d.ts.map +1 -0
  457. package/dist/types/fixtures/plans.d.ts +201 -0
  458. package/dist/types/fixtures/plans.d.ts.map +1 -0
  459. package/dist/types/fixtures/sites-plans.d.ts +457 -0
  460. package/dist/types/fixtures/sites-plans.d.ts.map +1 -0
  461. package/dist/types/fixtures/sites-purchases.d.ts +96 -0
  462. package/dist/types/fixtures/sites-purchases.d.ts.map +1 -0
  463. package/dist/types/grid-context.d.ts +40 -0
  464. package/dist/types/grid-context.d.ts.map +1 -0
  465. package/dist/types/hooks/data-store/is-popular-plan.d.ts +2 -0
  466. package/dist/types/hooks/data-store/is-popular-plan.d.ts.map +1 -0
  467. package/dist/types/hooks/data-store/types.d.ts +40 -0
  468. package/dist/types/hooks/data-store/types.d.ts.map +1 -0
  469. package/dist/types/hooks/data-store/use-grid-plan-for-spotlight.d.ts +10 -0
  470. package/dist/types/hooks/data-store/use-grid-plan-for-spotlight.d.ts.map +1 -0
  471. package/dist/types/hooks/data-store/use-grid-plans-for-comparison-grid.d.ts +5 -0
  472. package/dist/types/hooks/data-store/use-grid-plans-for-comparison-grid.d.ts.map +1 -0
  473. package/dist/types/hooks/data-store/use-grid-plans-for-features-grid.d.ts +5 -0
  474. package/dist/types/hooks/data-store/use-grid-plans-for-features-grid.d.ts.map +1 -0
  475. package/dist/types/hooks/data-store/use-grid-plans.d.ts +13 -0
  476. package/dist/types/hooks/data-store/use-grid-plans.d.ts.map +1 -0
  477. package/dist/types/hooks/data-store/use-highlight-labels.d.ts +20 -0
  478. package/dist/types/hooks/data-store/use-highlight-labels.d.ts.map +1 -0
  479. package/dist/types/hooks/data-store/use-highlighted-features.d.ts +22 -0
  480. package/dist/types/hooks/data-store/use-highlighted-features.d.ts.map +1 -0
  481. package/dist/types/hooks/data-store/use-plan-billing-description.d.ts +16 -0
  482. package/dist/types/hooks/data-store/use-plan-billing-description.d.ts.map +1 -0
  483. package/dist/types/hooks/data-store/use-plan-features-for-grid-plans.d.ts +21 -0
  484. package/dist/types/hooks/data-store/use-plan-features-for-grid-plans.d.ts.map +1 -0
  485. package/dist/types/hooks/data-store/use-plans-from-types.d.ts +10 -0
  486. package/dist/types/hooks/data-store/use-plans-from-types.d.ts.map +1 -0
  487. package/dist/types/hooks/data-store/use-restructured-plan-features-for-comparison-grid.d.ts +15 -0
  488. package/dist/types/hooks/data-store/use-restructured-plan-features-for-comparison-grid.d.ts.map +1 -0
  489. package/dist/types/hooks/use-grid-size.d.ts +18 -0
  490. package/dist/types/hooks/use-grid-size.d.ts.map +1 -0
  491. package/dist/types/hooks/use-highlight-adjacency-matrix.d.ts +15 -0
  492. package/dist/types/hooks/use-highlight-adjacency-matrix.d.ts.map +1 -0
  493. package/dist/types/hooks/use-is-large-currency.d.ts +16 -0
  494. package/dist/types/hooks/use-is-large-currency.d.ts.map +1 -0
  495. package/dist/types/hooks/use-manage-tooltip-toggle.d.ts +3 -0
  496. package/dist/types/hooks/use-manage-tooltip-toggle.d.ts.map +1 -0
  497. package/dist/types/hooks/use-plan-pricing-info-from-grid-plans.d.ts +11 -0
  498. package/dist/types/hooks/use-plan-pricing-info-from-grid-plans.d.ts.map +1 -0
  499. package/dist/types/index.d.ts +32 -0
  500. package/dist/types/index.d.ts.map +1 -0
  501. package/dist/types/lib/filter-unused-features-object.d.ts +8 -0
  502. package/dist/types/lib/filter-unused-features-object.d.ts.map +1 -0
  503. package/dist/types/lib/get-plan-features-object.d.ts +4 -0
  504. package/dist/types/lib/get-plan-features-object.d.ts.map +1 -0
  505. package/dist/types/lib/get-plan-pricing-info-from-grid-plans.d.ts +9 -0
  506. package/dist/types/lib/get-plan-pricing-info-from-grid-plans.d.ts.map +1 -0
  507. package/dist/types/lib/is-same-plan.d.ts +3 -0
  508. package/dist/types/lib/is-same-plan.d.ts.map +1 -0
  509. package/dist/types/lib/sort-plan-properties.d.ts +3 -0
  510. package/dist/types/lib/sort-plan-properties.d.ts.map +1 -0
  511. package/dist/types/lib/touch-detect/index.d.ts +11 -0
  512. package/dist/types/lib/touch-detect/index.d.ts.map +1 -0
  513. package/dist/types/types.d.ts +225 -0
  514. package/dist/types/types.d.ts.map +1 -0
  515. package/package.json +83 -0
  516. package/src/__mocks__/wpcom-proxy-request.js +13 -0
  517. package/src/_media-queries.scss +14 -0
  518. package/src/_mixins.scss +15 -0
  519. package/src/_shared.scss +174 -0
  520. package/src/components/comparison-grid/README.md +3 -0
  521. package/src/components/comparison-grid/index.stories.tsx +91 -0
  522. package/src/components/comparison-grid/index.tsx +1215 -0
  523. package/src/components/comparison-grid/style.scss +318 -0
  524. package/src/components/dropdown-option.tsx +44 -0
  525. package/src/components/features-grid/README.md +3 -0
  526. package/src/components/features-grid/billing-timeframes.tsx +37 -0
  527. package/src/components/features-grid/client-logo-list/client-list.tsx +199 -0
  528. package/src/components/features-grid/client-logo-list/index.tsx +24 -0
  529. package/src/components/features-grid/client-logo-list/style.scss +52 -0
  530. package/src/components/features-grid/enterprise-features.tsx +101 -0
  531. package/src/components/features-grid/index.stories.tsx +143 -0
  532. package/src/components/features-grid/index.tsx +442 -0
  533. package/src/components/features-grid/mobile-free-domain.tsx +51 -0
  534. package/src/components/features-grid/plan-features-list.tsx +187 -0
  535. package/src/components/features-grid/plan-headers.tsx +31 -0
  536. package/src/components/features-grid/plan-logos.tsx +27 -0
  537. package/src/components/features-grid/plan-prices.tsx +37 -0
  538. package/src/components/features-grid/plan-tagline.tsx +25 -0
  539. package/src/components/features-grid/previous-features-included-title.tsx +66 -0
  540. package/src/components/features-grid/spotlight-plan.scss +5 -0
  541. package/src/components/features-grid/spotlight-plan.tsx +77 -0
  542. package/src/components/features-grid/style.scss +630 -0
  543. package/src/components/features-grid/table.tsx +185 -0
  544. package/src/components/features-grid/top-buttons.tsx +49 -0
  545. package/src/components/features.tsx +168 -0
  546. package/src/components/item.tsx +9 -0
  547. package/src/components/plan-button/index.tsx +59 -0
  548. package/src/components/plan-button/style.scss +179 -0
  549. package/src/components/plan-div-td-container.tsx +15 -0
  550. package/src/components/plan-logo.tsx +111 -0
  551. package/src/components/plan-type-selector/components/interval-type-dropdown.tsx +70 -0
  552. package/src/components/plan-type-selector/components/interval-type-selector.tsx +13 -0
  553. package/src/components/plan-type-selector/components/interval-type-toggle.tsx +100 -0
  554. package/src/components/plan-type-selector/components/popup-messages.tsx +128 -0
  555. package/src/components/plan-type-selector/hooks/use-interval-options.tsx +89 -0
  556. package/src/components/plan-type-selector/hooks/use-max-discount.ts +64 -0
  557. package/src/components/plan-type-selector/hooks/use-max-discounts-for-plan-terms.ts +99 -0
  558. package/src/components/plan-type-selector/index.tsx +50 -0
  559. package/src/components/plan-type-selector/style.scss +196 -0
  560. package/src/components/plans-2023-tooltip.tsx +85 -0
  561. package/src/components/popular-badge.tsx +30 -0
  562. package/src/components/shared/README.md +1 -0
  563. package/src/components/shared/action-button/index.tsx +205 -0
  564. package/src/components/shared/action-button/style.scss +12 -0
  565. package/src/components/shared/billing-timeframe/index.tsx +106 -0
  566. package/src/components/shared/header-price/header-price-context.tsx +24 -0
  567. package/src/components/shared/header-price/index.tsx +278 -0
  568. package/src/components/shared/header-price/style.scss +112 -0
  569. package/src/components/shared/plan-pill/index.jsx +7 -0
  570. package/src/components/shared/plan-pill/style.scss +30 -0
  571. package/src/components/shared/storage/components/plan-storage.tsx +51 -0
  572. package/src/components/shared/storage/components/storage-dropdown.tsx +187 -0
  573. package/src/components/shared/storage/components/storage-feature-label.tsx +68 -0
  574. package/src/components/shared/storage/constants.ts +3 -0
  575. package/src/components/shared/storage/hooks/use-default-storage-option.ts +34 -0
  576. package/src/components/shared/storage/hooks/use-plan-storage.ts +41 -0
  577. package/src/components/shared/storage/hooks/use-purchased-storage-add-on.ts +53 -0
  578. package/src/components/shared/storage/hooks/use-storage-string.ts +13 -0
  579. package/src/components/shared/storage/index.ts +9 -0
  580. package/src/components/sticky-container.tsx +146 -0
  581. package/src/components/test/actions-button.tsx +397 -0
  582. package/src/components/test/billing-timeframe.tsx +341 -0
  583. package/src/components/test/header-price.tsx +189 -0
  584. package/src/components/test/plan-type-selector.tsx +44 -0
  585. package/src/constants.ts +13 -0
  586. package/src/css-mixins.tsx +11 -0
  587. package/src/fixtures/plans.ts +1539 -0
  588. package/src/fixtures/sites-plans.ts +455 -0
  589. package/src/fixtures/sites-purchases.ts +130 -0
  590. package/src/grid-context.tsx +104 -0
  591. package/src/hooks/data-store/is-popular-plan.ts +5 -0
  592. package/src/hooks/data-store/types.ts +41 -0
  593. package/src/hooks/data-store/use-grid-plan-for-spotlight.ts +35 -0
  594. package/src/hooks/data-store/use-grid-plans-for-comparison-grid.ts +81 -0
  595. package/src/hooks/data-store/use-grid-plans-for-features-grid.ts +79 -0
  596. package/src/hooks/data-store/use-grid-plans.tsx +360 -0
  597. package/src/hooks/data-store/use-highlight-labels.ts +88 -0
  598. package/src/hooks/data-store/use-highlighted-features.ts +51 -0
  599. package/src/hooks/data-store/use-plan-billing-description.tsx +309 -0
  600. package/src/hooks/data-store/use-plan-features-for-grid-plans.ts +219 -0
  601. package/src/hooks/data-store/use-plans-from-types.ts +51 -0
  602. package/src/hooks/data-store/use-restructured-plan-features-for-comparison-grid.ts +158 -0
  603. package/src/hooks/test/use-is-large-currency.ts +69 -0
  604. package/src/hooks/use-grid-size.ts +46 -0
  605. package/src/hooks/use-highlight-adjacency-matrix.ts +48 -0
  606. package/src/hooks/use-is-large-currency.ts +91 -0
  607. package/src/hooks/use-manage-tooltip-toggle.ts +30 -0
  608. package/src/hooks/use-plan-pricing-info-from-grid-plans.ts +36 -0
  609. package/src/index.tsx +46 -0
  610. package/src/lib/filter-unused-features-object.ts +31 -0
  611. package/src/lib/get-plan-features-object.ts +12 -0
  612. package/src/lib/get-plan-pricing-info-from-grid-plans.ts +31 -0
  613. package/src/lib/is-same-plan.ts +8 -0
  614. package/src/lib/sort-plan-properties.ts +46 -0
  615. package/src/lib/test/filter-plan-features-object.ts +65 -0
  616. package/src/lib/test/sort-plan-properties.ts +104 -0
  617. package/src/lib/touch-detect/README.md +11 -0
  618. package/src/lib/touch-detect/index.js +17 -0
  619. package/src/types.ts +340 -0
@@ -0,0 +1,524 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { getPlanClass, FEATURE_GROUP_ESSENTIAL_FEATURES, FEATURE_GROUP_PAYMENT_TRANSACTION_FEES, getPlans, } from '@automattic/calypso-products';
3
+ import { Gridicon, JetpackLogo } from '@automattic/components';
4
+ import { css } from '@emotion/react';
5
+ import styled from '@emotion/styled';
6
+ import { useRef, useMemo } from '@wordpress/element';
7
+ import { Icon, chevronRightSmall } from '@wordpress/icons';
8
+ import clsx from 'clsx';
9
+ import { useTranslate } from 'i18n-calypso';
10
+ import { useState, useCallback, useEffect, forwardRef, } from 'react';
11
+ import { useInView } from 'react-intersection-observer';
12
+ import { plansGridMediumLarge } from '../../css-mixins';
13
+ import PlansGridContextProvider, { usePlansGridContext } from '../../grid-context';
14
+ import useGridSize from '../../hooks/use-grid-size';
15
+ import useHighlightAdjacencyMatrix from '../../hooks/use-highlight-adjacency-matrix';
16
+ import { useManageTooltipToggle } from '../../hooks/use-manage-tooltip-toggle';
17
+ import filterUnusedFeaturesObject from '../../lib/filter-unused-features-object';
18
+ import getPlanFeaturesObject from '../../lib/get-plan-features-object';
19
+ import { sortPlans } from '../../lib/sort-plan-properties';
20
+ import PlanTypeSelector from '../plan-type-selector';
21
+ import { Plans2023Tooltip } from '../plans-2023-tooltip';
22
+ import PopularBadge from '../popular-badge';
23
+ import ActionButton from '../shared/action-button';
24
+ import BillingTimeframe from '../shared/billing-timeframe';
25
+ import HeaderPrice from '../shared/header-price';
26
+ import HeaderPriceContextProvider from '../shared/header-price/header-price-context';
27
+ import { PlanStorage } from '../shared/storage';
28
+ import { StickyContainer } from '../sticky-container';
29
+ import './style.scss';
30
+ const featureGroupRowTitleCellMaxWidth = 450;
31
+ const rowCellMaxWidth = 290;
32
+ const JetpackIconContainer = styled.div `
33
+ padding-inline-start: 6px;
34
+ display: inline-block;
35
+ vertical-align: middle;
36
+ line-height: 1;
37
+ `;
38
+ const Title = styled.div `
39
+ font-weight: 500;
40
+ font-size: 20px;
41
+ padding: 14px;
42
+ flex: 1;
43
+ display: flex;
44
+ align-items: center;
45
+ column-gap: 5px;
46
+ border: solid 1px #e0e0e0;
47
+ border-left: none;
48
+ border-right: none;
49
+
50
+ .gridicon {
51
+ transform: ${(props) => props.isHiddenInMobile ? 'rotateZ( 180deg )' : 'rotateZ( 0deg )'};
52
+ flex-shrink: 0;
53
+ }
54
+
55
+ ${plansGridMediumLarge(css `
56
+ padding-inline-start: 0;
57
+ border: none;
58
+ padding: 0;
59
+ max-width: 290px;
60
+
61
+ .gridicon {
62
+ display: none;
63
+ }
64
+ `)}
65
+ `;
66
+ const Grid = styled.div `
67
+ display: grid;
68
+ margin: 0 auto;
69
+ background: #fff;
70
+ border: solid 1px #e0e0e0;
71
+ ${(props) => props.visiblePlans &&
72
+ css `
73
+ max-width: ${rowCellMaxWidth * props.visiblePlans + featureGroupRowTitleCellMaxWidth}px;
74
+ `}
75
+
76
+ ${plansGridMediumLarge(css `
77
+ border-radius: 5px;
78
+ `)}
79
+
80
+ > .is-sticky-header-row {
81
+ border-bottom: solid 1px #e0e0e0;
82
+ background: #fff;
83
+ }
84
+ `;
85
+ const Row = styled.div `
86
+ justify-content: space-between;
87
+ margin-bottom: -1px;
88
+ align-items: stretch;
89
+ display: ${(props) => (props.isHiddenInMobile ? 'none' : 'flex')};
90
+
91
+ ${plansGridMediumLarge(css `
92
+ display: flex;
93
+ align-items: center;
94
+ margin: 0 20px;
95
+ padding: 12px 0;
96
+ border-bottom: 1px solid #eee;
97
+ `)}
98
+
99
+ ${(props) => props.isHighlighted &&
100
+ css `
101
+ ${plansGridMediumLarge(css `
102
+ background-color: #fafafa;
103
+ border-top: 1px solid #eee;
104
+ font-weight: bold;
105
+ margin: -1px 0 0;
106
+ padding: 12px 20px;
107
+ color: #3a434a;
108
+ `)}
109
+ `};
110
+ `;
111
+ const PlanRow = styled(Row) `
112
+ &:last-of-type {
113
+ display: ${(props) => (props.isHiddenInMobile ? 'none' : 'flex')};
114
+ }
115
+
116
+ ${plansGridMediumLarge(css `
117
+ border-bottom: none;
118
+ align-items: stretch;
119
+
120
+ &:last-of-type {
121
+ display: flex;
122
+ padding-top: 0;
123
+ padding-bottom: 0;
124
+ }
125
+ `)}
126
+ `;
127
+ const TitleRow = styled(Row) `
128
+ cursor: pointer;
129
+ display: flex;
130
+
131
+ ${plansGridMediumLarge(css `
132
+ cursor: default;
133
+ border-bottom: none;
134
+ padding: 20px 0 10px;
135
+ pointer-events: none;
136
+ `)}
137
+ `;
138
+ const Cell = styled.div `
139
+ text-align: ${(props) => props.textAlign ?? 'start'};
140
+ display: flex;
141
+ flex: 1;
142
+ justify-content: flex-start;
143
+ flex-direction: column;
144
+ align-items: center;
145
+ padding: 33px 20px 0;
146
+ border-right: solid 1px #e0e0e0;
147
+ max-width: ${rowCellMaxWidth}px;
148
+
149
+ .gridicon {
150
+ fill: currentColor;
151
+ }
152
+
153
+ img {
154
+ max-width: 100%;
155
+ }
156
+
157
+ &.title-is-subtitle {
158
+ padding-top: 0;
159
+ }
160
+
161
+ &:last-of-type {
162
+ border-right: none;
163
+ }
164
+
165
+ ${Row}:last-of-type & {
166
+ padding-bottom: 24px;
167
+
168
+ ${plansGridMediumLarge(css `
169
+ padding-bottom: 0px;
170
+ `)}
171
+ }
172
+
173
+ ${plansGridMediumLarge(css `
174
+ padding: 0 14px;
175
+ border-right: none;
176
+ justify-content: center;
177
+
178
+ &:first-of-type {
179
+ padding-inline-start: 0;
180
+ }
181
+ &:last-of-type {
182
+ padding-inline-end: 0;
183
+ border-right: none;
184
+ }
185
+
186
+ &.is-stuck {
187
+ padding-bottom: 16px;
188
+ }
189
+ `)}
190
+ `;
191
+ const RowTitleCell = styled.div `
192
+ display: none;
193
+ font-size: 14px;
194
+ padding-right: 10px;
195
+ ${plansGridMediumLarge(css `
196
+ display: block;
197
+ flex: 1;
198
+ min-width: 290px;
199
+ `)}
200
+ max-width: ${(props) => {
201
+ if (props.isPlaceholderHeaderCell || props.isFeatureGroupRowTitleCell) {
202
+ return `${featureGroupRowTitleCellMaxWidth}px`;
203
+ }
204
+ return `${rowCellMaxWidth}px`;
205
+ }};
206
+ `;
207
+ const PlanSelector = styled.header `
208
+ position: relative;
209
+
210
+ .plan-comparison-grid__title {
211
+ &.is-select-trigger {
212
+ display: flex;
213
+ }
214
+ }
215
+
216
+ .plan-comparison-grid__title-select {
217
+ appearance: none;
218
+ -moz-appearance: none;
219
+ -webkit-appearance: none;
220
+ background: 0 0;
221
+ border: none;
222
+ font-size: inherit;
223
+ color: inherit;
224
+ font-family: inherit;
225
+ opacity: 0;
226
+ width: 100%;
227
+ position: absolute;
228
+ top: 0;
229
+ left: 0;
230
+ cursor: pointer;
231
+ height: 30px;
232
+
233
+ &:focus ~ .plan-comparison-grid__title {
234
+ outline: thin dotted;
235
+ }
236
+ }
237
+
238
+ .plan-comparison-grid__title-icon {
239
+ position: relative;
240
+ top: -2px;
241
+ left: -2px;
242
+ width: 1px;
243
+ height: 1px;
244
+ overflow: visible;
245
+
246
+ svg {
247
+ fill: var( --color-link );
248
+ transform: rotate( 90deg );
249
+ }
250
+ }
251
+ `;
252
+ const FeatureFootnotes = styled.div `
253
+ ol {
254
+ margin: 2em 0 0 1em;
255
+ }
256
+
257
+ ol li {
258
+ font-size: 11px;
259
+ padding-left: 1em;
260
+ }
261
+ `;
262
+ const FeatureFootnote = styled.span `
263
+ position: relative;
264
+ font-size: 50%;
265
+ font-weight: 600;
266
+
267
+ sup {
268
+ position: absolute;
269
+ top: -10px;
270
+ left: 0;
271
+ }
272
+ `;
273
+ const ComparisonGridHeaderCell = ({ planSlug, allVisible, isLastInRow, isFooter, isInSignup, visibleGridPlans, onPlanChange, displayedGridPlans, currentSitePlanSlug, planActionOverrides, showRefundPeriod, isStuck, }) => {
274
+ const { gridPlansIndex } = usePlansGridContext();
275
+ const gridPlan = gridPlansIndex[planSlug];
276
+ const highlightAdjacencyMatrix = useHighlightAdjacencyMatrix({
277
+ renderedGridPlans: visibleGridPlans,
278
+ });
279
+ if (!gridPlan) {
280
+ return null;
281
+ }
282
+ const headerClasses = clsx('plan-comparison-grid__header-cell', getPlanClass(planSlug), {
283
+ 'popular-plan-parent-class': gridPlan.highlightLabel,
284
+ 'is-last-in-row': isLastInRow,
285
+ 'plan-is-footer': isFooter,
286
+ 'is-left-of-highlight': highlightAdjacencyMatrix[planSlug]?.leftOfHighlight,
287
+ 'is-right-of-highlight': highlightAdjacencyMatrix[planSlug]?.rightOfHighlight,
288
+ 'is-only-highlight': highlightAdjacencyMatrix[planSlug]?.isOnlyHighlight,
289
+ 'is-current-plan': gridPlan.current,
290
+ 'is-stuck': isStuck,
291
+ });
292
+ const popularBadgeClasses = clsx({
293
+ 'is-current-plan': gridPlan.current,
294
+ 'popular-badge-is-stuck': isStuck,
295
+ });
296
+ const showPlanSelect = !allVisible && !gridPlan.current;
297
+ return (_jsxs(Cell, { className: headerClasses, textAlign: "start", children: [_jsx(PopularBadge, { isInSignup: isInSignup, planSlug: planSlug, additionalClassName: popularBadgeClasses }), _jsxs(PlanSelector, { children: [_jsxs("h4", { className: clsx('plan-comparison-grid__title', showPlanSelect && 'is-select-trigger'), children: [_jsx("span", { className: "plan-comparison-grid__title-label", children: gridPlan.planTitle }), showPlanSelect && (_jsx("span", { className: "plan-comparison-grid__title-icon", children: _jsx(Icon, { icon: chevronRightSmall, size: 30 }) }))] }), showPlanSelect && (_jsx("select", { onChange: (event) => onPlanChange(planSlug, event), className: "plan-comparison-grid__title-select", value: planSlug, children: displayedGridPlans.map(({ planSlug: otherPlan, planTitle }) => {
298
+ const isVisiblePlan = visibleGridPlans.find(({ planSlug }) => planSlug === otherPlan);
299
+ if (isVisiblePlan && otherPlan !== planSlug) {
300
+ return null;
301
+ }
302
+ return (_jsx("option", { value: otherPlan, children: planTitle }, otherPlan));
303
+ }) }))] }), _jsx(HeaderPrice, { planSlug: planSlug, currentSitePlanSlug: currentSitePlanSlug, visibleGridPlans: visibleGridPlans }), _jsx("div", { className: "plan-comparison-grid__billing-info", children: _jsx(BillingTimeframe, { planSlug: planSlug, showRefundPeriod: showRefundPeriod }) }), _jsx(ActionButton, { currentSitePlanSlug: currentSitePlanSlug, availableForPurchase: gridPlan.availableForPurchase, isInSignup: isInSignup, planSlug: planSlug, planActionOverrides: planActionOverrides, showMonthlyPrice: false, isStuck: false, visibleGridPlans: visibleGridPlans })] }));
304
+ };
305
+ const PlanTypeSelectorWrapper = styled.div `
306
+ display: none;
307
+ ${plansGridMediumLarge(css `
308
+ display: block;
309
+ `)}
310
+ `;
311
+ const ComparisonGridHeader = forwardRef(({ displayedGridPlans, visibleGridPlans, isInSignup, isFooter, onPlanChange, currentSitePlanSlug, planActionOverrides, selectedPlan, isHiddenInMobile, showRefundPeriod, isStuck, planTypeSelectorProps, }, ref) => {
312
+ const translate = useTranslate();
313
+ const allVisible = visibleGridPlans.length === displayedGridPlans.length;
314
+ const { coupon } = usePlansGridContext();
315
+ return (_jsxs(PlanRow, { isHiddenInMobile: isHiddenInMobile, ref: ref, children: [_jsx(RowTitleCell, { className: "plan-comparison-grid__header-cell is-placeholder-header-cell", isPlaceholderHeaderCell: true, children: isStuck && planTypeSelectorProps && (_jsx(PlanTypeSelectorWrapper, { children: _jsx(PlanTypeSelector, { ...planTypeSelectorProps, title: translate('Billing Cycle'), hideDiscount: true, coupon: coupon }) })) }, "feature-name"), _jsx(HeaderPriceContextProvider, { children: visibleGridPlans.map(({ planSlug }, index) => (_jsx(ComparisonGridHeaderCell, { planSlug: planSlug, isLastInRow: index === visibleGridPlans.length - 1, isFooter: isFooter, allVisible: allVisible, isInSignup: isInSignup, visibleGridPlans: visibleGridPlans, onPlanChange: onPlanChange, displayedGridPlans: displayedGridPlans, currentSitePlanSlug: currentSitePlanSlug, planActionOverrides: planActionOverrides, selectedPlan: selectedPlan, showRefundPeriod: showRefundPeriod, isStuck: isStuck }, planSlug))) })] }));
316
+ });
317
+ const ComparisonGridFeatureGroupRowCell = ({ feature, visibleGridPlans, planSlug, isStorageFeature, intervalType, activeTooltipId, setActiveTooltipId, showUpgradeableStorage, onStorageAddOnClick, }) => {
318
+ const { gridPlansIndex, enableFeatureTooltips, hideUnsupportedFeatures } = usePlansGridContext();
319
+ const gridPlan = gridPlansIndex[planSlug];
320
+ const translate = useTranslate();
321
+ const highlightAdjacencyMatrix = useHighlightAdjacencyMatrix({
322
+ renderedGridPlans: visibleGridPlans,
323
+ });
324
+ if (!gridPlan) {
325
+ return null;
326
+ }
327
+ const featureSlug = feature?.getSlug();
328
+ const hasFeature = isStorageFeature ||
329
+ (featureSlug
330
+ ? [...gridPlan.features.wpcomFeatures, ...gridPlan.features.jetpackFeatures]
331
+ .filter((feature) => 'monthly' === intervalType ? !feature.availableOnlyForAnnualPlans : true)
332
+ .some((feature) => feature.getSlug() === featureSlug)
333
+ : false);
334
+ const featureLabel = featureSlug
335
+ ? gridPlan?.features?.comparisonGridFeatureLabels?.[featureSlug]
336
+ : undefined;
337
+ const cellClasses = clsx('plan-comparison-grid__feature-group-row-cell', 'plan-comparison-grid__plan', getPlanClass(planSlug), {
338
+ 'popular-plan-parent-class': gridPlan.highlightLabel,
339
+ 'has-feature': hasFeature,
340
+ 'has-feature-label': !!featureLabel,
341
+ 'hide-unsupported-feature': hideUnsupportedFeatures && !hasFeature && !featureLabel,
342
+ 'title-is-subtitle': 'live-chat-support' === featureSlug,
343
+ 'is-left-of-highlight': highlightAdjacencyMatrix[planSlug]?.leftOfHighlight,
344
+ 'is-right-of-highlight': highlightAdjacencyMatrix[planSlug]?.rightOfHighlight,
345
+ 'is-only-highlight': highlightAdjacencyMatrix[planSlug]?.isOnlyHighlight,
346
+ });
347
+ const planPaymentTransactionFees = gridPlan.features.wpcomFeatures?.find((feature) => feature?.getFeatureGroup?.() === FEATURE_GROUP_PAYMENT_TRANSACTION_FEES);
348
+ return (_jsx(Cell, { className: cellClasses, textAlign: "center", children: isStorageFeature ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "plan-comparison-grid__plan-title", children: translate('Storage') }), _jsx(PlanStorage, { planSlug: planSlug, onStorageAddOnClick: onStorageAddOnClick, showUpgradeableStorage: showUpgradeableStorage })] })) : (_jsx(_Fragment, { children: FEATURE_GROUP_PAYMENT_TRANSACTION_FEES === featureSlug ? (_jsx(_Fragment, { children: planPaymentTransactionFees ? (_jsxs(_Fragment, { children: [_jsx(Plans2023Tooltip, { text: enableFeatureTooltips ? feature?.getDescription?.() : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: `${planSlug}-${featureSlug}`, children: _jsx("span", { className: "plan-comparison-grid__plan-title", children: feature?.getAlternativeTitle?.() || feature?.getTitle() }) }), _jsx("span", { className: "plan-comparison-grid__plan-conditional-title", children: planPaymentTransactionFees?.getAlternativeTitle?.() })] })) : (_jsx(Gridicon, { icon: "minus-small", color: "#C3C4C7" })) })) : (_jsxs(_Fragment, { children: [feature?.getIcon && (_jsx("span", { className: "plan-comparison-grid__plan-image", children: feature.getIcon() })), _jsx(Plans2023Tooltip, { text: enableFeatureTooltips ? feature?.getDescription?.() : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: `${planSlug}-${featureSlug}`, children: _jsx("span", { className: "plan-comparison-grid__plan-title", children: feature?.getAlternativeTitle?.() || feature?.getTitle() }) }), feature?.getCompareTitle && (_jsx("span", { className: "plan-comparison-grid__plan-subtitle", children: feature.getCompareTitle() })), featureLabel && (_jsx("span", { className: "plan-comparison-grid__plan-conditional-title", children: featureLabel })), hasFeature && feature?.getCompareSubtitle && (_jsx("span", { className: "plan-comparison-grid__plan-subtitle", children: feature.getCompareSubtitle() })), hasFeature && !featureLabel && (_jsx(Gridicon, { icon: "checkmark", color: "var(--studio-wordpress-blue-50)" })), !hasFeature && !featureLabel && _jsx(Gridicon, { icon: "minus-small", color: "#C3C4C7" })] })) })) }));
349
+ };
350
+ const ComparisonGridFeatureGroupRow = ({ feature, isHiddenInMobile, allJetpackFeatures, visibleGridPlans, planFeatureFootnotes, isStorageFeature, isHighlighted, intervalType, activeTooltipId, setActiveTooltipId, showUpgradeableStorage, onStorageAddOnClick, }) => {
351
+ const translate = useTranslate();
352
+ const rowClasses = clsx('plan-comparison-grid__feature-group-row', {
353
+ 'is-storage-feature': isStorageFeature,
354
+ });
355
+ const featureSlug = feature?.getSlug() ?? '';
356
+ const footnote = planFeatureFootnotes?.footnotesByFeature?.[featureSlug];
357
+ const tooltipId = `${feature?.getSlug()}-comparison-grid`;
358
+ const { enableFeatureTooltips } = usePlansGridContext();
359
+ return (_jsxs(Row, { isHiddenInMobile: isHiddenInMobile, className: rowClasses, isHighlighted: isHighlighted, children: [_jsx(RowTitleCell, { className: "is-feature-group-row-title-cell", isFeatureGroupRowTitleCell: true, children: isStorageFeature ? (_jsx(Plans2023Tooltip, { text: enableFeatureTooltips
360
+ ? translate('Space to store your photos, media, and more.')
361
+ : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: tooltipId, children: translate('Storage') })) : (_jsx(_Fragment, { children: feature && (_jsxs(_Fragment, { children: [_jsxs(Plans2023Tooltip, { text: enableFeatureTooltips ? feature.getDescription?.() : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: tooltipId, children: [feature.getTitle(), footnote && (_jsx(FeatureFootnote, { children: _jsx("sup", { children: footnote }) }))] }), allJetpackFeatures.has(feature.getSlug()) ? (_jsx(JetpackIconContainer, { children: _jsx(Plans2023Tooltip, { text: translate('Security, performance, and growth tools—powered by Jetpack.'), setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: `jp-${tooltipId}`, children: _jsx(JetpackLogo, { size: 16 }) }) })) : null] })) })) }, "feature-name"), visibleGridPlans.map(({ planSlug }) => (_jsx(ComparisonGridFeatureGroupRowCell, { feature: feature, allJetpackFeatures: allJetpackFeatures, visibleGridPlans: visibleGridPlans, planSlug: planSlug, isStorageFeature: isStorageFeature, intervalType: intervalType, activeTooltipId: activeTooltipId, setActiveTooltipId: setActiveTooltipId, showUpgradeableStorage: showUpgradeableStorage, onStorageAddOnClick: onStorageAddOnClick }, planSlug)))] }));
362
+ };
363
+ const FeatureGroup = ({ featureGroup, selectedFeature, intervalType, activeTooltipId, setActiveTooltipId, showUpgradeableStorage, onStorageAddOnClick, featureGroupMap, visibleGridPlans, planFeatureFootnotes, }) => {
364
+ const { allFeaturesList } = usePlansGridContext();
365
+ const [firstSetOfFeatures] = Object.keys(featureGroupMap);
366
+ const [visibleFeatureGroups, setVisibleFeatureGroups] = useState([
367
+ firstSetOfFeatures,
368
+ ]);
369
+ const features = featureGroup.getFeatures();
370
+ const featureObjects = filterUnusedFeaturesObject(visibleGridPlans, getPlanFeaturesObject(allFeaturesList, features));
371
+ const isHiddenInMobile = !visibleFeatureGroups.includes(featureGroup.slug);
372
+ const allJetpackFeatures = useMemo(() => {
373
+ const allPlans = getPlans();
374
+ const jetpackFeatures = new Set(Object.values(allPlans)
375
+ .map(({ get2023PricingGridSignupJetpackFeatures, get2023PlanComparisonJetpackFeatureOverride, }) => {
376
+ const jetpackFeatures = get2023PricingGridSignupJetpackFeatures?.();
377
+ const additionalJetpackFeatures = get2023PlanComparisonJetpackFeatureOverride?.();
378
+ return [
379
+ ...(jetpackFeatures ? jetpackFeatures : []),
380
+ ...(additionalJetpackFeatures ? additionalJetpackFeatures : []),
381
+ ];
382
+ })
383
+ .flat());
384
+ return jetpackFeatures;
385
+ }, []);
386
+ const handleFeatureGroupToggle = useCallback(() => {
387
+ const index = visibleFeatureGroups.indexOf(featureGroup.slug);
388
+ const newVisibleFeatureGroups = [...visibleFeatureGroups];
389
+ if (index === -1) {
390
+ newVisibleFeatureGroups.push(featureGroup.slug);
391
+ }
392
+ else {
393
+ newVisibleFeatureGroups.splice(index, 1);
394
+ }
395
+ setVisibleFeatureGroups(newVisibleFeatureGroups);
396
+ }, [featureGroup, setVisibleFeatureGroups, visibleFeatureGroups]);
397
+ // Skip non Jetpack feature groups without any available features.
398
+ if (featureGroup.slug !== FEATURE_GROUP_ESSENTIAL_FEATURES && !featureObjects.length) {
399
+ return null;
400
+ }
401
+ return (_jsxs("div", { className: "plan-comparison-grid__feature-group", children: [_jsx(TitleRow, { className: "plan-comparison-grid__feature-group-title-row", onClick: handleFeatureGroupToggle, children: _jsxs(Title, { isHiddenInMobile: isHiddenInMobile, children: [_jsx(Gridicon, { icon: "chevron-up", size: 12, color: "#1E1E1E" }), _jsx("span", { children: featureGroup.getTitle() })] }) }), featureObjects.map((feature) => (_jsx(ComparisonGridFeatureGroupRow, { feature: feature, isHiddenInMobile: isHiddenInMobile, allJetpackFeatures: allJetpackFeatures, visibleGridPlans: visibleGridPlans, planFeatureFootnotes: planFeatureFootnotes, isStorageFeature: false, isHighlighted: feature.getSlug() === selectedFeature, intervalType: intervalType, activeTooltipId: activeTooltipId, setActiveTooltipId: setActiveTooltipId, showUpgradeableStorage: showUpgradeableStorage, onStorageAddOnClick: onStorageAddOnClick }, feature.getSlug()))), featureGroup.slug === FEATURE_GROUP_ESSENTIAL_FEATURES ? (_jsx(ComparisonGridFeatureGroupRow, { isHiddenInMobile: isHiddenInMobile, allJetpackFeatures: allJetpackFeatures, visibleGridPlans: visibleGridPlans, planFeatureFootnotes: planFeatureFootnotes, isStorageFeature: true, isHighlighted: false, intervalType: intervalType, activeTooltipId: activeTooltipId, setActiveTooltipId: setActiveTooltipId, showUpgradeableStorage: showUpgradeableStorage, onStorageAddOnClick: onStorageAddOnClick }, "feature-storage")) : null] }, featureGroup.slug));
402
+ };
403
+ const ComparisonGrid = ({ intervalType, isInSignup, currentSitePlanSlug, planActionOverrides, selectedPlan, selectedFeature, showUpgradeableStorage, stickyRowOffset, onStorageAddOnClick, showRefundPeriod, planTypeSelectorProps, gridSize, }) => {
404
+ const { gridPlans, gridPlansIndex, featureGroupMap } = usePlansGridContext();
405
+ const [activeTooltipId, setActiveTooltipId] = useManageTooltipToggle();
406
+ const [visiblePlans, setVisiblePlans] = useState([]);
407
+ const displayedGridPlans = useMemo(() => {
408
+ return sortPlans(gridPlans, currentSitePlanSlug, 'small' === gridSize);
409
+ }, [gridPlans, currentSitePlanSlug, gridSize]);
410
+ useEffect(() => {
411
+ setVisiblePlans((prev) => {
412
+ let visibleLength = displayedGridPlans.length;
413
+ switch (gridSize) {
414
+ case 'large':
415
+ visibleLength = 4;
416
+ break;
417
+ case 'medium':
418
+ visibleLength = 3;
419
+ break;
420
+ case 'smedium':
421
+ case 'small':
422
+ visibleLength = 2;
423
+ break;
424
+ }
425
+ // visible length changed, update with the current gridPlans
426
+ // - we don't care about previous order
427
+ if (prev.length !== visibleLength) {
428
+ return displayedGridPlans.slice(0, visibleLength).map(({ planSlug }) => planSlug);
429
+ }
430
+ // prev state out of sync with current gridPlans (e.g. gridPlans updated to a different term)
431
+ // - we care about previous order
432
+ const isPrevStale = prev.some((planSlug) => !gridPlansIndex[planSlug]);
433
+ if (isPrevStale) {
434
+ return prev.map((planSlug) => {
435
+ const gridPlan = displayedGridPlans.find((gridPlan) => getPlanClass(gridPlan.planSlug) === getPlanClass(planSlug));
436
+ return gridPlan?.planSlug ?? planSlug;
437
+ });
438
+ }
439
+ // nothing to update
440
+ return prev;
441
+ });
442
+ }, [gridSize, displayedGridPlans, gridPlansIndex]);
443
+ const visibleGridPlans = useMemo(() => visiblePlans.reduce((acc, planSlug) => {
444
+ const gridPlan = displayedGridPlans.find((gridPlan) => getPlanClass(gridPlan.planSlug) === getPlanClass(planSlug));
445
+ if (gridPlan) {
446
+ acc.push(gridPlan);
447
+ }
448
+ return acc;
449
+ }, []), [visiblePlans, displayedGridPlans]);
450
+ const onPlanChange = useCallback((currentPlan, event) => {
451
+ const newPlan = event.currentTarget.value;
452
+ const newVisiblePlans = visiblePlans.map((plan) => plan === currentPlan ? newPlan : plan);
453
+ setVisiblePlans(newVisiblePlans);
454
+ }, [visiblePlans]);
455
+ const planFeatureFootnotes = useMemo(() => {
456
+ // This is the main list of all footnotes. It is displayed at the bottom of the comparison grid.
457
+ const footnoteList = [];
458
+ // This is a map of features to the index of the footnote in the main list of footnotes.
459
+ const footnotesByFeature = {};
460
+ Object.values(featureGroupMap).map((featureGroup) => {
461
+ const footnotes = featureGroup?.getFootnotes?.();
462
+ if (!footnotes) {
463
+ return;
464
+ }
465
+ Object.keys(footnotes).map((footnote) => {
466
+ const footnoteFeatures = footnotes[footnote];
467
+ // First we add the footnote to the main list of footnotes.
468
+ footnoteList.push(footnote);
469
+ // Then we add each feature that has this footnote to the map of footnotes by feature.
470
+ const currentFootnoteIndex = footnoteList.length;
471
+ footnoteFeatures.map((feature) => {
472
+ footnotesByFeature[feature] = currentFootnoteIndex;
473
+ });
474
+ });
475
+ });
476
+ return {
477
+ footnoteList,
478
+ footnotesByFeature,
479
+ };
480
+ }, [featureGroupMap]);
481
+ // 100px is the padding of the footer row
482
+ const [bottomHeaderRef, isBottomHeaderInView] = useInView({ rootMargin: '-100px' });
483
+ /**
484
+ * Search for "any" plan with a highlight label, not just the visible ones.
485
+ * This will keep the grid static while user interacts (selects different plans to compare).
486
+ * Some padding is applied in the stylesheet to cover the badges/labels.
487
+ */
488
+ const hasHighlightedPlan = gridPlans.some(({ highlightLabel }) => !!highlightLabel);
489
+ const classes = clsx('plans-grid-next-comparison-grid', {
490
+ 'has-highlighted-plan': hasHighlightedPlan,
491
+ });
492
+ return (_jsxs("div", { className: classes, children: [_jsxs(Grid, { visiblePlans: visiblePlans.length, children: [_jsx(StickyContainer, { disabled: isBottomHeaderInView, stickyClass: "is-sticky-header-row", stickyOffset: stickyRowOffset, zIndex: 1, children: (isStuck) => (_jsx(ComparisonGridHeader, { displayedGridPlans: displayedGridPlans, visibleGridPlans: visibleGridPlans, isInSignup: isInSignup, onPlanChange: onPlanChange, currentSitePlanSlug: currentSitePlanSlug, planActionOverrides: planActionOverrides, selectedPlan: selectedPlan, showRefundPeriod: showRefundPeriod, isStuck: isStuck, planTypeSelectorProps: planTypeSelectorProps })) }), Object.values(featureGroupMap).map((featureGroup) => (_jsx(FeatureGroup, { featureGroup: featureGroup, visibleGridPlans: visibleGridPlans, featureGroupMap: featureGroupMap, selectedFeature: selectedFeature, intervalType: intervalType, activeTooltipId: activeTooltipId, setActiveTooltipId: setActiveTooltipId, showUpgradeableStorage: showUpgradeableStorage, onStorageAddOnClick: onStorageAddOnClick, planFeatureFootnotes: planFeatureFootnotes }, featureGroup.slug))), _jsx(ComparisonGridHeader, { displayedGridPlans: displayedGridPlans, visibleGridPlans: visibleGridPlans, isInSignup: isInSignup, isFooter: true, onPlanChange: onPlanChange, currentSitePlanSlug: currentSitePlanSlug, planActionOverrides: planActionOverrides, selectedPlan: selectedPlan, showRefundPeriod: showRefundPeriod, isStuck: false, isHiddenInMobile: true, ref: bottomHeaderRef, planTypeSelectorProps: planTypeSelectorProps })] }), _jsx("div", { className: "plan-comparison-grid__footer", children: planFeatureFootnotes?.footnoteList && (_jsx(FeatureFootnotes, { children: _jsx("ol", { children: planFeatureFootnotes?.footnoteList?.map((footnote, index) => {
493
+ return _jsx("li", { children: footnote }, `${footnote}-${index}`);
494
+ }) }) })) })] }));
495
+ };
496
+ const GRID_BREAKPOINTS = new Map([
497
+ ['small', 0],
498
+ ['smedium', 686],
499
+ ['medium', 835], // enough to fit Enterpreneur plan. was 686
500
+ ['large', 1005], // enough to fit Enterpreneur plan. was 870
501
+ ['xlarge', 1180],
502
+ ]);
503
+ // TODO
504
+ // Now that everything under is functional component, we can deprecate this wrapper and only keep ComparisonGrid instead.
505
+ // More details can be found in https://github.com/Automattic/wp-calypso/issues/87047
506
+ const WrappedComparisonGrid = ({ siteId, intent, gridPlans, useCheckPlanAvailabilityForPurchase, useAction, recordTracksEvent, allFeaturesList, intervalType, isInSignup, currentSitePlanSlug, selectedPlan, selectedFeature, showUpgradeableStorage, onStorageAddOnClick, stickyRowOffset, coupon, className, hideUnsupportedFeatures, enableFeatureTooltips, featureGroupMap, enableTermSavingsPriceDisplay, reflectStorageSelectionInPlanPrices, ...otherProps }) => {
507
+ const gridContainerRef = useRef(null);
508
+ // TODO: this will be deprecated along side removing the wrapper component
509
+ const gridSize = useGridSize({
510
+ containerRef: gridContainerRef,
511
+ containerBreakpoints: GRID_BREAKPOINTS,
512
+ });
513
+ const classNames = clsx('plans-grid-next', className, {
514
+ 'is-small': 'small' === gridSize,
515
+ 'is-smedium': 'smedium' === gridSize,
516
+ 'is-medium': 'medium' === gridSize,
517
+ 'is-large': 'large' === gridSize,
518
+ 'is-xlarge': 'xlarge' === gridSize,
519
+ 'is-visible': true,
520
+ });
521
+ return (_jsx("div", { ref: gridContainerRef, className: classNames, children: _jsx(PlansGridContextProvider, { intent: intent, siteId: siteId, gridPlans: gridPlans, useCheckPlanAvailabilityForPurchase: useCheckPlanAvailabilityForPurchase, useAction: useAction, recordTracksEvent: recordTracksEvent, allFeaturesList: allFeaturesList, coupon: coupon, enableFeatureTooltips: enableFeatureTooltips, featureGroupMap: featureGroupMap, hideUnsupportedFeatures: hideUnsupportedFeatures, enableTermSavingsPriceDisplay: enableTermSavingsPriceDisplay, reflectStorageSelectionInPlanPrices: reflectStorageSelectionInPlanPrices, children: _jsx(ComparisonGrid, { intervalType: intervalType, isInSignup: isInSignup, currentSitePlanSlug: currentSitePlanSlug, siteId: siteId, selectedPlan: selectedPlan, selectedFeature: selectedFeature, showUpgradeableStorage: showUpgradeableStorage, stickyRowOffset: stickyRowOffset, onStorageAddOnClick: onStorageAddOnClick, gridSize: gridSize ?? undefined, ...otherProps }) }) }));
522
+ };
523
+ export default WrappedComparisonGrid;
524
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/comparison-grid/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getFeaturesList, getPlanFeaturesGroupedForComparisonGrid, } from '@automattic/calypso-products';
3
+ import { ComparisonGrid, useGridPlansForComparisonGrid } from '../..';
4
+ const ComponentWrapper = (props) => {
5
+ const gridPlans = useGridPlansForComparisonGrid({
6
+ eligibleForFreeHostingTrial: true,
7
+ hasRedeemedDomainCredit: undefined,
8
+ hiddenPlans: undefined,
9
+ isDisplayingPlansNeededForFeature: false,
10
+ isInSignup: false,
11
+ isSubdomainNotGenerated: false,
12
+ selectedFeature: undefined,
13
+ selectedPlan: undefined,
14
+ showLegacyStorageFeature: false,
15
+ reflectStorageSelectionInPlanPrices: false,
16
+ term: 'TERM_ANNUALLY',
17
+ useFreeTrialPlanSlugs: undefined,
18
+ // Mirror values from props
19
+ siteId: props.siteId,
20
+ intent: props.intent,
21
+ coupon: props.coupon,
22
+ allFeaturesList: props.allFeaturesList,
23
+ useCheckPlanAvailabilityForPurchase: props.useCheckPlanAvailabilityForPurchase,
24
+ });
25
+ return (gridPlans && (_jsx(ComparisonGrid, { ...props, gridPlans: gridPlans, featureGroupMap: getPlanFeaturesGroupedForComparisonGrid() })));
26
+ };
27
+ const defaultProps = {
28
+ allFeaturesList: getFeaturesList(),
29
+ coupon: undefined,
30
+ currentSitePlanSlug: undefined,
31
+ featureGroupMap: getPlanFeaturesGroupedForComparisonGrid(),
32
+ hideUnavailableFeatures: false,
33
+ intervalType: 'yearly',
34
+ isInAdmin: false,
35
+ isInSignup: true,
36
+ onStorageAddOnClick: () => { },
37
+ planActionOverrides: undefined,
38
+ recordTracksEvent: () => { },
39
+ showRefundPeriod: false,
40
+ showUpgradeableStorage: true,
41
+ siteId: undefined,
42
+ stickyRowOffset: 0,
43
+ useCheckPlanAvailabilityForPurchase: () => ({}),
44
+ useAction: () => ({
45
+ primary: {
46
+ text: 'test',
47
+ callback: () => { },
48
+ status: 'enabled',
49
+ },
50
+ postButtonText: '',
51
+ }),
52
+ };
53
+ const meta = {
54
+ title: 'ComparisonGrid',
55
+ component: ComponentWrapper,
56
+ };
57
+ export default meta;
58
+ export const DefaultComparisonGrid = {
59
+ name: 'Default',
60
+ args: {
61
+ ...defaultProps,
62
+ },
63
+ };
64
+ export const HideUnsupportedFeatures = {
65
+ name: 'Hide unsupported features',
66
+ args: {
67
+ ...defaultProps,
68
+ hideUnsupportedFeatures: true,
69
+ },
70
+ };
71
+ //# sourceMappingURL=index.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.stories.js","sourceRoot":"","sources":["../../../../src/components/comparison-grid/index.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EACN,eAAe,EACf,uCAAuC,GACvC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAA+B,6BAA6B,EAAE,MAAM,OAAO,CAAC;AAGnG,MAAM,gBAAgB,GAAG,CAAE,KAAuD,EAAG,EAAE;IACtF,MAAM,SAAS,GAAG,6BAA6B,CAAE;QAChD,2BAA2B,EAAE,IAAI;QACjC,uBAAuB,EAAE,SAAS;QAClC,WAAW,EAAE,SAAS;QACtB,iCAAiC,EAAE,KAAK;QACxC,UAAU,EAAE,KAAK;QACjB,uBAAuB,EAAE,KAAK;QAC9B,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,SAAS;QACvB,wBAAwB,EAAE,KAAK;QAC/B,mCAAmC,EAAE,KAAK;QAC1C,IAAI,EAAE,eAAe;QACrB,qBAAqB,EAAE,SAAS;QAEhC,2BAA2B;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,mCAAmC,EAAE,KAAK,CAAC,mCAAmC;KAC9E,CAAE,CAAC;IAEJ,OAAO,CACN,SAAS,IAAI,CACZ,KAAC,cAAc,OACT,KAAK,EACV,SAAS,EAAG,SAAS,EACrB,eAAe,EAAG,uCAAuC,EAAE,GAC1D,CACF,CACD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG;IACpB,eAAe,EAAE,eAAe,EAAE;IAClC,MAAM,EAAE,SAAS;IACjB,mBAAmB,EAAE,SAAS;IAC9B,eAAe,EAAE,uCAAuC,EAAE;IAC1D,uBAAuB,EAAE,KAAK;IAC9B,YAAY,EAAE,QAAQ;IACtB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,IAAI;IAChB,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC7B,mBAAmB,EAAE,SAAS;IAC9B,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC3B,gBAAgB,EAAE,KAAK;IACvB,sBAAsB,EAAE,IAAI;IAC5B,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,CAAC;IAClB,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAE,EAAE,CAAE;IACjD,SAAS,EAAE,GAAG,EAAE,CAAC,CAAE;QAClB,OAAO,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;YAClB,MAAM,EAAE,SAAkB;SAC1B;QACD,cAAc,EAAE,EAAE;KAClB,CAAE;CACH,CAAC;AAEF,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,gBAAgB;IACvB,SAAS,EAAE,gBAAgB;CACe,CAAC;AAE5C,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,IAAI,EAAE,SAAS;IACf,IAAI,EAAE;QACL,GAAG,YAAY;KACf;CACe,CAAC;AAElB,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE;QACL,GAAG,YAAY;QACf,uBAAuB,EAAE,IAAI;KAC7B;CACe,CAAC"}