From 14eac461be88aeba31987366ee66f348dc2611fa Mon Sep 17 00:00:00 2001 From: "Cal H." Date: Mon, 18 Aug 2025 18:59:19 +0100 Subject: [PATCH] feat: medal promotion on servers page (#4117) * feat: medal promotion on servers page * feat: medal server card * fix: styling changes * fix: colors for dark mode only * fix: light mode medal promotion * feat: finish server card layout * feat: countdown on server panel * fix: lint * feat: use same gradient as promo * fix: scale for medal bg * fix: border around server icon * feat: medal subscr expiry date stuff * feat: progress on plans within the modal * feat: finalize plan modal stage * fix: unused scss * feat: remove buttons from cards * feat: upgrade button opens modal on server panel * feat: billing endpoint * fix: lint issues * fix: lint issues * fix: lint issues * feat: better handling of downgrades + existing plan checks * feat: update medal url * feat: proration visual in modal * feat: standardize upgrade modal into ServersUpgradeModalWrapper * feat: replace upgrade PurchaseModal with ServersUpgradeModalWrapper * feat: allow server region * fix: lint * fix: lint * fix: medal frontend completion * fix: lint issues * feat: ad * fix: hover tooltip + orange new server sparkle * feat: ad * fix: lint issues new eslint * feat: match ad * feat: support for ?dry=true * fix: lint isuses * fix: lint issues * fix: TeleportDropdownMenu imports * fix: hash nav issues * feat: clarify confirm changes btn * fix: lint issues * fix: "Using new payment method" * fix: lint * fix: re-add -mt-2 --------- Signed-off-by: Cal H. --- .../src/components/ui/PromotionWrapper.vue | 6 +- .../illustrations/medal_promo_background.svg | 490 ++++++++++++++++++ .../images/servers/medal_server_icon.svg | 12 + apps/frontend/src/assets/styles/global.scss | 10 + .../src/components/ui/AdPlaceholder.vue | 6 +- .../src/components/ui/servers/ServerIcon.vue | 2 +- .../components/ui/servers/ServerListing.vue | 137 +++-- .../ui/servers/ServersUpgradeModalWrapper.vue | 261 ++++++++++ .../servers/marketing/MedalPlanPromotion.vue | 75 +++ .../marketing/MedalServerCountdown.vue | 161 ++++++ .../servers/marketing/MedalServerListing.vue | 251 +++++++++ apps/frontend/src/composables/featureFlags.ts | 1 + .../composables/servers/modules/general.ts | 2 + apps/frontend/src/pages/servers/index.vue | 45 +- .../src/pages/servers/manage/[id].vue | 16 +- .../servers/manage/[id]/options/index.vue | 2 +- .../src/pages/servers/manage/index.vue | 63 ++- .../src/pages/settings/billing/index.vue | 266 ++++++---- packages/assets/generated-icons.ts | 4 + packages/assets/icons/clock.svg | 1 + packages/assets/icons/rocket.svg | 1 + .../ui/src/components/base/OptionGroup.vue | 128 +++++ .../billing/ModalBasedServerPlan.vue | 138 +++++ .../billing/ModrinthServersPurchaseModal.vue | 140 ++++- .../billing/ServersPurchase0Plan.vue | 226 ++++++++ .../billing/ServersPurchase1Region.vue | 2 +- .../billing/ServersPurchase3Review.vue | 169 ++++-- .../src/components/billing/ServersSpecs.vue | 20 +- packages/ui/src/components/index.ts | 1 + packages/ui/src/composables/stripe.ts | 56 +- packages/ui/src/locales/en-US/index.json | 33 ++ packages/utils/servers/types/common.ts | 3 + packages/utils/servers/types/server.ts | 1 + packages/utils/types.ts | 32 ++ 34 files changed, 2476 insertions(+), 285 deletions(-) create mode 100644 apps/frontend/src/assets/images/illustrations/medal_promo_background.svg create mode 100644 apps/frontend/src/assets/images/servers/medal_server_icon.svg create mode 100644 apps/frontend/src/components/ui/servers/ServersUpgradeModalWrapper.vue create mode 100644 apps/frontend/src/components/ui/servers/marketing/MedalPlanPromotion.vue create mode 100644 apps/frontend/src/components/ui/servers/marketing/MedalServerCountdown.vue create mode 100644 apps/frontend/src/components/ui/servers/marketing/MedalServerListing.vue create mode 100644 packages/assets/icons/clock.svg create mode 100644 packages/assets/icons/rocket.svg create mode 100644 packages/ui/src/components/base/OptionGroup.vue create mode 100644 packages/ui/src/components/billing/ModalBasedServerPlan.vue create mode 100644 packages/ui/src/components/billing/ServersPurchase0Plan.vue diff --git a/apps/app-frontend/src/components/ui/PromotionWrapper.vue b/apps/app-frontend/src/components/ui/PromotionWrapper.vue index c8a2f1ca6..2a44681c5 100644 --- a/apps/app-frontend/src/components/ui/PromotionWrapper.vue +++ b/apps/app-frontend/src/components/ui/PromotionWrapper.vue @@ -34,17 +34,17 @@ function updateAdPosition() {