'use client' import { useState } from 'react' import { Modal } from '@ciphera-net/ui' import { DIMENSIONS, DIMENSION_LABELS, OPERATORS, OPERATOR_LABELS, type DimensionFilter } from '@/lib/filters' interface AddFilterDropdownProps { onAdd: (filter: DimensionFilter) => void } export default function AddFilterDropdown({ onAdd }: AddFilterDropdownProps) { const [isOpen, setIsOpen] = useState(false) const [dimension, setDimension] = useState('') const [operator, setOperator] = useState('is') const [value, setValue] = useState('') function resetState() { setDimension('') setOperator('is') setValue('') } function handleOpen() { resetState() setIsOpen(true) } function handleSubmit() { if (!dimension || !operator || !value.trim()) return onAdd({ dimension, operator, values: [value.trim()] }) setIsOpen(false) resetState() } const hasDimension = dimension !== '' return ( <> setIsOpen(false)} title="Add Filter"> {!hasDimension ? (
{DIMENSIONS.map(dim => ( ))}
) : (
{/* Selected dimension header */}
{DIMENSION_LABELS[dimension]}
{/* Operator selection */}
{OPERATORS.map(op => ( ))}
{/* Value input */} setValue(e.target.value)} onKeyDown={e => { if (e.key === 'Enter') handleSubmit() }} placeholder={`Enter ${DIMENSION_LABELS[dimension].toLowerCase()} value...`} className="w-full px-4 py-3 text-sm bg-neutral-50 dark:bg-neutral-800 border border-neutral-200 dark:border-neutral-700 rounded-xl text-neutral-900 dark:text-white placeholder-neutral-400 focus:outline-none focus:ring-2 focus:ring-brand-orange/40 focus:border-brand-orange transition-colors" /> {/* Apply */}
)}
) }