done landing page

This commit is contained in:
2025-11-10 17:10:34 +05:30
parent 3852d46661
commit 483515e163
105 changed files with 3529 additions and 104 deletions

View File

@@ -0,0 +1,60 @@
"use client";
import { cn } from "@/lib/utils";
interface MarqueeProps {
className?: string;
reverse?: boolean;
pauseOnHover?: boolean;
children?: React.ReactNode;
vertical?: boolean;
repeat?: number;
duration?: string;
gap?: string;
[key: string]: unknown;
}
export function Marquee({
className,
reverse = false,
pauseOnHover = false,
children,
vertical = false,
repeat = 4,
gap,
duration = "40s",
...props
}: MarqueeProps) {
return (
<div
{...props}
style={{
["--duration" as string]: duration,
["--gap" as string]: gap, // 👈 dynamic gap applied
}}
className={cn(
"group flex items-center [gap:var(--gap)] overflow-hidden p-2",
vertical ? "flex-col" : "flex-row",
className
)}
>
{Array.from({ length: repeat }).map((_, i) => (
<div
key={i}
className={cn(
"marquee flex shrink-0 justify-around [gap:var(--gap)]",
{
reverse: reverse, // add reverse direction
pause: pauseOnHover, // pause animation on hover
"flex-row": !vertical,
"flex-col": vertical,
}
)}
>
{children}
</div>
))}
</div>
);
}