MNTOR-1833/mozilla monitor rebrand (#3934)

* change brand name
* update logos to new assets
* find and fix places where old brand name is still used
---------

Co-authored-by: Francesco Lodolo <flodolo@mozilla.com>
Co-authored-by: Vincent <Vinnl@users.noreply.github.com>
Co-authored-by: Kaitlyn Andres <kandres@mozilla.com>
This commit is contained in:
Robert Helmer 2024-01-03 09:40:37 -08:00 коммит произвёл GitHub
Родитель 383c6cc36c
Коммит a36926ceef
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
34 изменённых файлов: 102 добавлений и 74 удалений

Просмотреть файл

@ -49,7 +49,7 @@ fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-2-content = Some
fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-3-title = Mark as fixed on this page
fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-3-content = This will help you keep track of which exposures still need your attention, and make your overall exposures go down.
fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-title = Watch for re-exposures
fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-content = This process does not remove your information from public records, so even after your information is removed, sites often add you back. If youd like us to handle this for you and automatically remove any new exposures, <upgrade_link>upgrade to { -brand-monitor-premium }</upgrade_link>.
fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-content = This process does not remove your information from public records, so even after your information is removed, sites often add you back. If youd like us to handle this for you and automatically remove any new exposures, <subscribe_link>subscribe to { -brand-monitor-plus }</subscribe_link>.
fix-flow-data-broker-profiles-manual-remove-review-profiles-headline = Review & remove your profiles
fix-flow-data-broker-profiles-manual-remove-button-mark-fixed = Mark as fixed
fix-flow-data-broker-profiles-manual-remove-button-remove-for-me = Remove them for me
@ -59,13 +59,13 @@ fix-flow-data-broker-profiles-automatic-remove-headline = Well auto-remove th
# $data_broker_count is the number of data brokers scanned monthly
fix-flow-data-broker-profiles-automatic-remove-subheadline = {
$data_broker_count ->
[one] Removing these stops the sale of your personal info on { $data_broker_count } site. Upgrade to { -brand-monitor-premium } and youll get:
*[other] Removing these stops the sale of your personal info on { $data_broker_count } sites. Upgrade to { -brand-monitor-premium } and youll get:
[one] Removing these stops the sale of your personal info on { $data_broker_count } site. Subscribe to { -brand-monitor-plus } and youll get:
*[other] Removing these stops the sale of your personal info on { $data_broker_count } sites. Subscribe to { -brand-monitor-plus } and youll get:
}
# Variables:
# $percent is the percentage you can save subscribing to an annual/yearly plan
fix-flow-data-broker-profiles-automatic-remove-save-percent = Save { $percent }% with yearly plan 🎉
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-headline = { -brand-premium } Protection
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-headline = { -brand-monitor-plus }
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-toggle-yearly = Yearly
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-toggle-monthly = Monthly
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-monthly-frequency = Billed monthly
@ -73,7 +73,7 @@ fix-flow-data-broker-profiles-automatic-remove-features-select-plan-monthly-butt
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-yearly-frequency = Billed yearly
fix-flow-data-broker-profiles-automatic-remove-features-select-plan-yearly-button = Select yearly plan
fix-flow-data-broker-profiles-automatic-remove-features-headline = Features:
fix-flow-data-broker-profiles-automatic-remove-features-remove-personal-info = Automatic removal of personal info from sites that are selling it
fix-flow-data-broker-profiles-automatic-remove-features-remove-personal-info = Automatic data removal from sites that are selling your personal info
fix-flow-data-broker-profiles-automatic-remove-features-guided-experience = Guided experience through high risk data breaches that require manual steps
fix-flow-data-broker-profiles-automatic-remove-features-continuous-monitoring = Continuous monitoring for new exposures
fix-flow-data-broker-profiles-automatic-remove-features-breach-alerts = Alerts when your data has been breached

Просмотреть файл

@ -1,4 +1,4 @@
public-nav-name = { -brand-fx-monitor }
public-nav-name = { -brand-mozilla-monitor }
landing-all-hero-title = Find where your private info is exposed — and take it back
landing-all-hero-lead = We scan data breaches to see if your data has been leaked and give you steps to fix it.
@ -21,6 +21,18 @@ landing-all-value-prop-info-at-risk-description = Data leaks are unfortunately p
landing-all-quote = <data_breaches>Data breaches</data_breaches> happen every 11 minutes, exposing your private information — but dont worry, we can help.
# Non-US FAQ
landing-all-faq-title = Frequently asked questions
# FAQ is an acronym for Frequently Asked Questions
landing-all-faq-see-all = See all FAQs
landing-all-data-breach-definition-ans = What exactly is a data breach?
landing-all-data-breach-definition-qn = A data breach happens when personal or private information gets exposed, stolen or copied without permission. These security incidents can result from cyber attacks on websites, apps or any database where peoples personal information resides. A data breach can also happen accidentally, like if someones login credentials get posted publicly.
landing-all-data-breach-next-steps-qn = I just found out Im in a data breach. What do I do next?
landing-all-data-breach-next-steps-ans = Visit { -brand-mozilla-monitor } to learn what to do after a data breach and get guided steps to resolve exposures of your personal info. Hackers rely on people reusing passwords, so its important to create strong, unique passwords for all your accounts. Keep your passwords in a safe place that only you have access to; this could be the same place where you store important documents or a password manager.
landing-all-data-breach-info-qn = What information gets exposed in data breaches?
landing-all-data-breach-info-ans = Not all breaches expose all the same info. It just depends on what hackers can access. Many data breaches expose email addresses and passwords. Others expose more sensitive information such as credit card numbers, PIN numbers, and social security numbers.
# Social proof
# Variables

Просмотреть файл

@ -97,7 +97,7 @@ landing-premium-plans-cards-feature-scan-plus =
*[other] <b>Monthly</b> scan of { $dataBrokerTotalCount } data broker sites that may be selling your personal info
}
landing-premium-plans-cards-feature-removal-free = <b>Manual removal</b> of personal info from sites that are selling it
landing-premium-plans-cards-feature-removal-plus = <b>Automatic removal</b> of personal info from sites that are selling it
landing-premium-plans-cards-feature-removal-plus = <b>Automatic data removal</b> from sites that are selling your personal info
landing-premium-plans-cards-feature-alerts = Get alerts when your data has been breached
landing-premium-plans-cards-feature-guidance = <b>Guided help</b> to fix high-risk data breaches
landing-premium-plans-cards-feature-monitoring = Continuous monitoring
@ -112,6 +112,17 @@ landing-premium-value-prop-progress-card-illustration-alt = Progress card deline
landing-premium-quote = Theres a $240 billion industry of <data_brokers>data brokers</data_brokers> selling your private information for profit. Its time to take back your privacy.
# US FAQ
landing-premium-what-websites-sell-info-qn = What kinds of websites sell my personal information?
landing-premium-what-websites-sell-info-ans = Certain websites are in the business of collecting and selling peoples personal information without their consent, which is unfortunately legal in the US. These sites are called data brokers and they make up a $240 billion dollar industry. They use sophisticated methods to collect personal, financial, location, and even health information, often without your consent or even your knowledge. Theyll sell what theyve collected to third parties, profiting from your information and leaving you open to violations of your privacy and security.
landing-premium-continuous-data-removal-qn = What kinds of websites sell my personal information?
# Variables:
# $data_broker_sites_total_num is the total number of data broker sites available to scan. It will always be plural.
landing-premium-continuous-data-removal-ans = { $data_broker_sites_total_num ->
*[other] Every month, we use the information you provided about yourself (name, location and birthdate) to search across { $data_broker_sites_total_num } data broker sites that sell peoples private information. If we find your data on any of these sites, we initiate the request for removal. Data removal can take anywhere from a day to a month. This feature is available for { -brand-monitor-plus } users only. <learn_more_link>Learn more here.</learn_more_link>
}
# Scan Limit
landing-premium-max-scan = Weve reached the maximum scans for the month. Enter your email to get on our waitlist.

Просмотреть файл

@ -6,7 +6,7 @@ onboarding-steps-enter-info-back = Go back
onboarding-steps-find-exposures-label = Find exposures
onboarding-get-started-heading = Welcome to { -product-short-name }. Lets find your exposed information.
onboarding-get-started-content-data = To find and fix your exposed data, well need to ask for your personal info. Rest assured we will safeguard your information like its our own.
onboarding-get-started-content-price = We believe in your right to privacy, so basic { -product-short-name } is always free. Upgrade to { -brand-premium } for continuous protection and automatic removal of your personal info.
onboarding-get-started-content-price = We believe in your right to privacy, so basic { -product-short-name } is always free. Subscribe to { -brand-monitor-plus } for continuous protection and automatic removal of your personal info.
onboarding-get-started-content-explainer = See how we protect your data
onboarding-get-started-cta-label = Start my free scan
onboarding-get-started-how-it-works-dialog-heading-line1 = Were here to protect your personal information
@ -19,9 +19,9 @@ onboarding-get-started-how-it-works-dialog-step1-content = {
*[other] With just a few key pieces of information, well search for you in all known data breaches and { $dataBrokerTotalCount } major data broker sites. All users get the first scan free.
}
onboarding-get-started-how-it-works-dialog-step2-heading = Remove your personal info
onboarding-get-started-how-it-works-dialog-step2-content = Well show you what personal info each data broker site is selling. Youll need to contact each data broker to request removal. Removal typically takes 7-10 business days, but some can take longer. Upgrade to { -brand-premium } and well handle this for you.
onboarding-get-started-how-it-works-dialog-step2-content = Well show you what personal info each data broker site is selling. Youll need to contact each data broker to request removal. Removal typically takes 7-10 business days, but some can take longer. Subscribe to { -brand-monitor-plus } and well handle this for you.
onboarding-get-started-how-it-works-dialog-step3-heading = Resolve data breaches
onboarding-get-started-how-it-works-dialog-step3-content = Well give you clear steps on how to resolve each data breach. Theyll require access to your accounts, so youll need to resolve them manually even if you upgrade to { -brand-premium }.
onboarding-get-started-how-it-works-dialog-step3-content = Theyll require access to your accounts, so youll need to resolve them manually even if you subscribe to { -brand-monitor-plus }.
onboarding-get-started-how-it-works-dialog-confirm-label = OK
onboarding-enter-details-title = Enter the details you want to protect

Просмотреть файл

@ -36,8 +36,8 @@ user-menu-signout-tooltip = Sign out of { -brand-fx-monitor }
footer-external-link-faq-label = FAQs
footer-external-link-faq-tooltip = Frequently asked questions
premium-badge-label = { -brand-premium }
premium-cta-label = Upgrade to { -brand-premium }
premium-badge-label = { -brand-monitor-plus }
premium-cta-label = Subscribe to { -brand-monitor-plus }
# Chart summarizing total exposures
@ -88,16 +88,16 @@ progress-card-heres-what-we-fixed-headline = Heres what we fixed
progress-card-manually-fixed-headline = Manually fixed
progress-card-auto-removed-headline = Auto-removed
progress-card-in-progress-headline = In progress
progress-card-locked-alt = Only available with { -brand-premium }
progress-card-locked-alt = Only available with { -brand-monitor-plus }
full-name = Full name
# Heres What We Fixed Modal
modal-heres-what-we-fixed-title = About what we fixed
modal-heres-what-we-fixed-description-part-one = <b>Manually fixed</b> includes anything youve fixed yourself. All data breaches that require access to your accounts need
to be fixed manually, even if youve upgraded to { -brand-premium }.
to be fixed manually, even if youve subscribed to { -brand-monitor-plus }.
modal-heres-what-we-fixed-description-part-two = <b>Auto-removed</b> includes any exposures from data broker profiles that weve removed for you. This is available only for
{ -brand-premium } subscribers.
{ -brand-monitor-plus } subscribers.
modal-heres-what-we-fixed-description-part-three = <b>In Progress</b> includes anything that we are currently
working on fixing. Removals typically take 7-14 days but the most
difficult sites could take longer. You may also start to see removals
@ -156,10 +156,10 @@ modal-exposure-type-title = About exposure types
# $data_broker_sites_total_num is the total number of data broker sites available to scan. It will always be more than 1.
modal-exposure-type-description = We search for you in all known data breaches and { $data_broker_sites_total_num } data broker sites that sell your personal info. Here are the two types of exposures we find:
modal-exposure-type-data-breach = <b>Data breach</b> means your information has been compromised in a breach and could be in the wrong hands.
Resolving these typically requires accessing your accounts, so youll need to take manual steps to resolve each breach even if youve upgraded to { -brand-premium }.
Resolving these typically requires accessing your accounts, so youll need to take manual steps to resolve each breach even if youve subscribed to { -brand-monitor-plus }.
modal-exposure-type-data-broker-part-one = <b>Info for sale</b> means a data broker site is publicly publishing and selling your personal info.
Youll need to manually request removal from each site.
modal-exposure-type-data-broker-part-two = If youre a { -brand-premium } user, we automatically remove all profiles for you.
modal-exposure-type-data-broker-part-two = For { -brand-monitor-plus } subscribers, we auto-remove these profiles on your behalf and make sure they dont re-add you.
In both cases, removals typically take 7-14 days. Some can take longer, while others can happen within the hour.
# About Exposure Statuses Modal
@ -170,8 +170,8 @@ modal-exposure-status-title = About exposure statuses
modal-exposure-status-description = We search for exposures in all known data breaches and { $data_broker_sites_total_num } data broker sites that sell your personal info.
Your exposures will have one of the following statuses:
modal-exposure-status-action-needed = <b>Action needed</b> means it is currently active and you need to take steps to fix it.
modal-exposure-status-in-progress = <b>In progress</b> means we are actively working on fixing the exposure for you. This is a { -brand-premium } feature.
modal-exposure-status-fixed = <b>Fixed</b> means the exposure has been resolved and theres no action for you to take.
modal-exposure-status-in-progress = <b>In progress</b> means we are actively working on fixing the exposure for you. This is a { -brand-monitor-plus } feature.
modal-exposure-status-fixed = <b>Fixed</b> means the exposure has been resolved and theres no action for you to take.
# Dashboard
@ -233,7 +233,7 @@ dashboard-top-banner-no-exposures-found-title = No exposures found
# Variables:
# $data_broker_sites_total_num is the total number of data broker sites available to scan. This will always be plural.
dashboard-top-banner-no-exposures-found-description = Great news! We searched all known data breaches and { $data_broker_sites_total_num } data broker sites that sell personal info and found no exposures.
dashboard-top-banner-no-exposures-found-upsell-info = Upgrade to { -brand-premium } and well monitor for any new exposures.
dashboard-top-banner-no-exposures-found-upsell-info = Subscribe to { -brand-monitor-plus } and well scan for new exposures every month.
dashboard-top-banner-no-exposures-found-cta = Get continuous protection
dashboard-no-exposures-label = No exposures found
@ -261,8 +261,8 @@ dashboard-top-banner-your-data-is-protected-cta = See whats fixed
# $starting_exposure_total_num is the number of exposures the user has resolved.
dashboard-top-banner-your-data-is-protected-all-fixed-description =
{ $starting_exposure_total_num ->
[one] Great work, { $starting_exposure_total_num } exposure of your data is fixed! Upgrade to { -brand-premium } and well continue to monitor for new exposures. Plus, well automatically remove your info from any sites that are selling it.
*[other] Great work, all { $starting_exposure_total_num } exposures of your data are fixed! Upgrade to { -brand-premium } and well continue to monitor for new exposures. Plus, well automatically remove your info from any sites that are selling it.
[one] Great work, { $starting_exposure_total_num } exposure of your data is fixed! Subscribe to { -brand-monitor-plus } and well scan for new exposures every month. Plus, well automatically remove your info from any sites that are selling it.
*[other] Great work, all { $starting_exposure_total_num } exposures of your data are fixed! Subscribe to { -brand-monitor-plus } and well and well scan for new exposures every month. Plus, well automatically remove your info from any sites that are selling it.
}
# Variables:
@ -357,7 +357,7 @@ false-door-test-phase-3-content-part-two-dashboard = Automatically remove data f
# Premium upsell dialog
premium-upsell-dialog-title = Choose the level of protection thats right for you
premium-upsell-dialog-title = Turn on automatic data removal with { -brand-monitor-plus }
# Guided Resolution Flow
@ -385,7 +385,7 @@ data-broker-profiles-exposure-reduction = Exposure reduction: { $exposure_reduct
exposure-reduction-chart-heading = <nr>{ $nr }</nr><percent>%</percent>
exposure-reduction-chart-explanation = <label_line_1>exposures will</label_line_1><label_line_2>be reduced</label_line_2>
welcome-to-premium-data-broker-profiles-title-part-one = Welcome to { -brand-premium }.
welcome-to-premium-data-broker-profiles-title-part-one = Welcome to { -brand-monitor-plus }.
welcome-to-premium-data-broker-profiles-title-part-two = Well remove those profiles ASAP.
# Variables:
# $profile_total_num is the number of exposures came back from user data broker scans.

Просмотреть файл

@ -3,7 +3,7 @@
## The following messages are brand and should be kept entirely in English
## unless otherwise indicated.
-product-name = Firefox Monitor
-product-name = Mozilla Monitor
-product-name-nowrap = <span class="nowrap">{ -product-name }</span>
-product-short-name = Monitor
-brand-name = Firefox
@ -854,7 +854,7 @@ ad-unit-6-before-you-complete = Before you complete that next signup, use an ema
-brand-firefox = Firefox
-brand-monitor = Monitor
-brand-fx-monitor = Firefox Monitor
-brand-fx-monitor = Mozilla Monitor
-brand-mozilla = Mozilla
-brand-premium = Premium
-brand-monitor-premium = Monitor Premium
@ -862,6 +862,8 @@ ad-unit-6-before-you-complete = Before you complete that next signup, use an ema
-brand-github = GitHub
-brand-mozilla-vpn = Mozilla VPN
-brand-relay = Firefox Relay
-brand-mozilla-monitor = Mozilla Monitor
-brand-monitor-plus = Monitor Plus
##
@ -875,8 +877,10 @@ meta-desc-2 = Find out if youve been part of a data breach with { -brand-fx-m
## Header
# Deprecated
brand-fx-monitor = { -brand-fx-monitor }
sign-in = Sign In
brand-mozilla-monitor = { -brand-fx-monitor }
## Site navigation

Двоичные данные
public/images/email/monitor-logo-bg-light.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.1 KiB

После

Ширина:  |  Высота:  |  Размер: 17 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.2 KiB

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Двоичные данные
public/images/email/monitor-logo-transparent.png

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.2 KiB

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Просмотреть файл

@ -31,14 +31,14 @@ export function generateMetadata() {
title: l10n.getString("breach-meta-title"),
twitter: {
card: "summary_large_image",
title: l10n.getString("brand-fx-monitor"),
title: l10n.getString("brand-mozilla-monitor"),
description: l10n.getString("meta-desc-2"),
images: ["/images/og-image.webp"],
},
openGraph: {
title: l10n.getString("brand-fx-monitor"),
title: l10n.getString("brand-mozilla-monitor"),
description: l10n.getString("meta-desc-2"),
siteName: l10n.getString("brand-fx-monitor"),
siteName: l10n.getString("brand-mozilla-monitor"),
type: "website",
url: process.env.SERVER_URL,
images: ["/images/og-image.webp"],

Просмотреть файл

@ -68,7 +68,7 @@ const MainLayout = async (props: Props) => {
src={MonitorLogo}
width="213"
height="33"
alt={l10n.getString("brand-fx-monitor")}
alt={l10n.getString("brand-mozilla-monitor")}
priority
/>
</a>

Просмотреть файл

@ -52,7 +52,9 @@ const glyphs: Record<string, StaticImageData> = {
export function generateMetadata(props: { params: { breachName: string } }) {
const l10n = getL10n();
return {
title: `${l10n.getString("brand-fx-monitor")} - ${props.params.breachName}`,
title: `${l10n.getString("brand-mozilla-monitor")} - ${
props.params.breachName
}`,
twitter: {
card: "summary_large_image",
title: l10n.getString("breach-detail-meta-social-title", {
@ -66,7 +68,7 @@ export function generateMetadata(props: { params: { breachName: string } }) {
company: props.params.breachName,
}),
description: l10n.getString("breach-detail-meta-social-description"),
siteName: l10n.getString("brand-fx-monitor"),
siteName: l10n.getString("brand-mozilla-monitor"),
type: "website",
url: process.env.SERVER_URL,
images: ["/images/og-image.webp"],

Просмотреть файл

@ -78,7 +78,7 @@ const GuestLayout = async (props: Props) => {
src={MonitorLogo}
width="213"
height="33"
alt={l10n.getString("brand-fx-monitor")}
alt={l10n.getString("brand-mozilla-monitor")}
priority
/>
</a>

Просмотреть файл

@ -5,7 +5,7 @@
"use client";
import Image from "next/image";
import MozillaMonitorLogo from "../../../(proper_react)/images/firefox-monitor-logo.webp";
import MozillaMonitorLogo from "../../../(proper_react)/images/monitor-logo.webp";
import styles from "./FalseDoorBanner.module.scss";
import { CloseBtn } from "../../../components/server/Icons";
import { useEffect, useState } from "react";

Двоичные данные
src/app/(proper_react)/images/monitor-logo.webp

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.7 KiB

После

Ширина:  |  Высота:  |  Размер: 3.7 KiB

Просмотреть файл

@ -424,7 +424,7 @@ it("shows US users with Premium the Premium badge", () => {
render(<ComposedDashboard />);
// We show a Premium badge on desktop in the toolbar and in the mobile menu
const premiumBadges = screen.queryAllByText("Premium");
const premiumBadges = screen.queryAllByText("Monitor Plus");
expect(premiumBadges.length).toBe(2);
});
@ -437,7 +437,7 @@ it("shows US users without Premium the upsell button", () => {
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
expect(premiumCtas.length).toBe(2);
});
@ -447,7 +447,7 @@ it("does not show non-US users the Premium badge", () => {
render(<ComposedDashboard />);
// We show a Premium badge on desktop in the toolbar and in the mobile menu
const premiumBadges = screen.queryAllByText("Premium");
const premiumBadges = screen.queryAllByText("Monitor Plus");
expect(premiumBadges.length).toBe(0);
});
@ -457,7 +457,7 @@ it("does not show non-US users the upsell button", () => {
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
expect(premiumCtas.length).toBe(0);
});
@ -472,30 +472,30 @@ it("opens and closes the premium upsell dialog via the Premium upsell badge)", a
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
expect(premiumCtas.length).toBe(2);
// Shows the modal for the desktop layout
await user.click(premiumCtas[0]);
expect(
screen.getByText("Choose the level of protection thats right for you"),
screen.getByText("Turn on automatic data removal with Monitor Plus"),
).toBeInTheDocument();
const closeButtonIcon1 = screen.getByLabelText("Close");
await user.click(closeButtonIcon1.parentElement as HTMLElement);
expect(
screen.queryByText("Choose the level of protection thats right for you"),
screen.queryByText("Turn on automatic data removal with Monitor Plus"),
).not.toBeInTheDocument();
// Shows the modal for the mobile layout
await user.click(premiumCtas[1]);
expect(
screen.getByText("Choose the level of protection thats right for you"),
screen.getByText("Turn on automatic data removal with Monitor Plus"),
).toBeInTheDocument();
const closeButtonIcon2 = screen.getByLabelText("Close");
await user.click(closeButtonIcon2.parentElement as HTMLElement);
expect(
screen.queryByText("Choose the level of protection thats right for you"),
screen.queryByText("Turn on automatic data removal with Monitor Plus"),
).not.toBeInTheDocument();
});
@ -514,12 +514,12 @@ it("opens and closes the premium upsell dialog via the Premium upsell button)",
await user.click(premiumCta);
expect(
screen.getByText("Choose the level of protection thats right for you"),
screen.getByText("Turn on automatic data removal with Monitor Plus"),
).toBeInTheDocument();
const closeButtonIcon1 = screen.getByLabelText("Close");
await user.click(closeButtonIcon1.parentElement as HTMLElement);
expect(
screen.queryByText("Choose the level of protection thats right for you"),
screen.queryByText("Turn on automatic data removal with Monitor Plus"),
).not.toBeInTheDocument();
});
@ -533,7 +533,7 @@ it("toggles between the product offerings in the premium upsell dialog", async (
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
expect(premiumCtas.length).toBe(2);
@ -572,7 +572,7 @@ it("counts in Glean how often people click the upgrade CTA to purchase the month
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
await user.click(premiumCtas[0]);
const productTabMonthly = screen.getByRole("tab", { name: "Monthly" });
@ -606,7 +606,7 @@ it("counts in Glean how often people click the upgrade CTA to purchase the yearl
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
await user.click(premiumCtas[0]);
// Switch to the monthly tab by clicking it...
@ -642,7 +642,7 @@ it("shows returned free user who has resolved all tasks premium upsell and all f
// We show a CTA on desktop in the toolbar and in the mobile menu
const premiumCtas = screen.queryAllByRole("button", {
name: "Upgrade to Premium",
name: "Subscribe to Monitor Plus",
});
expect(premiumCtas.length).toBe(2);

Просмотреть файл

@ -117,7 +117,7 @@ export function ManualRemoveView(props: Props) {
"fix-flow-data-broker-profiles-manual-remove-how-to-remove-step-4-content",
{
elems: {
upgrade_link: (
subscribe_link: (
<Link href="/redesign/user/dashboard/fix/data-broker-profiles/automatic-remove" />
),
},

Просмотреть файл

@ -25,7 +25,7 @@ import { SerializedSubscriber } from "../../../next-auth.js";
const fxaProviderConfig: OAuthConfig<FxaProfile> = {
// As per https://mozilla.slack.com/archives/C4D36CAJW/p1683642497940629?thread_ts=1683642325.465929&cid=C4D36CAJW,
// we should file a ticket against SVCSE with the `fxa` component to add
// a redirect URL of /api/auth/callback/fxa for Firefox Monitor,
// a redirect URL of /api/auth/callback/fxa for Mozilla Monitor,
// for every environment we deploy to:
id: "fxa",
name: "Mozilla accounts",

Просмотреть файл

@ -89,7 +89,7 @@ export const AppPicker = () => {
/* c8 ignore next 3 */
typeof document !== "undefined"
? document.location.host
: "monitor.firefox.com";
: "monitor.mozilla.org";
const products = getProducts(referringHost, l10n);
const linkRefs: Record<
keyof typeof products,

Просмотреть файл

@ -15,7 +15,6 @@ import { logger } from "./logging";
export async function getExperiments(
userId: string | undefined,
): Promise<unknown> {
let features;
if (["stage", "production"].includes(process.env.APP_ENV ?? "local")) {
const serverUrl = process.env.NIMBUS_SIDECAR_URL;
if (!serverUrl) {
@ -23,7 +22,7 @@ export async function getExperiments(
}
try {
features = await fetch(`${serverUrl}/v1/features/`, {
const features = await fetch(`${serverUrl}/v1/features/`, {
headers: {
"Content-Type": "application/json",
},
@ -33,11 +32,11 @@ export async function getExperiments(
context: { key: "example-key" },
}),
});
return features?.json();
} catch (ex) {
logger.error(`Could not connect to Cirrus on ${serverUrl}`, ex);
captureException(ex);
}
}
return features?.json();
}

Просмотреть файл

@ -24,7 +24,7 @@ const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });
export function generateMetadata(): Metadata {
const l10n = getL10n();
return {
title: l10n.getString("brand-fx-monitor"),
title: l10n.getString("brand-mozilla-monitor"),
description: l10n.getString("meta-desc-2"),
metadataBase:
typeof process.env.SERVER_URL === "string"
@ -32,14 +32,14 @@ export function generateMetadata(): Metadata {
: undefined,
twitter: {
card: "summary_large_image",
title: l10n.getString("brand-fx-monitor"),
title: l10n.getString("brand-mozilla-monitor"),
description: l10n.getString("meta-desc-2"),
images: ["/images/og-image.webp"],
},
openGraph: {
title: l10n.getString("brand-fx-monitor"),
title: l10n.getString("brand-mozilla-monitor"),
description: l10n.getString("meta-desc-2"),
siteName: l10n.getString("brand-fx-monitor"),
siteName: l10n.getString("brand-mozilla-monitor"),
type: "website",
url: process.env.SERVER_URL,
images: ["/images/og-image.webp"],

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.1 KiB

После

Ширина:  |  Высота:  |  Размер: 17 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.2 KiB

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.2 KiB

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Двоичные данные
src/client/images/monitor-logo-bg-light.webp

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.4 KiB

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.5 KiB

После

Ширина:  |  Высота:  |  Размер: 2.1 KiB

Двоичные данные
src/client/images/monitor-logo-transparent.webp

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 1.7 KiB

После

Ширина:  |  Высота:  |  Размер: 2.3 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.5 KiB

После

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Просмотреть файл

@ -49,7 +49,7 @@ export class DashboardPage {
name: "Mozilla apps and services",
});
this.upgradeToPremium = page.getByRole("button", {
name: "Upgrade To Premium",
name: "Subscribe to Monitor Plus",
});
//sidebar nav

Просмотреть файл

@ -33,7 +33,7 @@ export class DataBreachPage {
// navbar
this.dataBreachesNavbar = page.locator(".header-wrapper");
this.dataBreachesLogo = page.getByAltText("Firefox Monitor");
this.dataBreachesLogo = page.getByAltText("Mozilla Monitor");
this.dataBreachesLogoLink = page.locator(".header-wrapper a");
this.dataBreachesNavbarProfile = page.locator(".user-menu-button");
this.dataBreachesNavbarProfileButton = page.locator(".nav-toggle");

Просмотреть файл

@ -83,7 +83,7 @@ export function getAllPriorityDataClasses (isUserBrowserFirefox = false, isUserL
{
recommendationCopy: {
subhead: 'rec-pw-2-subhead',
// Comment this CTA back in once monitor.firefox.com
// Comment this CTA back in once monitor.mozilla.org
// has been added to the allowlist and is able to open about:logins
// https://searchfox.org/mozilla-central/source/browser/app/permissions
// cta: isUserBrowserFirefox ? "rec-pw-2-cta-fx" : "",

Просмотреть файл

@ -321,7 +321,7 @@ const getTemplate = (data, partial, l10n) => {
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
<title>
${getMessage('brand-fx-monitor')}
${getMessage('brand-mozilla-monitor')}
</title>
${getStyles()}

Просмотреть файл

@ -10,8 +10,8 @@ import { getFloatingBanner } from '../views/partials/floatingBanner.js'
* @type {ViewPartial<GuestViewPartialData<any>>}
*/
const guestLayout = data => {
const siteTitle = data.meta?.title ?? getMessage('brand-fx-monitor')
const metaTitle = data.meta?.socialTitle ?? getMessage('brand-fx-monitor')
const siteTitle = data.meta?.title ?? getMessage('brand-mozilla-monitor')
const metaTitle = data.meta?.socialTitle ?? getMessage('brand-mozilla-monitor')
const metaDescription = data.meta?.socialDescription ?? getMessage('meta-desc-2')
const pageUrl = `${AppConstants.SERVER_URL}${data.pathname ?? '/'}`
@ -31,7 +31,7 @@ const guestLayout = data => {
<meta name='twitter:image' content='${AppConstants.SERVER_URL}/images/og-image.webp'>
<meta property='og:title' content='${metaTitle}'>
<meta property='og:description' content='${metaDescription}'>
<meta property='og:site_name' content='${getMessage('brand-fx-monitor')}'>
<meta property='og:site_name' content='${getMessage('brand-mozilla-monitor')}'>
<meta property='og:type' content='website'>
<meta property='og:url' content='${pageUrl}'>
<meta property='og:image' content='${AppConstants.SERVER_URL}/images/og-image.webp'>
@ -64,7 +64,7 @@ const guestLayout = data => {
<header>
<div class="header-wrapper">
<a href='/'>
<img class='monitor-logo' srcset='/images/monitor-logo-transparent.webp 213w, /images/monitor-logo-transparent@2x.webp 425w' width='213' height='33' alt='${getMessage('brand-fx-monitor')}'>
<img class='monitor-logo' srcset='/images/monitor-logo-transparent.webp 213w, /images/monitor-logo-transparent@2x.webp 425w' width='213' height='33' alt='${getMessage('brand-mozilla-monitor')}'>
</a>
<menu>
<li><a href='/user/breaches' data-cta-id='sign-in-1' class='button secondary'>${getMessage('sign-in')}</a></li>

Просмотреть файл

@ -10,8 +10,8 @@ import { getFloatingBanner } from '../views/partials/floatingBanner.js'
* @type {ViewPartial<MainViewPartialData<any>>}
*/
const mainLayout = data => {
const siteTitle = data.meta?.title ?? getMessage('brand-fx-monitor')
const metaTitle = data.meta?.socialTitle ?? getMessage('brand-fx-monitor')
const siteTitle = data.meta?.title ?? getMessage('brand-mozilla-monitor')
const metaTitle = data.meta?.socialTitle ?? getMessage('brand-mozilla-monitor')
const metaDescription = data.meta?.socialDescription ?? getMessage('meta-desc-2')
const pageUrl = `${AppConstants.SERVER_URL}${data.pathname ?? '/'}`
@ -54,7 +54,7 @@ const mainLayout = data => {
<meta name='twitter:image' content='${AppConstants.SERVER_URL}/images/og-image.webp'>
<meta property='og:title' content='${metaTitle}'>
<meta property='og:description' content='${metaDescription}'>
<meta property='og:site_name' content='${getMessage('brand-fx-monitor')}'>
<meta property='og:site_name' content='${getMessage('brand-mozilla-monitor')}'>
<meta property='og:type' content='website'>
<meta property='og:url' content='${pageUrl}'>
<meta property='og:image' content='${AppConstants.SERVER_URL}/images/og-image.webp'>
@ -80,7 +80,7 @@ const mainLayout = data => {
${showRecruitmentBanner()}
<div class="header-wrapper">
<a href='/user/breaches'>
<img class='monitor-logo' srcset='/images/monitor-logo-transparent.webp 213w, /images/monitor-logo-transparent@2x.webp 425w' width='213' height='33' alt='${getMessage('brand-fx-monitor')}'>
<img class='monitor-logo' srcset='/images/monitor-logo-transparent.webp 213w, /images/monitor-logo-transparent@2x.webp 425w' width='213' height='33' alt='${getMessage('brand-mozilla-monitor')}'>
</a>
<div class='nav-wrapper'>
<button class='nav-toggle'>