'use client'; import React, { useState, useMemo } from 'react'; import { ICON_MAP, ICON_NAMES, ICON_COLORS } from '@/lib/lucideIcons'; import { Search } from 'lucide-react'; interface IconPickerProps { iconName: string; color: string; onIconChange: (name: string) => void; onColorChange: (color: string) => void; } export function IconPicker({ iconName, color, onIconChange, onColorChange }: IconPickerProps) { const [open, setOpen] = useState(false); const [query, setQuery] = useState(''); const filteredIcons = useMemo( () => ICON_NAMES.filter((n) => n.toLowerCase().includes(query.toLowerCase())), [query] ); const SelectedIcon = ICON_MAP[iconName] || ICON_MAP['Globe']; return (
{/* Trigger */} {/* Picker panel */} {open && ( <> {/* Backdrop */}
setOpen(false)} />
{/* Search */}
setQuery(e.target.value)} style={{ paddingLeft: '30px', fontSize: '0.85rem' }} onClick={(e) => e.stopPropagation()} />
{/* Icon grid */}
{filteredIcons.map((name) => { const Icon = ICON_MAP[name]; const isSelected = name === iconName; return ( ); })}
{/* Color palette */}

COULEUR

{ICON_COLORS.map((c) => (
)}
); }