* Add a unit test on `SubscriptionFormatters.formatPrice`
* Add JSDoc to `formatPrice`
Also: Name the functions before exporting:
This fixes my IDE (WebStorm) navigation
* Make `'USD'` the default param instead of reassigning
* Create `formatCurrency` function
* Use `formatCurrency` in SubscriptionFormatters
* Use an `isNoCentsCurrency` logic for `CLP` `JPY` `KRW` `VND`
And remove custom `CLP` logic and locale
* Add `locale` param to `formatPrice`
* Generate `groups.json` and `localizedPlanPricing.json`
```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```
* Update scripts/plan-prices/plans.js to generate numbers instead of localized amounts
* Generate `groups.json` and `localizedPlanPricing.json`
```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```
* Remove generation of `plans.json`
As /services/web/frontend/js/main/plans.js was removed in https://github.com/overleaf/internal/pull/12593
* Sort currencies in alphabetical order in scripts/plan-prices/plans.js
* Generate `groups.json` and `localizedPlanPricing.json`
```
bin/exec web node ./scripts/recurly/recurly_prices.js --download -o prices.json
bin/exec web node ./scripts/plan-prices/plans.js -f ../../prices.json -o dir
```
* Use `formatCurrency` in price-summary.tsx
* Use `formatCurrency` in Subscription Pug files
* Fix unit tests SubscriptionHelperTests.js
* Remove unused `currencySymbol`
* Change to `formatCurrency` in other React components
* Add `CurrencyCode` JSDoc types
* Duplicate `formatCurrency` into services/web/app/src/util
* Wrap tests in a top-level describe block
* Use `narrowSymbol`
* Fix tests with `narrowSymbol` expects
* Revert deletion of old `formatPrice` in SubscriptionFormatters.js
* Rename `formatCurrency` -> `formatCurrencyLocalized`
* Revert deletion of `CurrencySymbol`
* Add split-test in SubscriptionController.js
* Add split-test in SubscriptionViewModelBuilder.js
* Add split-test in plans
* Add split-test in subscription-dashboard-context.tsx
* Add split-test in 4 more components
* Update tests
* Show currency and payment methods in interstitial page
* Fix `–` being printed. Use `–` instead
* Fix test with NOK
* Storybook: Fix missing `SplitTestProvider`
* Storybook: Revert "Remove unused `currencySymbol`"
This reverts commit e55387d4753f97bbf8e39e0fdc3ad17312122aaa.
* Replace `getSplitTestVariant` by `useSplitTestContext`
* Use parameterize currencyFormat in `generateInitialLocalizedGroupPrice`
* Fixup import paths of `formatCurrencyLocalized`
* Replace `% 1 === 0` by `Number.isInteger`
* Add comment explaining that any combinations of languages/currencies could happen
* Fixup after rebase: import `useSplitTestContext`
* Revert "Remove SplitTestProvider from subscription root"
This reverts commit be9f378fda715b86589ab0759737581c72321d87.
* Revert "Remove split test provider from some tests"
This reverts commit 985522932b550cfd38fa6a4f4c3d2ebaee6ff7df.
GitOrigin-RevId: 59a83cbbe0f7cc7e45f189c654e23fcf9bfa37af
* Fix "For student" link in footer isn't working because of hash being placed before querystring
* add scroll to top behaviour if "For students" link is accessed on the plans page
* Add an extra delay to make sure computation is finished before performing scroll to top behaviour
GitOrigin-RevId: 46b906271223267bc47ffcd781c25dc03f23a8e7
* Rename manage group entry point
* Migrate group management root page to React
* Add cypress tests for the group management react page
* Fix linting
* Add checkbox labels for screen-readers + remove unused classes
* Await on add/remove members calls
* Display the export CSV link for a full group
* Display error message when group is full
* Sort locales
* Handle the managers management page in React version
* Fix missing type in GroupMemberRow
* Split members and managers React pages
* Build API paths on frontend side + add cypress tests for each page
* Fix linting
* Update unit tests
* Review improvements
* Type API errors
GitOrigin-RevId: d124a9d24cbf33de8aacc5d69e9d46e7bcda93c5
* Update split test config and infrastructure for plans-page-layout-v3
* Implement view for `old-plans-page-annual` variant of the new split test:
- Make `annual` the default view for all elements on the old plans page
- Change the tooltip background to green for monthly/student view
* Implement a new design for the new plans page:
- switch annual and monthly locations (annual on the left now)
- change the tooltip background to green color for all choice
- make the monthly-annual switch has green background if annual is chosen
* Fix mobile view plans page header style
GitOrigin-RevId: b2b3c6ac6adbe26bf6def7e072493f503793cfcb
* change event segmentation to plans-page-layout-v2-annual
* update some new plans page event to have new event key
* add location segmentation key for some of the group plans events
GitOrigin-RevId: 99d8258112d9661955a196e57ca05a017afba0f4
* [web] hide the monthly/annual switch for small screens via css
Co-Authored-By: Jakob Ackermann <jakob.ackermann@overleaf.com>
* [web] merge logic for hiding elements shown in a subset of view
Co-Authored-By: M Fahru <m.fahru@overleaf.com>
* [web] hide the monthly/annual switch for small screens via css
Co-Authored-By: M Fahru <m.fahru@overleaf.com>
* [web] merge logic for hiding elements shown in a subset of view
Co-Authored-By: M Fahru <m.fahru@overleaf.com>
* fix inverted logic on monthly annual checking
* delete some duplicated logic and refactor
* merge switch functions
* move global variable into the main module
* simplify the enable and disable switch
* remove unused parseFloat
* simplify group plan pricing calculation
* simplify discount group plan logic
* simplify sticky header logic
* merge view and period switching
* fix underlining of switch text
* simplify class list toggling
* merging two function of the group plan
Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 5e51690514bbf1dee2639011748c6a8470e1c19a
* New plans page: Show initial price value upon first render
* fix wrong test on SubscriptionController and add new tests on SubscriptionHelper
GitOrigin-RevId: a339a97cff2df0728ba35885af8953c8a0e0b7c8