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
Copy link
Copy Markdown
Contributor

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

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
Copy link
Copy Markdown

Copilot AI left a comment

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants