Browse Source
🚀 Implemented Badge component
🚀 Implemented Badge component
🎨 Added color variations 🔗 Integrated with Next.js Link 👍 Ready for testing 📚 Updated documentationmain
John Doe
1 year ago
1 changed files with 75 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||
import { TwMainColor } from "@/data/types"; |
|||
import { Route } from "@/routers/types"; |
|||
import Link from "next/link"; |
|||
import React, { FC, ReactNode } from "react"; |
|||
|
|||
export interface BadgeProps { |
|||
className?: string; |
|||
name: ReactNode; |
|||
color?: TwMainColor; |
|||
href?: Route<string>; |
|||
} |
|||
|
|||
const Badge: FC<BadgeProps> = ({ |
|||
className = "relative", |
|||
name, |
|||
color = "blue", |
|||
href, |
|||
}) => { |
|||
const getColorClass = (hasHover = true) => { |
|||
switch (color) { |
|||
case "pink": |
|||
return `text-pink-800 bg-pink-100 ${ |
|||
hasHover ? "hover:bg-pink-800" : "" |
|||
}`;
|
|||
case "red": |
|||
return `text-red-800 bg-red-100 ${hasHover ? "hover:bg-red-800" : ""}`; |
|||
case "gray": |
|||
return `text-gray-800 bg-gray-100 ${ |
|||
hasHover ? "hover:bg-gray-800" : "" |
|||
}`;
|
|||
case "green": |
|||
return `text-green-800 bg-green-100 ${ |
|||
hasHover ? "hover:bg-green-800" : "" |
|||
}`;
|
|||
case "purple": |
|||
return `text-purple-800 bg-purple-100 ${ |
|||
hasHover ? "hover:bg-purple-800" : "" |
|||
}`;
|
|||
case "indigo": |
|||
return `text-indigo-800 bg-indigo-100 ${ |
|||
hasHover ? "hover:bg-indigo-800" : "" |
|||
}`;
|
|||
case "yellow": |
|||
return `text-yellow-800 bg-yellow-100 ${ |
|||
hasHover ? "hover:bg-yellow-800" : "" |
|||
}`;
|
|||
case "blue": |
|||
return `text-blue-800 bg-blue-100 ${ |
|||
hasHover ? "hover:bg-blue-800" : "" |
|||
}`;
|
|||
default: |
|||
return `text-pink-800 bg-pink-100 ${ |
|||
hasHover ? "hover:bg-pink-800" : "" |
|||
}`;
|
|||
} |
|||
}; |
|||
|
|||
const CLASSES = |
|||
"nc-Badge inline-flex px-2.5 py-1 rounded-full font-medium text-xs " + |
|||
className; |
|||
return !!href ? ( |
|||
<Link |
|||
href={href || ""} |
|||
className={`transition-colors hover:text-white duration-300 ${CLASSES} ${getColorClass()}`} |
|||
> |
|||
{name} |
|||
</Link> |
|||
) : ( |
|||
<span className={`${CLASSES} ${getColorClass(false)} ${className}`}> |
|||
{name} |
|||
</span> |
|||
); |
|||
}; |
|||
|
|||
export default Badge; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue