Mobile SEO & performance optimization
This commit is contained in:
parent
9d02c62292
commit
bfd858ca62
10
package.json
10
package.json
@ -56,5 +56,11 @@
|
|||||||
"tailwindcss": "^4",
|
"tailwindcss": "^4",
|
||||||
"tsx": "^4.21.0",
|
"tsx": "^4.21.0",
|
||||||
"typescript": "^5"
|
"typescript": "^5"
|
||||||
}
|
},
|
||||||
}
|
"browserslist": [
|
||||||
|
"last 2 versions",
|
||||||
|
"not dead",
|
||||||
|
"> 0.5%",
|
||||||
|
"not ie 11"
|
||||||
|
]
|
||||||
|
}
|
||||||
10
public/noise.svg
Normal file
10
public/noise.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'>
|
||||||
|
<filter id='noiseFilter'>
|
||||||
|
<feTurbulence
|
||||||
|
type='fractalNoise'
|
||||||
|
baseFrequency='0.65'
|
||||||
|
numOctaves='3'
|
||||||
|
stitchTiles='stitch' />
|
||||||
|
</filter>
|
||||||
|
<rect width='100%' height='100%' filter='url(#noiseFilter)' />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 301 B |
@ -176,7 +176,7 @@ html {
|
|||||||
|
|
||||||
/* Optimize backdrop blur performance during scroll */
|
/* Optimize backdrop blur performance during scroll */
|
||||||
[data-scroll-container] .backdrop-blur-xl {
|
[data-scroll-container] .backdrop-blur-xl {
|
||||||
will-change: auto;
|
will-change: transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Smooth transitions for interactive elements */
|
/* Smooth transitions for interactive elements */
|
||||||
@ -220,7 +220,7 @@ button, a, input, select, textarea {
|
|||||||
|
|
||||||
/* Optimize backdrop blur performance */
|
/* Optimize backdrop blur performance */
|
||||||
.backdrop-blur-xl {
|
.backdrop-blur-xl {
|
||||||
will-change: backdrop-filter;
|
will-change: transform;
|
||||||
transform: translateZ(0);
|
transform: translateZ(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,16 +5,19 @@ import "./globals.css";
|
|||||||
const geistSans = Geist({
|
const geistSans = Geist({
|
||||||
variable: "--font-geist-sans",
|
variable: "--font-geist-sans",
|
||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
|
display: "swap",
|
||||||
});
|
});
|
||||||
|
|
||||||
const geistMono = Geist_Mono({
|
const geistMono = Geist_Mono({
|
||||||
variable: "--font-geist-mono",
|
variable: "--font-geist-mono",
|
||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
|
display: "swap",
|
||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "JUNOHUB",
|
title: "JUNOHUB | Modern Commerce Infrastructure",
|
||||||
description: "JUNOHUB - Your dropshipping and e-commerce management platform",
|
description: "The world's most advanced encrypted ecosystem for vendors and suppliers.",
|
||||||
|
viewport: "width=device-width, initial-scale=1, maximum-scale=5",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const viewport = {
|
export const viewport = {
|
||||||
|
|||||||
@ -4,11 +4,17 @@ import { useMediaQuery } from "@/hooks/useMediaQuery"
|
|||||||
import { LandingNavbar } from "@/components/landing/LandingNavbar"
|
import { LandingNavbar } from "@/components/landing/LandingNavbar"
|
||||||
import { LandingHero } from "@/components/landing/LandingHero"
|
import { LandingHero } from "@/components/landing/LandingHero"
|
||||||
import { LandingFeatures } from "@/components/landing/LandingFeatures"
|
import { LandingFeatures } from "@/components/landing/LandingFeatures"
|
||||||
import { LandingSolutions } from "@/components/landing/LandingSolutions"
|
|
||||||
import { LandingFooter } from "@/components/landing/LandingFooter"
|
import { LandingFooter } from "@/components/landing/LandingFooter"
|
||||||
import { MobileHero } from "@/components/landing/mobile/MobileHero"
|
import { MobileHero } from "@/components/landing/mobile/MobileHero"
|
||||||
import { MobileFeatures } from "@/components/landing/mobile/MobileFeatures"
|
import { MobileFeatures } from "@/components/landing/mobile/MobileFeatures"
|
||||||
|
|
||||||
|
import dynamic from "next/dynamic"
|
||||||
|
|
||||||
|
const LandingSolutions = dynamic(() => import("@/components/landing/LandingSolutions").then(mod => mod.LandingSolutions), {
|
||||||
|
ssr: true,
|
||||||
|
loading: () => <div className="min-h-[400px] bg-[#0a0e1a]" />
|
||||||
|
})
|
||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
const isMobile = useMediaQuery("(max-width: 768px)")
|
const isMobile = useMediaQuery("(max-width: 768px)")
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@ export function LandingHero() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Grid Pattern */}
|
{/* Grid Pattern */}
|
||||||
<div className="absolute inset-0 z-0 opacity-[0.03] bg-[url('https://grainy-gradients.vercel.app/noise.svg')] pointer-events-none" />
|
<div className="absolute inset-0 z-0 opacity-[0.03] bg-[url('/noise.svg')] pointer-events-none" />
|
||||||
<div
|
<div
|
||||||
className="absolute inset-0 z-0 opacity-[0.4]"
|
className="absolute inset-0 z-0 opacity-[0.4]"
|
||||||
style={{
|
style={{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user