perf: compress loc- images, fix hero fetchpriority, fix layout broken tag, Binotel SEO links
|
Before Width: | Height: | Size: 574 KiB After Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 614 KiB After Width: | Height: | Size: 313 KiB |
|
Before Width: | Height: | Size: 574 KiB After Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 520 KiB After Width: | Height: | Size: 246 KiB |
|
Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 754 KiB After Width: | Height: | Size: 533 KiB |
|
Before Width: | Height: | Size: 828 KiB After Width: | Height: | Size: 468 KiB |
|
Before Width: | Height: | Size: 435 KiB After Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 428 KiB After Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 428 KiB After Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 579 KiB After Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 580 KiB After Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 580 KiB After Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 434 KiB After Width: | Height: | Size: 324 KiB |
|
Before Width: | Height: | Size: 651 KiB After Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 651 KiB After Width: | Height: | Size: 287 KiB |
|
|
@ -50,14 +50,6 @@ export default async function FrontendLayout({ children }: { children: React.Rea
|
|||
<div
|
||||
className={`${montserrat.variable} ${inter.variable} ${poppins.variable} bg-background text-foreground flex min-h-screen flex-col`}
|
||||
>
|
||||
{/* Preload LCP hero image */}
|
||||
<link
|
||||
rel="preload"
|
||||
as="image"
|
||||
href="/images/figma/hero-slide-1.webp"
|
||||
// @ts-expect-error — fetchpriority is valid but missing from React types
|
||||
fetchpriority="high"
|
||||
/>
|
||||
{settings.ga4Id && <GoogleAnalytics measurementId={settings.ga4Id} />}
|
||||
{settings.binotelId && <BinotelWidget widgetId={settings.binotelId} />}
|
||||
<CartProvider>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
import Script from 'next/script'
|
||||
|
||||
const BRAND_CSS = `
|
||||
/* SEO: Binotel widget links are functional (JS-driven), not crawlable destinations */
|
||||
a[id^='bingc']{pointer-events:auto}
|
||||
a#bingc-passive-close-button,a#bingc-active-close-button{display:inline-block}
|
||||
|
||||
#bingc-phone-button{right:auto!important;left:24px!important;bottom:24px!important}
|
||||
#bingc-phone-button svg.bingc-phone-button-circle circle.bingc-phone-button-circle-inside{fill:#396817!important}
|
||||
#bingc-phone-button:hover svg.bingc-phone-button-circle circle.bingc-phone-button-circle-inside{fill:#2d5312!important}
|
||||
|
|
|
|||
|
|
@ -127,6 +127,8 @@ export function HeroSlider() {
|
|||
aria-hidden="true"
|
||||
className="pointer-events-none h-full w-full object-cover object-center"
|
||||
loading={i === 0 ? 'eager' : 'lazy'}
|
||||
// @ts-expect-error fetchpriority not in React types yet
|
||||
fetchpriority={i === 0 ? 'high' : 'low'}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
|
|
|
|||