feat: landing & contact
This commit is contained in:
64
src/components/ui/lucide-icon.tsx
Normal file
64
src/components/ui/lucide-icon.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
import {
|
||||
ArrowLeft,
|
||||
BarChart3,
|
||||
Bell,
|
||||
BicepsFlexed,
|
||||
Building2,
|
||||
Check,
|
||||
Cloud,
|
||||
Dumbbell,
|
||||
FileText,
|
||||
Headset,
|
||||
Leaf,
|
||||
Mail,
|
||||
MapPin,
|
||||
Phone,
|
||||
SportShoe,
|
||||
Star,
|
||||
ThumbsUp,
|
||||
TrendingUp,
|
||||
UserCircle,
|
||||
Users,
|
||||
Wallet,
|
||||
type LucideIcon as LucideIconComponent,
|
||||
} from "lucide-react"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
export const landingIcons = {
|
||||
arrowLeft: ArrowLeft,
|
||||
mail: Mail,
|
||||
phone: Phone,
|
||||
mapPin: MapPin,
|
||||
headset: Headset,
|
||||
users: Users,
|
||||
userCircle: UserCircle,
|
||||
coach: Dumbbell,
|
||||
biceps: BicepsFlexed,
|
||||
sportShoe: SportShoe,
|
||||
dumbbell: Dumbbell,
|
||||
trendingUp: TrendingUp,
|
||||
chart: BarChart3,
|
||||
fileText: FileText,
|
||||
leaf: Leaf,
|
||||
wallet: Wallet,
|
||||
bell: Bell,
|
||||
cloud: Cloud,
|
||||
building: Building2,
|
||||
thumbsUp: ThumbsUp,
|
||||
star: Star,
|
||||
check: Check,
|
||||
} as const satisfies Record<string, LucideIconComponent>
|
||||
|
||||
export type LandingIconName = keyof typeof landingIcons
|
||||
|
||||
type LucideIconProps = {
|
||||
name: LandingIconName
|
||||
className?: string
|
||||
}
|
||||
|
||||
export function LucideIcon({ name, className }: LucideIconProps) {
|
||||
const Icon = landingIcons[name] ?? Users
|
||||
|
||||
return <Icon className={cn("size-6 shrink-0", className)} aria-hidden />
|
||||
}
|
||||
Reference in New Issue
Block a user