"use client"; import { useState, KeyboardEvent } from "react"; import { X } from "lucide-react"; import { cn } from "@/lib/utils"; interface RoleChipsInputProps { value: string[]; onChange: (roles: string[]) => void; label?: string; } export function RoleChipsInput({ value, onChange, label = "Target Roles" }: RoleChipsInputProps) { const [input, setInput] = useState(""); const add = (role: string) => { const trimmed = role.trim(); if (trimmed && !value.includes(trimmed)) { onChange([...value, trimmed]); } setInput(""); }; const remove = (role: string) => onChange(value.filter(r => r !== role)); const onKeyDown = (e: KeyboardEvent) => { if (e.key === "Enter" || e.key === ",") { e.preventDefault(); add(input); } else if (e.key === "Backspace" && !input && value.length > 0) { remove(value[value.length - 1]); } }; return (
{label && }
{value.map(role => ( {role} ))} setInput(e.target.value)} onKeyDown={onKeyDown} onBlur={() => input && add(input)} />
); }