@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,527 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const calypso_products_1 = require("@automattic/calypso-products");
6
+ const components_1 = require("@automattic/components");
7
+ const react_1 = require("@emotion/react");
8
+ const styled_1 = tslib_1.__importDefault(require("@emotion/styled"));
9
+ const element_1 = require("@wordpress/element");
10
+ const icons_1 = require("@wordpress/icons");
11
+ const clsx_1 = tslib_1.__importDefault(require("clsx"));
12
+ const i18n_calypso_1 = require("i18n-calypso");
13
+ const react_2 = require("react");
14
+ const react_intersection_observer_1 = require("react-intersection-observer");
15
+ const css_mixins_1 = require("../../css-mixins");
16
+ const grid_context_1 = tslib_1.__importStar(require("../../grid-context"));
17
+ const use_grid_size_1 = tslib_1.__importDefault(require("../../hooks/use-grid-size"));
18
+ const use_highlight_adjacency_matrix_1 = tslib_1.__importDefault(require("../../hooks/use-highlight-adjacency-matrix"));
19
+ const use_manage_tooltip_toggle_1 = require("../../hooks/use-manage-tooltip-toggle");
20
+ const filter_unused_features_object_1 = tslib_1.__importDefault(require("../../lib/filter-unused-features-object"));
21
+ const get_plan_features_object_1 = tslib_1.__importDefault(require("../../lib/get-plan-features-object"));
22
+ const sort_plan_properties_1 = require("../../lib/sort-plan-properties");
23
+ const plan_type_selector_1 = tslib_1.__importDefault(require("../plan-type-selector"));
24
+ const plans_2023_tooltip_1 = require("../plans-2023-tooltip");
25
+ const popular_badge_1 = tslib_1.__importDefault(require("../popular-badge"));
26
+ const action_button_1 = tslib_1.__importDefault(require("../shared/action-button"));
27
+ const billing_timeframe_1 = tslib_1.__importDefault(require("../shared/billing-timeframe"));
28
+ const header_price_1 = tslib_1.__importDefault(require("../shared/header-price"));
29
+ const header_price_context_1 = tslib_1.__importDefault(require("../shared/header-price/header-price-context"));
30
+ const storage_1 = require("../shared/storage");
31
+ const sticky_container_1 = require("../sticky-container");
32
+ require("./style.scss");
33
+ const featureGroupRowTitleCellMaxWidth = 450;
34
+ const rowCellMaxWidth = 290;
35
+ const JetpackIconContainer = styled_1.default.div `
36
+ padding-inline-start: 6px;
37
+ display: inline-block;
38
+ vertical-align: middle;
39
+ line-height: 1;
40
+ `;
41
+ const Title = styled_1.default.div `
42
+ font-weight: 500;
43
+ font-size: 20px;
44
+ padding: 14px;
45
+ flex: 1;
46
+ display: flex;
47
+ align-items: center;
48
+ column-gap: 5px;
49
+ border: solid 1px #e0e0e0;
50
+ border-left: none;
51
+ border-right: none;
52
+
53
+ .gridicon {
54
+ transform: ${(props) => props.isHiddenInMobile ? 'rotateZ( 180deg )' : 'rotateZ( 0deg )'};
55
+ flex-shrink: 0;
56
+ }
57
+
58
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
59
+ padding-inline-start: 0;
60
+ border: none;
61
+ padding: 0;
62
+ max-width: 290px;
63
+
64
+ .gridicon {
65
+ display: none;
66
+ }
67
+ `)}
68
+ `;
69
+ const Grid = styled_1.default.div `
70
+ display: grid;
71
+ margin: 0 auto;
72
+ background: #fff;
73
+ border: solid 1px #e0e0e0;
74
+ ${(props) => props.visiblePlans &&
75
+ (0, react_1.css) `
76
+ max-width: ${rowCellMaxWidth * props.visiblePlans + featureGroupRowTitleCellMaxWidth}px;
77
+ `}
78
+
79
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
80
+ border-radius: 5px;
81
+ `)}
82
+
83
+ > .is-sticky-header-row {
84
+ border-bottom: solid 1px #e0e0e0;
85
+ background: #fff;
86
+ }
87
+ `;
88
+ const Row = styled_1.default.div `
89
+ justify-content: space-between;
90
+ margin-bottom: -1px;
91
+ align-items: stretch;
92
+ display: ${(props) => (props.isHiddenInMobile ? 'none' : 'flex')};
93
+
94
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
95
+ display: flex;
96
+ align-items: center;
97
+ margin: 0 20px;
98
+ padding: 12px 0;
99
+ border-bottom: 1px solid #eee;
100
+ `)}
101
+
102
+ ${(props) => props.isHighlighted &&
103
+ (0, react_1.css) `
104
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
105
+ background-color: #fafafa;
106
+ border-top: 1px solid #eee;
107
+ font-weight: bold;
108
+ margin: -1px 0 0;
109
+ padding: 12px 20px;
110
+ color: #3a434a;
111
+ `)}
112
+ `};
113
+ `;
114
+ const PlanRow = (0, styled_1.default)(Row) `
115
+ &:last-of-type {
116
+ display: ${(props) => (props.isHiddenInMobile ? 'none' : 'flex')};
117
+ }
118
+
119
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
120
+ border-bottom: none;
121
+ align-items: stretch;
122
+
123
+ &:last-of-type {
124
+ display: flex;
125
+ padding-top: 0;
126
+ padding-bottom: 0;
127
+ }
128
+ `)}
129
+ `;
130
+ const TitleRow = (0, styled_1.default)(Row) `
131
+ cursor: pointer;
132
+ display: flex;
133
+
134
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
135
+ cursor: default;
136
+ border-bottom: none;
137
+ padding: 20px 0 10px;
138
+ pointer-events: none;
139
+ `)}
140
+ `;
141
+ const Cell = styled_1.default.div `
142
+ text-align: ${(props) => props.textAlign ?? 'start'};
143
+ display: flex;
144
+ flex: 1;
145
+ justify-content: flex-start;
146
+ flex-direction: column;
147
+ align-items: center;
148
+ padding: 33px 20px 0;
149
+ border-right: solid 1px #e0e0e0;
150
+ max-width: ${rowCellMaxWidth}px;
151
+
152
+ .gridicon {
153
+ fill: currentColor;
154
+ }
155
+
156
+ img {
157
+ max-width: 100%;
158
+ }
159
+
160
+ &.title-is-subtitle {
161
+ padding-top: 0;
162
+ }
163
+
164
+ &:last-of-type {
165
+ border-right: none;
166
+ }
167
+
168
+ ${Row}:last-of-type & {
169
+ padding-bottom: 24px;
170
+
171
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
172
+ padding-bottom: 0px;
173
+ `)}
174
+ }
175
+
176
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
177
+ padding: 0 14px;
178
+ border-right: none;
179
+ justify-content: center;
180
+
181
+ &:first-of-type {
182
+ padding-inline-start: 0;
183
+ }
184
+ &:last-of-type {
185
+ padding-inline-end: 0;
186
+ border-right: none;
187
+ }
188
+
189
+ &.is-stuck {
190
+ padding-bottom: 16px;
191
+ }
192
+ `)}
193
+ `;
194
+ const RowTitleCell = styled_1.default.div `
195
+ display: none;
196
+ font-size: 14px;
197
+ padding-right: 10px;
198
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
199
+ display: block;
200
+ flex: 1;
201
+ min-width: 290px;
202
+ `)}
203
+ max-width: ${(props) => {
204
+ if (props.isPlaceholderHeaderCell || props.isFeatureGroupRowTitleCell) {
205
+ return `${featureGroupRowTitleCellMaxWidth}px`;
206
+ }
207
+ return `${rowCellMaxWidth}px`;
208
+ }};
209
+ `;
210
+ const PlanSelector = styled_1.default.header `
211
+ position: relative;
212
+
213
+ .plan-comparison-grid__title {
214
+ &.is-select-trigger {
215
+ display: flex;
216
+ }
217
+ }
218
+
219
+ .plan-comparison-grid__title-select {
220
+ appearance: none;
221
+ -moz-appearance: none;
222
+ -webkit-appearance: none;
223
+ background: 0 0;
224
+ border: none;
225
+ font-size: inherit;
226
+ color: inherit;
227
+ font-family: inherit;
228
+ opacity: 0;
229
+ width: 100%;
230
+ position: absolute;
231
+ top: 0;
232
+ left: 0;
233
+ cursor: pointer;
234
+ height: 30px;
235
+
236
+ &:focus ~ .plan-comparison-grid__title {
237
+ outline: thin dotted;
238
+ }
239
+ }
240
+
241
+ .plan-comparison-grid__title-icon {
242
+ position: relative;
243
+ top: -2px;
244
+ left: -2px;
245
+ width: 1px;
246
+ height: 1px;
247
+ overflow: visible;
248
+
249
+ svg {
250
+ fill: var( --color-link );
251
+ transform: rotate( 90deg );
252
+ }
253
+ }
254
+ `;
255
+ const FeatureFootnotes = styled_1.default.div `
256
+ ol {
257
+ margin: 2em 0 0 1em;
258
+ }
259
+
260
+ ol li {
261
+ font-size: 11px;
262
+ padding-left: 1em;
263
+ }
264
+ `;
265
+ const FeatureFootnote = styled_1.default.span `
266
+ position: relative;
267
+ font-size: 50%;
268
+ font-weight: 600;
269
+
270
+ sup {
271
+ position: absolute;
272
+ top: -10px;
273
+ left: 0;
274
+ }
275
+ `;
276
+ const ComparisonGridHeaderCell = ({ planSlug, allVisible, isLastInRow, isFooter, isInSignup, visibleGridPlans, onPlanChange, displayedGridPlans, currentSitePlanSlug, planActionOverrides, showRefundPeriod, isStuck, }) => {
277
+ const { gridPlansIndex } = (0, grid_context_1.usePlansGridContext)();
278
+ const gridPlan = gridPlansIndex[planSlug];
279
+ const highlightAdjacencyMatrix = (0, use_highlight_adjacency_matrix_1.default)({
280
+ renderedGridPlans: visibleGridPlans,
281
+ });
282
+ if (!gridPlan) {
283
+ return null;
284
+ }
285
+ const headerClasses = (0, clsx_1.default)('plan-comparison-grid__header-cell', (0, calypso_products_1.getPlanClass)(planSlug), {
286
+ 'popular-plan-parent-class': gridPlan.highlightLabel,
287
+ 'is-last-in-row': isLastInRow,
288
+ 'plan-is-footer': isFooter,
289
+ 'is-left-of-highlight': highlightAdjacencyMatrix[planSlug]?.leftOfHighlight,
290
+ 'is-right-of-highlight': highlightAdjacencyMatrix[planSlug]?.rightOfHighlight,
291
+ 'is-only-highlight': highlightAdjacencyMatrix[planSlug]?.isOnlyHighlight,
292
+ 'is-current-plan': gridPlan.current,
293
+ 'is-stuck': isStuck,
294
+ });
295
+ const popularBadgeClasses = (0, clsx_1.default)({
296
+ 'is-current-plan': gridPlan.current,
297
+ 'popular-badge-is-stuck': isStuck,
298
+ });
299
+ const showPlanSelect = !allVisible && !gridPlan.current;
300
+ return ((0, jsx_runtime_1.jsxs)(Cell, { className: headerClasses, textAlign: "start", children: [(0, jsx_runtime_1.jsx)(popular_badge_1.default, { isInSignup: isInSignup, planSlug: planSlug, additionalClassName: popularBadgeClasses }), (0, jsx_runtime_1.jsxs)(PlanSelector, { children: [(0, jsx_runtime_1.jsxs)("h4", { className: (0, clsx_1.default)('plan-comparison-grid__title', showPlanSelect && 'is-select-trigger'), children: [(0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__title-label", children: gridPlan.planTitle }), showPlanSelect && ((0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__title-icon", children: (0, jsx_runtime_1.jsx)(icons_1.Icon, { icon: icons_1.chevronRightSmall, size: 30 }) }))] }), showPlanSelect && ((0, jsx_runtime_1.jsx)("select", { onChange: (event) => onPlanChange(planSlug, event), className: "plan-comparison-grid__title-select", value: planSlug, children: displayedGridPlans.map(({ planSlug: otherPlan, planTitle }) => {
301
+ const isVisiblePlan = visibleGridPlans.find(({ planSlug }) => planSlug === otherPlan);
302
+ if (isVisiblePlan && otherPlan !== planSlug) {
303
+ return null;
304
+ }
305
+ return ((0, jsx_runtime_1.jsx)("option", { value: otherPlan, children: planTitle }, otherPlan));
306
+ }) }))] }), (0, jsx_runtime_1.jsx)(header_price_1.default, { planSlug: planSlug, currentSitePlanSlug: currentSitePlanSlug, visibleGridPlans: visibleGridPlans }), (0, jsx_runtime_1.jsx)("div", { className: "plan-comparison-grid__billing-info", children: (0, jsx_runtime_1.jsx)(billing_timeframe_1.default, { planSlug: planSlug, showRefundPeriod: showRefundPeriod }) }), (0, jsx_runtime_1.jsx)(action_button_1.default, { currentSitePlanSlug: currentSitePlanSlug, availableForPurchase: gridPlan.availableForPurchase, isInSignup: isInSignup, planSlug: planSlug, planActionOverrides: planActionOverrides, showMonthlyPrice: false, isStuck: false, visibleGridPlans: visibleGridPlans })] }));
307
+ };
308
+ const PlanTypeSelectorWrapper = styled_1.default.div `
309
+ display: none;
310
+ ${(0, css_mixins_1.plansGridMediumLarge)((0, react_1.css) `
311
+ display: block;
312
+ `)}
313
+ `;
314
+ const ComparisonGridHeader = (0, react_2.forwardRef)(({ displayedGridPlans, visibleGridPlans, isInSignup, isFooter, onPlanChange, currentSitePlanSlug, planActionOverrides, selectedPlan, isHiddenInMobile, showRefundPeriod, isStuck, planTypeSelectorProps, }, ref) => {
315
+ const translate = (0, i18n_calypso_1.useTranslate)();
316
+ const allVisible = visibleGridPlans.length === displayedGridPlans.length;
317
+ const { coupon } = (0, grid_context_1.usePlansGridContext)();
318
+ return ((0, jsx_runtime_1.jsxs)(PlanRow, { isHiddenInMobile: isHiddenInMobile, ref: ref, children: [(0, jsx_runtime_1.jsx)(RowTitleCell, { className: "plan-comparison-grid__header-cell is-placeholder-header-cell", isPlaceholderHeaderCell: true, children: isStuck && planTypeSelectorProps && ((0, jsx_runtime_1.jsx)(PlanTypeSelectorWrapper, { children: (0, jsx_runtime_1.jsx)(plan_type_selector_1.default, { ...planTypeSelectorProps, title: translate('Billing Cycle'), hideDiscount: true, coupon: coupon }) })) }, "feature-name"), (0, jsx_runtime_1.jsx)(header_price_context_1.default, { children: visibleGridPlans.map(({ planSlug }, index) => ((0, jsx_runtime_1.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))) })] }));
319
+ });
320
+ const ComparisonGridFeatureGroupRowCell = ({ feature, visibleGridPlans, planSlug, isStorageFeature, intervalType, activeTooltipId, setActiveTooltipId, showUpgradeableStorage, onStorageAddOnClick, }) => {
321
+ const { gridPlansIndex, enableFeatureTooltips, hideUnsupportedFeatures } = (0, grid_context_1.usePlansGridContext)();
322
+ const gridPlan = gridPlansIndex[planSlug];
323
+ const translate = (0, i18n_calypso_1.useTranslate)();
324
+ const highlightAdjacencyMatrix = (0, use_highlight_adjacency_matrix_1.default)({
325
+ renderedGridPlans: visibleGridPlans,
326
+ });
327
+ if (!gridPlan) {
328
+ return null;
329
+ }
330
+ const featureSlug = feature?.getSlug();
331
+ const hasFeature = isStorageFeature ||
332
+ (featureSlug
333
+ ? [...gridPlan.features.wpcomFeatures, ...gridPlan.features.jetpackFeatures]
334
+ .filter((feature) => 'monthly' === intervalType ? !feature.availableOnlyForAnnualPlans : true)
335
+ .some((feature) => feature.getSlug() === featureSlug)
336
+ : false);
337
+ const featureLabel = featureSlug
338
+ ? gridPlan?.features?.comparisonGridFeatureLabels?.[featureSlug]
339
+ : undefined;
340
+ const cellClasses = (0, clsx_1.default)('plan-comparison-grid__feature-group-row-cell', 'plan-comparison-grid__plan', (0, calypso_products_1.getPlanClass)(planSlug), {
341
+ 'popular-plan-parent-class': gridPlan.highlightLabel,
342
+ 'has-feature': hasFeature,
343
+ 'has-feature-label': !!featureLabel,
344
+ 'hide-unsupported-feature': hideUnsupportedFeatures && !hasFeature && !featureLabel,
345
+ 'title-is-subtitle': 'live-chat-support' === featureSlug,
346
+ 'is-left-of-highlight': highlightAdjacencyMatrix[planSlug]?.leftOfHighlight,
347
+ 'is-right-of-highlight': highlightAdjacencyMatrix[planSlug]?.rightOfHighlight,
348
+ 'is-only-highlight': highlightAdjacencyMatrix[planSlug]?.isOnlyHighlight,
349
+ });
350
+ const planPaymentTransactionFees = gridPlan.features.wpcomFeatures?.find((feature) => feature?.getFeatureGroup?.() === calypso_products_1.FEATURE_GROUP_PAYMENT_TRANSACTION_FEES);
351
+ return ((0, jsx_runtime_1.jsx)(Cell, { className: cellClasses, textAlign: "center", children: isStorageFeature ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-title", children: translate('Storage') }), (0, jsx_runtime_1.jsx)(storage_1.PlanStorage, { planSlug: planSlug, onStorageAddOnClick: onStorageAddOnClick, showUpgradeableStorage: showUpgradeableStorage })] })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: calypso_products_1.FEATURE_GROUP_PAYMENT_TRANSACTION_FEES === featureSlug ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: planPaymentTransactionFees ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(plans_2023_tooltip_1.Plans2023Tooltip, { text: enableFeatureTooltips ? feature?.getDescription?.() : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: `${planSlug}-${featureSlug}`, children: (0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-title", children: feature?.getAlternativeTitle?.() || feature?.getTitle() }) }), (0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-conditional-title", children: planPaymentTransactionFees?.getAlternativeTitle?.() })] })) : ((0, jsx_runtime_1.jsx)(components_1.Gridicon, { icon: "minus-small", color: "#C3C4C7" })) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [feature?.getIcon && ((0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-image", children: feature.getIcon() })), (0, jsx_runtime_1.jsx)(plans_2023_tooltip_1.Plans2023Tooltip, { text: enableFeatureTooltips ? feature?.getDescription?.() : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: `${planSlug}-${featureSlug}`, children: (0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-title", children: feature?.getAlternativeTitle?.() || feature?.getTitle() }) }), feature?.getCompareTitle && ((0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-subtitle", children: feature.getCompareTitle() })), featureLabel && ((0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-conditional-title", children: featureLabel })), hasFeature && feature?.getCompareSubtitle && ((0, jsx_runtime_1.jsx)("span", { className: "plan-comparison-grid__plan-subtitle", children: feature.getCompareSubtitle() })), hasFeature && !featureLabel && ((0, jsx_runtime_1.jsx)(components_1.Gridicon, { icon: "checkmark", color: "var(--studio-wordpress-blue-50)" })), !hasFeature && !featureLabel && (0, jsx_runtime_1.jsx)(components_1.Gridicon, { icon: "minus-small", color: "#C3C4C7" })] })) })) }));
352
+ };
353
+ const ComparisonGridFeatureGroupRow = ({ feature, isHiddenInMobile, allJetpackFeatures, visibleGridPlans, planFeatureFootnotes, isStorageFeature, isHighlighted, intervalType, activeTooltipId, setActiveTooltipId, showUpgradeableStorage, onStorageAddOnClick, }) => {
354
+ const translate = (0, i18n_calypso_1.useTranslate)();
355
+ const rowClasses = (0, clsx_1.default)('plan-comparison-grid__feature-group-row', {
356
+ 'is-storage-feature': isStorageFeature,
357
+ });
358
+ const featureSlug = feature?.getSlug() ?? '';
359
+ const footnote = planFeatureFootnotes?.footnotesByFeature?.[featureSlug];
360
+ const tooltipId = `${feature?.getSlug()}-comparison-grid`;
361
+ const { enableFeatureTooltips } = (0, grid_context_1.usePlansGridContext)();
362
+ return ((0, jsx_runtime_1.jsxs)(Row, { isHiddenInMobile: isHiddenInMobile, className: rowClasses, isHighlighted: isHighlighted, children: [(0, jsx_runtime_1.jsx)(RowTitleCell, { className: "is-feature-group-row-title-cell", isFeatureGroupRowTitleCell: true, children: isStorageFeature ? ((0, jsx_runtime_1.jsx)(plans_2023_tooltip_1.Plans2023Tooltip, { text: enableFeatureTooltips
363
+ ? translate('Space to store your photos, media, and more.')
364
+ : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: tooltipId, children: translate('Storage') })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: feature && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(plans_2023_tooltip_1.Plans2023Tooltip, { text: enableFeatureTooltips ? feature.getDescription?.() : undefined, setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: tooltipId, children: [feature.getTitle(), footnote && ((0, jsx_runtime_1.jsx)(FeatureFootnote, { children: (0, jsx_runtime_1.jsx)("sup", { children: footnote }) }))] }), allJetpackFeatures.has(feature.getSlug()) ? ((0, jsx_runtime_1.jsx)(JetpackIconContainer, { children: (0, jsx_runtime_1.jsx)(plans_2023_tooltip_1.Plans2023Tooltip, { text: translate('Security, performance, and growth tools—powered by Jetpack.'), setActiveTooltipId: setActiveTooltipId, activeTooltipId: activeTooltipId, id: `jp-${tooltipId}`, children: (0, jsx_runtime_1.jsx)(components_1.JetpackLogo, { size: 16 }) }) })) : null] })) })) }, "feature-name"), visibleGridPlans.map(({ planSlug }) => ((0, jsx_runtime_1.jsx)(ComparisonGridFeatureGroupRowCell, { feature: feature, allJetpackFeatures: allJetpackFeatures, visibleGridPlans: visibleGridPlans, planSlug: planSlug, isStorageFeature: isStorageFeature, intervalType: intervalType, activeTooltipId: activeTooltipId, setActiveTooltipId: setActiveTooltipId, showUpgradeableStorage: showUpgradeableStorage, onStorageAddOnClick: onStorageAddOnClick }, planSlug)))] }));
365
+ };
366
+ const FeatureGroup = ({ featureGroup, selectedFeature, intervalType, activeTooltipId, setActiveTooltipId, showUpgradeableStorage, onStorageAddOnClick, featureGroupMap, visibleGridPlans, planFeatureFootnotes, }) => {
367
+ const { allFeaturesList } = (0, grid_context_1.usePlansGridContext)();
368
+ const [firstSetOfFeatures] = Object.keys(featureGroupMap);
369
+ const [visibleFeatureGroups, setVisibleFeatureGroups] = (0, react_2.useState)([
370
+ firstSetOfFeatures,
371
+ ]);
372
+ const features = featureGroup.getFeatures();
373
+ const featureObjects = (0, filter_unused_features_object_1.default)(visibleGridPlans, (0, get_plan_features_object_1.default)(allFeaturesList, features));
374
+ const isHiddenInMobile = !visibleFeatureGroups.includes(featureGroup.slug);
375
+ const allJetpackFeatures = (0, element_1.useMemo)(() => {
376
+ const allPlans = (0, calypso_products_1.getPlans)();
377
+ const jetpackFeatures = new Set(Object.values(allPlans)
378
+ .map(({ get2023PricingGridSignupJetpackFeatures, get2023PlanComparisonJetpackFeatureOverride, }) => {
379
+ const jetpackFeatures = get2023PricingGridSignupJetpackFeatures?.();
380
+ const additionalJetpackFeatures = get2023PlanComparisonJetpackFeatureOverride?.();
381
+ return [
382
+ ...(jetpackFeatures ? jetpackFeatures : []),
383
+ ...(additionalJetpackFeatures ? additionalJetpackFeatures : []),
384
+ ];
385
+ })
386
+ .flat());
387
+ return jetpackFeatures;
388
+ }, []);
389
+ const handleFeatureGroupToggle = (0, react_2.useCallback)(() => {
390
+ const index = visibleFeatureGroups.indexOf(featureGroup.slug);
391
+ const newVisibleFeatureGroups = [...visibleFeatureGroups];
392
+ if (index === -1) {
393
+ newVisibleFeatureGroups.push(featureGroup.slug);
394
+ }
395
+ else {
396
+ newVisibleFeatureGroups.splice(index, 1);
397
+ }
398
+ setVisibleFeatureGroups(newVisibleFeatureGroups);
399
+ }, [featureGroup, setVisibleFeatureGroups, visibleFeatureGroups]);
400
+ // Skip non Jetpack feature groups without any available features.
401
+ if (featureGroup.slug !== calypso_products_1.FEATURE_GROUP_ESSENTIAL_FEATURES && !featureObjects.length) {
402
+ return null;
403
+ }
404
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "plan-comparison-grid__feature-group", children: [(0, jsx_runtime_1.jsx)(TitleRow, { className: "plan-comparison-grid__feature-group-title-row", onClick: handleFeatureGroupToggle, children: (0, jsx_runtime_1.jsxs)(Title, { isHiddenInMobile: isHiddenInMobile, children: [(0, jsx_runtime_1.jsx)(components_1.Gridicon, { icon: "chevron-up", size: 12, color: "#1E1E1E" }), (0, jsx_runtime_1.jsx)("span", { children: featureGroup.getTitle() })] }) }), featureObjects.map((feature) => ((0, jsx_runtime_1.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 === calypso_products_1.FEATURE_GROUP_ESSENTIAL_FEATURES ? ((0, jsx_runtime_1.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));
405
+ };
406
+ const ComparisonGrid = ({ intervalType, isInSignup, currentSitePlanSlug, planActionOverrides, selectedPlan, selectedFeature, showUpgradeableStorage, stickyRowOffset, onStorageAddOnClick, showRefundPeriod, planTypeSelectorProps, gridSize, }) => {
407
+ const { gridPlans, gridPlansIndex, featureGroupMap } = (0, grid_context_1.usePlansGridContext)();
408
+ const [activeTooltipId, setActiveTooltipId] = (0, use_manage_tooltip_toggle_1.useManageTooltipToggle)();
409
+ const [visiblePlans, setVisiblePlans] = (0, react_2.useState)([]);
410
+ const displayedGridPlans = (0, element_1.useMemo)(() => {
411
+ return (0, sort_plan_properties_1.sortPlans)(gridPlans, currentSitePlanSlug, 'small' === gridSize);
412
+ }, [gridPlans, currentSitePlanSlug, gridSize]);
413
+ (0, react_2.useEffect)(() => {
414
+ setVisiblePlans((prev) => {
415
+ let visibleLength = displayedGridPlans.length;
416
+ switch (gridSize) {
417
+ case 'large':
418
+ visibleLength = 4;
419
+ break;
420
+ case 'medium':
421
+ visibleLength = 3;
422
+ break;
423
+ case 'smedium':
424
+ case 'small':
425
+ visibleLength = 2;
426
+ break;
427
+ }
428
+ // visible length changed, update with the current gridPlans
429
+ // - we don't care about previous order
430
+ if (prev.length !== visibleLength) {
431
+ return displayedGridPlans.slice(0, visibleLength).map(({ planSlug }) => planSlug);
432
+ }
433
+ // prev state out of sync with current gridPlans (e.g. gridPlans updated to a different term)
434
+ // - we care about previous order
435
+ const isPrevStale = prev.some((planSlug) => !gridPlansIndex[planSlug]);
436
+ if (isPrevStale) {
437
+ return prev.map((planSlug) => {
438
+ const gridPlan = displayedGridPlans.find((gridPlan) => (0, calypso_products_1.getPlanClass)(gridPlan.planSlug) === (0, calypso_products_1.getPlanClass)(planSlug));
439
+ return gridPlan?.planSlug ?? planSlug;
440
+ });
441
+ }
442
+ // nothing to update
443
+ return prev;
444
+ });
445
+ }, [gridSize, displayedGridPlans, gridPlansIndex]);
446
+ const visibleGridPlans = (0, element_1.useMemo)(() => visiblePlans.reduce((acc, planSlug) => {
447
+ const gridPlan = displayedGridPlans.find((gridPlan) => (0, calypso_products_1.getPlanClass)(gridPlan.planSlug) === (0, calypso_products_1.getPlanClass)(planSlug));
448
+ if (gridPlan) {
449
+ acc.push(gridPlan);
450
+ }
451
+ return acc;
452
+ }, []), [visiblePlans, displayedGridPlans]);
453
+ const onPlanChange = (0, react_2.useCallback)((currentPlan, event) => {
454
+ const newPlan = event.currentTarget.value;
455
+ const newVisiblePlans = visiblePlans.map((plan) => plan === currentPlan ? newPlan : plan);
456
+ setVisiblePlans(newVisiblePlans);
457
+ }, [visiblePlans]);
458
+ const planFeatureFootnotes = (0, element_1.useMemo)(() => {
459
+ // This is the main list of all footnotes. It is displayed at the bottom of the comparison grid.
460
+ const footnoteList = [];
461
+ // This is a map of features to the index of the footnote in the main list of footnotes.
462
+ const footnotesByFeature = {};
463
+ Object.values(featureGroupMap).map((featureGroup) => {
464
+ const footnotes = featureGroup?.getFootnotes?.();
465
+ if (!footnotes) {
466
+ return;
467
+ }
468
+ Object.keys(footnotes).map((footnote) => {
469
+ const footnoteFeatures = footnotes[footnote];
470
+ // First we add the footnote to the main list of footnotes.
471
+ footnoteList.push(footnote);
472
+ // Then we add each feature that has this footnote to the map of footnotes by feature.
473
+ const currentFootnoteIndex = footnoteList.length;
474
+ footnoteFeatures.map((feature) => {
475
+ footnotesByFeature[feature] = currentFootnoteIndex;
476
+ });
477
+ });
478
+ });
479
+ return {
480
+ footnoteList,
481
+ footnotesByFeature,
482
+ };
483
+ }, [featureGroupMap]);
484
+ // 100px is the padding of the footer row
485
+ const [bottomHeaderRef, isBottomHeaderInView] = (0, react_intersection_observer_1.useInView)({ rootMargin: '-100px' });
486
+ /**
487
+ * Search for "any" plan with a highlight label, not just the visible ones.
488
+ * This will keep the grid static while user interacts (selects different plans to compare).
489
+ * Some padding is applied in the stylesheet to cover the badges/labels.
490
+ */
491
+ const hasHighlightedPlan = gridPlans.some(({ highlightLabel }) => !!highlightLabel);
492
+ const classes = (0, clsx_1.default)('plans-grid-next-comparison-grid', {
493
+ 'has-highlighted-plan': hasHighlightedPlan,
494
+ });
495
+ return ((0, jsx_runtime_1.jsxs)("div", { className: classes, children: [(0, jsx_runtime_1.jsxs)(Grid, { visiblePlans: visiblePlans.length, children: [(0, jsx_runtime_1.jsx)(sticky_container_1.StickyContainer, { disabled: isBottomHeaderInView, stickyClass: "is-sticky-header-row", stickyOffset: stickyRowOffset, zIndex: 1, children: (isStuck) => ((0, jsx_runtime_1.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) => ((0, jsx_runtime_1.jsx)(FeatureGroup, { featureGroup: featureGroup, visibleGridPlans: visibleGridPlans, featureGroupMap: featureGroupMap, selectedFeature: selectedFeature, intervalType: intervalType, activeTooltipId: activeTooltipId, setActiveTooltipId: setActiveTooltipId, showUpgradeableStorage: showUpgradeableStorage, onStorageAddOnClick: onStorageAddOnClick, planFeatureFootnotes: planFeatureFootnotes }, featureGroup.slug))), (0, jsx_runtime_1.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 })] }), (0, jsx_runtime_1.jsx)("div", { className: "plan-comparison-grid__footer", children: planFeatureFootnotes?.footnoteList && ((0, jsx_runtime_1.jsx)(FeatureFootnotes, { children: (0, jsx_runtime_1.jsx)("ol", { children: planFeatureFootnotes?.footnoteList?.map((footnote, index) => {
496
+ return (0, jsx_runtime_1.jsx)("li", { children: footnote }, `${footnote}-${index}`);
497
+ }) }) })) })] }));
498
+ };
499
+ const GRID_BREAKPOINTS = new Map([
500
+ ['small', 0],
501
+ ['smedium', 686],
502
+ ['medium', 835], // enough to fit Enterpreneur plan. was 686
503
+ ['large', 1005], // enough to fit Enterpreneur plan. was 870
504
+ ['xlarge', 1180],
505
+ ]);
506
+ // TODO
507
+ // Now that everything under is functional component, we can deprecate this wrapper and only keep ComparisonGrid instead.
508
+ // More details can be found in https://github.com/Automattic/wp-calypso/issues/87047
509
+ 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 }) => {
510
+ const gridContainerRef = (0, element_1.useRef)(null);
511
+ // TODO: this will be deprecated along side removing the wrapper component
512
+ const gridSize = (0, use_grid_size_1.default)({
513
+ containerRef: gridContainerRef,
514
+ containerBreakpoints: GRID_BREAKPOINTS,
515
+ });
516
+ const classNames = (0, clsx_1.default)('plans-grid-next', className, {
517
+ 'is-small': 'small' === gridSize,
518
+ 'is-smedium': 'smedium' === gridSize,
519
+ 'is-medium': 'medium' === gridSize,
520
+ 'is-large': 'large' === gridSize,
521
+ 'is-xlarge': 'xlarge' === gridSize,
522
+ 'is-visible': true,
523
+ });
524
+ return ((0, jsx_runtime_1.jsx)("div", { ref: gridContainerRef, className: classNames, children: (0, jsx_runtime_1.jsx)(grid_context_1.default, { 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: (0, jsx_runtime_1.jsx)(ComparisonGrid, { intervalType: intervalType, isInSignup: isInSignup, currentSitePlanSlug: currentSitePlanSlug, siteId: siteId, selectedPlan: selectedPlan, selectedFeature: selectedFeature, showUpgradeableStorage: showUpgradeableStorage, stickyRowOffset: stickyRowOffset, onStorageAddOnClick: onStorageAddOnClick, gridSize: gridSize ?? undefined, ...otherProps }) }) }));
525
+ };
526
+ exports.default = WrappedComparisonGrid;
527
+ //# 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,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HideUnsupportedFeatures = exports.DefaultComparisonGrid = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const calypso_products_1 = require("@automattic/calypso-products");
6
+ const __1 = require("../..");
7
+ const ComponentWrapper = (props) => {
8
+ const gridPlans = (0, __1.useGridPlansForComparisonGrid)({
9
+ eligibleForFreeHostingTrial: true,
10
+ hasRedeemedDomainCredit: undefined,
11
+ hiddenPlans: undefined,
12
+ isDisplayingPlansNeededForFeature: false,
13
+ isInSignup: false,
14
+ isSubdomainNotGenerated: false,
15
+ selectedFeature: undefined,
16
+ selectedPlan: undefined,
17
+ showLegacyStorageFeature: false,
18
+ reflectStorageSelectionInPlanPrices: false,
19
+ term: 'TERM_ANNUALLY',
20
+ useFreeTrialPlanSlugs: undefined,
21
+ // Mirror values from props
22
+ siteId: props.siteId,
23
+ intent: props.intent,
24
+ coupon: props.coupon,
25
+ allFeaturesList: props.allFeaturesList,
26
+ useCheckPlanAvailabilityForPurchase: props.useCheckPlanAvailabilityForPurchase,
27
+ });
28
+ return (gridPlans && ((0, jsx_runtime_1.jsx)(__1.ComparisonGrid, { ...props, gridPlans: gridPlans, featureGroupMap: (0, calypso_products_1.getPlanFeaturesGroupedForComparisonGrid)() })));
29
+ };
30
+ const defaultProps = {
31
+ allFeaturesList: (0, calypso_products_1.getFeaturesList)(),
32
+ coupon: undefined,
33
+ currentSitePlanSlug: undefined,
34
+ featureGroupMap: (0, calypso_products_1.getPlanFeaturesGroupedForComparisonGrid)(),
35
+ hideUnavailableFeatures: false,
36
+ intervalType: 'yearly',
37
+ isInAdmin: false,
38
+ isInSignup: true,
39
+ onStorageAddOnClick: () => { },
40
+ planActionOverrides: undefined,
41
+ recordTracksEvent: () => { },
42
+ showRefundPeriod: false,
43
+ showUpgradeableStorage: true,
44
+ siteId: undefined,
45
+ stickyRowOffset: 0,
46
+ useCheckPlanAvailabilityForPurchase: () => ({}),
47
+ useAction: () => ({
48
+ primary: {
49
+ text: 'test',
50
+ callback: () => { },
51
+ status: 'enabled',
52
+ },
53
+ postButtonText: '',
54
+ }),
55
+ };
56
+ const meta = {
57
+ title: 'ComparisonGrid',
58
+ component: ComponentWrapper,
59
+ };
60
+ exports.default = meta;
61
+ exports.DefaultComparisonGrid = {
62
+ name: 'Default',
63
+ args: {
64
+ ...defaultProps,
65
+ },
66
+ };
67
+ exports.HideUnsupportedFeatures = {
68
+ name: 'Hide unsupported features',
69
+ args: {
70
+ ...defaultProps,
71
+ hideUnsupportedFeatures: true,
72
+ },
73
+ };
74
+ //# sourceMappingURL=index.stories.js.map