Create BlogCategoryChips component
cgen-2427edb7d0594498a66415c7f9994156
This commit is contained in:
parent
ee32160afd
commit
9665dda3ad
1 changed files with 38 additions and 0 deletions
38
client/components/blog/BlogCategoryChips.tsx
Normal file
38
client/components/blog/BlogCategoryChips.tsx
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import { Button } from "@/components/ui/button";
|
||||
import type { BlogCategory } from "./types";
|
||||
|
||||
interface BlogCategoryChipsProps {
|
||||
categories: BlogCategory[];
|
||||
selected: string;
|
||||
onSelect: (id: string) => void;
|
||||
}
|
||||
|
||||
const BlogCategoryChips = ({ categories, selected, onSelect }: BlogCategoryChipsProps) => {
|
||||
if (!categories.length) return null;
|
||||
|
||||
return (
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{categories.map((category, index) => (
|
||||
<Button
|
||||
key={category.id}
|
||||
variant={selected === category.id ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => onSelect(category.id)}
|
||||
className={`rounded-full px-5 ${
|
||||
selected === category.id
|
||||
? "bg-gradient-to-r from-aethex-500 to-neon-blue text-white shadow-lg"
|
||||
: "border-border/50 text-muted-foreground hover:text-foreground"
|
||||
}`}
|
||||
style={{ animationDelay: `${index * 0.05}s` }}
|
||||
>
|
||||
{category.name}
|
||||
<span className="ml-2 rounded-full bg-background/70 px-2 py-0.5 text-[0.65rem]">
|
||||
{category.count}
|
||||
</span>
|
||||
</Button>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default BlogCategoryChips;
|
||||
Loading…
Reference in a new issue