diff --git a/nx-dev/nx-dev/pages/index.tsx b/nx-dev/nx-dev/pages/index.tsx index 01a5e626705fb..167df62248761 100644 --- a/nx-dev/nx-dev/pages/index.tsx +++ b/nx-dev/nx-dev/pages/index.tsx @@ -23,9 +23,35 @@ import { } from '@nrwl/nx-dev/ui-home'; import { NextSeo } from 'next-seo'; import Link from 'next/link'; -import { ReactComponentElement } from 'react'; +import { ReactComponentElement, useEffect, useState } from 'react'; export function Index(): ReactComponentElement { + /** + * Detects whether we should use a background fallback or not. + * `false` by default + */ + function useHeroBackgroundFallback(): boolean { + const [useFallback, setUseFallback] = useState(false); + + useEffect(() => { + function handleResize(): void { + // Firefox has a hard time rendering SVG for high resolutions + if (navigator.userAgent.search(/firefox/gi) !== -1) { + if (window.innerWidth > 1460) { + return setUseFallback(true); + } + } + return setUseFallback(false); + } + handleResize(); + window.addEventListener('resize', handleResize); + return (): void => window.removeEventListener('resize', handleResize); + }, []); + + return useFallback; + } + const showBackgroundFallback = useHeroBackgroundFallback(); + return ( <> { id="animated-background" className="bg-blue-nx-base transform-gpu bg-clip-border bg-right bg-no-repeat bg-origin-border text-white lg:bg-cover" style={{ - backgroundImage: 'url(/images/background/hero-bg-large.svg)', + backgroundImage: showBackgroundFallback + ? 'url(/images/background/hero-bg.jpg)' + : 'url(/images/background/hero-bg-large.svg)', }} >
diff --git a/nx-dev/nx-dev/public/images/background/hero-bg.jpg b/nx-dev/nx-dev/public/images/background/hero-bg.jpg new file mode 100644 index 0000000000000..b77b8a29d7d3e Binary files /dev/null and b/nx-dev/nx-dev/public/images/background/hero-bg.jpg differ