Filter Chip
보통다중 선택 가능한 필터 칩
라이브 데모
코드
FilterChip.tsx
import React, { useState } from 'react';
export const FilterChip: React.FC = () => {
const [filters, setFilters] = useState<string[]>(['javascript']);
const options = ['javascript', 'typescript', 'react'];
const toggleFilter = (filter: string) => {
setFilters(prev =>
prev.includes(filter)
? prev.filter(f => f !== filter)
: [...prev, filter]
);
};
return (
<div className="chip-demo-container">
{options.map((filter) => (
<button
key={filter}
className={`filter-chip ${filters.includes(filter) ? 'filter-chip-active' : ''}`}
onClick={() => toggleFilter(filter)}
>
{filters.includes(filter) && <span>✓</span>}
{filter}
</button>
))}
</div>
);
};chips.css
.filter-chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 16px;
border: 2px solid var(--border-color);
border-radius: 16px;
cursor: pointer;
transition: all 0.2s ease;
}
.filter-chip-active {
background: var(--accent-purple);
color: white;
}