new cursor, speedtest at another page, remove rubbish
This commit is contained in:
@@ -123,12 +123,12 @@ export function NodesClient({ dict }: { dict: Dictionary["nodes"] }) {
|
||||
hidden: { opacity: 0, y: 20 },
|
||||
show: { opacity: 1, y: 0, transition: { type: "spring" } },
|
||||
}}
|
||||
className={`bg-card/40 backdrop-blur-xl border rounded-[2rem] p-6 relative overflow-hidden transition-all duration-300 ${
|
||||
className={`cursor-net-move bg-card/40 backdrop-blur-xl border rounded-[2rem] p-6 relative overflow-hidden transition-all duration-300 ${
|
||||
node.status === "online"
|
||||
? "border-border/50 hover:border-primary/50 hover:shadow-[0_0_30px_rgba(0,240,255,0.1)]"
|
||||
: node.status === "full"
|
||||
? "border-secondary/30 opacity-80"
|
||||
: "border-destructive/30 opacity-60 grayscale-[50%]"
|
||||
: "border-destructive/30 opacity-60 grayscale-50"
|
||||
}`}
|
||||
>
|
||||
<div className="flex justify-between items-start mb-6">
|
||||
|
||||
+3
-16
@@ -3,34 +3,25 @@ import dynamic from "next/dynamic";
|
||||
import { getDictionary } from "@/lib/dictionaries";
|
||||
import { Hero } from "@/components/sections/Hero";
|
||||
import { Features } from "@/components/sections/Features";
|
||||
import { SpeedtestClient } from "@/components/sections/SpeedtestClient";
|
||||
|
||||
// Легкий скелетон для плавности
|
||||
const SectionSkeleton = () => (
|
||||
<div className="h-[500px] w-full animate-pulse bg-card/20 rounded-3xl my-10" />
|
||||
);
|
||||
|
||||
// Ленивая загрузка тяжелых секций
|
||||
const Pricing = dynamic(
|
||||
() => import("@/components/sections/Pricing").then((mod) => mod.Pricing),
|
||||
{
|
||||
loading: () => <SectionSkeleton />,
|
||||
},
|
||||
{ loading: () => <SectionSkeleton /> },
|
||||
);
|
||||
const FAQ = dynamic(
|
||||
() => import("@/components/sections/Faq").then((mod) => mod.FAQ),
|
||||
{
|
||||
loading: () => <SectionSkeleton />,
|
||||
},
|
||||
{ loading: () => <SectionSkeleton /> },
|
||||
);
|
||||
const TerminalGuestbook = dynamic(
|
||||
() =>
|
||||
import("@/components/sections/TerminalGuestbook").then(
|
||||
(mod) => mod.TerminalGuestbook,
|
||||
),
|
||||
{
|
||||
loading: () => <SectionSkeleton />,
|
||||
},
|
||||
{ loading: () => <SectionSkeleton /> },
|
||||
);
|
||||
const BlogPreview = dynamic(() =>
|
||||
import("@/components/sections/BlogPreview").then((mod) => mod.BlogPreview),
|
||||
@@ -52,10 +43,6 @@ export default async function Home({
|
||||
<FAQ dict={dict.faq} lang={lang} />
|
||||
<TerminalGuestbook dict={dict.guestbook} />
|
||||
|
||||
<section className="container mx-auto px-4 py-24 sm:py-32 relative z-10">
|
||||
<SpeedtestClient dict={dict.speedtest} />
|
||||
</section>
|
||||
|
||||
<Suspense fallback={<SectionSkeleton />}>
|
||||
<BlogPreview lang={lang} dict={dict.blog} />
|
||||
</Suspense>
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import { getDictionary } from "@/lib/dictionaries";
|
||||
import { SpeedtestClient } from "@/components/sections/SpeedtestClient";
|
||||
|
||||
export default async function SpeedtestPage({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ lang: string }>;
|
||||
}) {
|
||||
const { lang } = await params;
|
||||
const dict = await getDictionary(lang);
|
||||
|
||||
return (
|
||||
<main className="min-h-screen pt-32 pb-20 container mx-auto px-4 relative z-10 flex items-center justify-center">
|
||||
<div className="absolute inset-0 bg-[radial-gradient(circle_at_center,_var(--tw-gradient-stops))] from-primary/5 via-transparent to-transparent -z-10 blur-3xl pointer-events-none" />
|
||||
<SpeedtestClient dict={dict.speedtest} />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user