• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla / fx-private-relay / 50cf0e72-0f18-41c3-988c-f8683101a5b3

07 Apr 2025 02:17PM CUT coverage: 85.194%. Remained the same
50cf0e72-0f18-41c3-988c-f8683101a5b3

push

circleci

web-flow
Merge pull request #5496 from mozilla/dependabot/npm_and_yarn/stylelint-16.18.0

build(deps-dev): bump stylelint from 16.17.0 to 16.18.0

2451 of 3584 branches covered (68.39%)

Branch coverage included in aggregate %.

17216 of 19501 relevant lines covered (88.28%)

9.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/frontend/src/components/landing/DemoPhone.tsx
1
import { StaticImageData } from "next/image";
2
import styles from "./DemoPhone.module.scss";
×
3
import BgImage from "./images/hero-image-bg.svg";
×
4
import PremiumScreenshot from "./images/hero-image-premium.svg";
×
5
import PremiumScreenshotFr from "./images/hero-image-premium-fr.svg";
×
6
import PremiumScreenshotDe from "./images/hero-image-premium-de.svg";
×
7
import NoPremiumScreenshot from "./images/hero-image-nopremium.svg";
×
8
import FgImage from "./images/hero-image-fg.svg";
×
9
import FgImageDe from "./images/hero-image-fg-de.svg";
×
10
import FgImageFr from "./images/hero-image-fg-fr.svg";
×
11
import Image from "../Image";
×
12
import { getLocale } from "../../functions/getLocale";
×
13
import { useL10n } from "../../hooks/l10n";
×
14

15
export type Props = {
16
  premium?: boolean;
17
};
18

19
/**
20
 * Image of a phone showing the Relay interface, either the Premium or regular UI as desired.
21
 */
22

23
export const DemoPhone = (props: Props) => {
×
24
  const l10n = useL10n();
×
25
  const lang = getLocale(l10n).split("-")[0] ?? "en";
×
26

27
  const getScreenshotImage = (
×
28
    isPremium: boolean,
29
    lang: string,
30
  ): StaticImageData => {
31
    if (lang === "fr") {
×
32
      return PremiumScreenshotFr;
×
33
    }
34
    if (lang === "de") {
×
35
      return PremiumScreenshotDe;
×
36
    }
37
    // If Premium is not availabe in the country,
38
    // show no premium demo phone state
39
    if (!isPremium) {
×
40
      return NoPremiumScreenshot;
×
41
    }
42
    return PremiumScreenshot;
×
43
  };
44

45
  const getForegroundImage = (lang: string): StaticImageData => {
×
46
    if (lang === "fr") {
×
47
      return FgImageFr;
×
48
    }
49
    if (lang === "de") {
×
50
      return FgImageDe;
×
51
    }
52
    return FgImage;
×
53
  };
54

55
  return (
56
    <div className={styles.container}>
57
      <Image src={BgImage} alt="" className={styles.background} />
58

59
      <Image
60
        src={getScreenshotImage(props.premium ?? false, lang)}
×
61
        className={styles.phone}
62
        alt=""
63
      />
64
      <Image
65
        src={getForegroundImage(lang)}
66
        alt=""
67
        className={styles.foreground}
68
      />
69
    </div>
70
  );
71
};
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc