Skip to content

License upsell section#2401

Merged
j-chmielewski merged 22 commits into
devfrom
try-business-for-free
Mar 20, 2026
Merged

License upsell section#2401
j-chmielewski merged 22 commits into
devfrom
try-business-for-free

Conversation

@j-chmielewski

@j-chmielewski j-chmielewski commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Related issue: #2093

  • refactor license settings tab into explicit UI states for:
    • no license
    • expired license
    • valid business
    • valid enterprise
  • extract promotional and expired-notice markup into dedicated components
  • add no-license and expired-license upgrade sections
  • add "grace period" and "expires soon" warnings
  • remove stale frontend Starter tier/copy - no-license is represented consistently as null
- refactor license settings tab into explicit UI states for:
  - no license
  - expired license
  - valid business
  - valid enterprise
- extract promotional and expired-notice markup into dedicated components
- add no-license and expired-license upgrade sections
- update license details to show "Valid until" for expired licenses and align copy with the approved design
- migrate new license-tab copy to Paraglide messages and replace hardcoded pricing URLs with shared constants
- remove stale frontend Starter tier/copy so no-license is represented consistently as null
@j-chmielewski j-chmielewski self-assigned this Mar 18, 2026
@j-chmielewski j-chmielewski force-pushed the try-business-for-free branch from b931705 to e15d2f2 Compare March 20, 2026 08:31
@j-chmielewski j-chmielewski requested a review from Copilot March 20, 2026 08:49
@j-chmielewski j-chmielewski marked this pull request as ready for review March 20, 2026 08:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the Settings → License UI to explicitly model license states (no license, grace period, expired, valid Business, valid Enterprise) and introduces dedicated upsell/notice sections, aligning copy and visuals with the updated “Try Business for Free” design.

Changes:

  • Added a shared getLicenseState(...) helper and updated top-bar/Settings views to render by explicit license UI state.
  • Extracted “no license”, “expired/grace period notice”, and “Business → Enterprise upsell” sections into dedicated components.
  • Removed “Starter” tier references from the frontend types and updated UI copy/messages to consistently treat “no license” as null.

Reviewed changes

Copilot reviewed 13 out of 15 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
web/src/shared/utils/license.ts Introduces LicenseState + getLicenseState to centralize UI state derivation.
web/src/shared/constants.ts Adds externalLink.defguard.sales and licenseGracePeriodDays.
web/src/shared/components/PageTopBar/components/TopBarLicenseExpiration/TopBarLicenseExpiration.tsx Uses getLicenseState to determine grace-period/expired messaging.
web/src/shared/components/PageTopBar/components/TopBarLicense/TopBarLicenseFloating.tsx Updates top-bar license floating panel copy to localized messages and removes Starter copy.
web/src/shared/api/types.ts Removes Starter from LicenseTier.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/style.scss Adds styling for new license sections and expired notice layout.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/components/SettingsLicenseNoLicenseSection/SettingsLicenseNoLicenseSection.tsx New “Choose plan / Try Business for free / Contact sales” section for no-license state.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/components/SettingsLicenseInfoSection/SettingsLicenseInfoSection.tsx Updates license details UI, banners, and date formatting; hides limits when fully expired.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/components/SettingsLicenseExpiredNotice/SettingsLicenseExpiredNotice.tsx New expired/grace-period notice card with CTA.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/components/SettingsLicenseBusinessUpsellSection/SettingsLicenseBusinessUpsellSection.tsx New Business → Enterprise upsell section.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/SettingsLicenseTab.tsx Refactors main tab to render correct section by LicenseState.
web/messages/en/settings.json Adds/updates license-related localized strings.
web/messages/en/common.json Adds common license strings used across UI.
web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/assets/expired.png Adds expired notice image asset.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread web/messages/en/settings.json
Comment thread web/messages/en/settings.json Outdated
Comment thread web/src/pages/settings/SettingsIndexPage/tabs/SettingsLicenseTab/style.scss Outdated
filipslezaklab
filipslezaklab previously approved these changes Mar 20, 2026
@j-chmielewski j-chmielewski merged commit 5244407 into dev Mar 20, 2026
3 checks passed
@j-chmielewski j-chmielewski deleted the try-business-for-free branch March 20, 2026 09:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants