* [web] Initialize BS5 in subscription page
* [web] Update subscription-dashboard.tsx for BS5
* [web] Update row-link.tsx for BS5
* [web] Update modals
* [web] Add `btn` to `btn-inline-link` classes
* [web] Update circle change-to-group circle price element
* [web] Replace `list-item-with-margin-bottom` with `mb-3`
* [web] Update form elements to BS5
* [web] Use `useContactUsModal`
* [web] Adjust tables margin/padding, and more
* [web] Update change-to-group-modal.tsx
* [web] Add gap to subscription buttons
* [web] Remove subscription page colspan for md and above
* [web] Use Notification component
* [web] Update "leave group" buttons
* [web] Fix tests: add `ol-user` meta tag
* [web] Nest .hover-highlight in #subscription-dashboard-root
* [web] Update to OLRow/OLCol
* [web] Update to OLButtons
* [web] Update to OLFormGroup
* [web] Naming: use BSversion prefix
* [web] Set CancelSubscriptionButton as ghost directly in component
* [web] Set "Plan" font size
* [web] Simplify cancel-subscription buttons
* [web] Remove `--neutral-10` ModalFooter background
* [web] Simplify circle styles
* [web] Center discount badge
* [web] Update fieldset label
* [web] Add `<ul>` around RowLink
* [web] Define SCSS for row-link component
* [web] Remove some use of utility classes
* [web] Revert and update `fieldset` changes (fixes tests)
* [web] Fixup some more OLButtons
* [web] Fixup use of OLRow/OLCol
* [web] Reduce spacing below "legend-as-label"
* [web] Use h5 instead of small in OLModalTitle
* [web] Revert OLCol removal on lg screens
I had removed them by mistake because I wasn't using the proper breakpoints
* [web] Add backdrop to nested modal ContactUsModal
* [web] Don't prefill project URL in ContactUsModal
* [web] Fix lint
* [web] Share `className` prop in BS5 and BS3 modals
* [web] Set sub-title font sans serif (BS3)
* [web] Update remaining Alerts to OLNotification
GitOrigin-RevId: 7fd975ae3e992cebfaf71d4e182f8e13ec886d09
* Fix split-tests loading in React component: use `useSplitTestContext` instead of `getSplitTestVariant`
* Replace use of `isSplitTestEnabled` by `useSplitTestContext`
* Add SplitTestProvider to roots, and fix tests
* Create `useFeatureFlag` hook
* Use `useFeatureFlag` where applicable
GitOrigin-RevId: 9ff7bb3975d50bc4d07d74d93c482d56dc96f615
* 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