Because:
* Firefox Accounts settings should encourage users to install Firefox on
mobile (when signed into Firefox desktop) or switch to Firefox (when on
another browser), with the variant chosen by browser, device, and the
browser's signed-in state.
* Validating the feature needs a per-variant funnel: view, CTA submit, and
dismiss.
This commit:
* Adds the FirefoxPromoBanner component with connect-mobile and
switch-to-Firefox variants, presentational banner state, Storybook
story, FTL strings, and SVG artwork (kit-mirror, heart-foxes).
* Gates the desktop Firefox "connect a device" variant on whether the user
is signed into the browser; threads isSignedIntoFirefox from App through
SettingsRoutes, Settings, and PageSettings, reusing the existing
WebChannel result. Non-Firefox users are unaffected.
* Wires the banner into PageSettings with the shared promo dismissal
pattern; recovery promos take over when the Firefox promo is hidden.
* Adds six firefox_promo Glean events (view, submit, dismiss per variant),
each carrying a mobile_device_count extra, generated from
fxa-ui-metrics.yaml. Dismiss fires from an explicit handler.
* Adds unit tests for banner state, component, PageSettings ordering, and
Glean wiring. The functional Firefox-desktop tests are marked fixme
pending a Playwright upgrade whose bundled Firefox supports the
fxaccounts:oauth_flow_begin WebChannel command; non-Firefox and Firefox
mobile functional tests are active.