"use client"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { cn } from "@/lib/utils"; import { motion, useAnimation, useInView } from "framer-motion"; import { DollarSign, Heart, Search, Star } from "lucide-react"; import Link from "next/link"; import { useEffect, useRef, useState } from "react"; import { AuroraText } from "./magicui/aurora-text"; import { InteractiveHoverButton } from "./magicui/interactive-hover-button"; interface IconCardProps { name: string; imageUrl: string; } function IconCard({ name, imageUrl }: IconCardProps) { return (
{name}

{name}

); } function ElegantShape({ className, delay = 0, width = 400, height = 100, rotate = 0, gradient = "from-rose-500/[0.5]", mobileWidth, mobileHeight, }: { className?: string; delay?: number; width?: number; height?: number; rotate?: number; gradient?: string; mobileWidth?: number; mobileHeight?: number; }) { const controls = useAnimation(); const [isMobile, setIsMobile] = useState(false); const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.1 }); useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 768); }; checkMobile(); window.addEventListener("resize", checkMobile); return () => window.removeEventListener("resize", checkMobile); }, []); useEffect(() => { if (isInView) { controls.start({ opacity: 1, y: 0, rotate: rotate, transition: { type: "spring", stiffness: 50, damping: 20, duration: 1.8, delay, ease: [0.23, 0.86, 0.39, 0.96], opacity: { duration: 1.2 }, }, }); } }, [controls, delay, isInView, rotate]); return (
); } export function HeroSection({ totalIcons, stars, }: { totalIcons: number; stars: number }) { const [searchQuery, setSearchQuery] = useState(""); return (
Made with love by Homarr Labs

Your definitive source for
dashboard icons

A collection of {totalIcons}{" "} curated icons for services, applications and tools, designed specifically for dashboards and app directories.

setSearchQuery(e.target.value)} />
Explore icons {/* Give us money */}
); }