import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' import { ScrollArea } from '@/components/ui/scroll-area' import { PencilSimple, Trash } from '@phosphor-icons/react' import copy from '@/data/favicon-designer.json' import { ELEMENT_TYPES } from './constants' import { formatCopy } from './formatCopy' import { FaviconDesign, FaviconElement } from './types' type ElementsPanelProps = { activeDesign: FaviconDesign drawMode: 'select' | 'draw' | 'erase' selectedElementId: string | null onAddElement: (type: FaviconElement['type']) => void onSelectElement: (id: string) => void onDeleteElement: (id: string) => void } export const ElementsPanel = ({ activeDesign, drawMode, selectedElementId, onAddElement, onSelectElement, onDeleteElement, }: ElementsPanelProps) => (
{ELEMENT_TYPES.map(({ value, icon: Icon }) => ( ))}
{drawMode !== 'select' &&

{copy.elements.selectHint}

}
{activeDesign.elements.map((element) => (
{ if (drawMode === 'select') { onSelectElement(element.id) } }} >
{element.type === 'freehand' ? ( ) : ( ELEMENT_TYPES.find((t) => t.value === element.type)?.icon && ( {(() => { const Icon = ELEMENT_TYPES.find((t) => t.value === element.type)!.icon return })()} ) )} {copy.elementTypes[element.type as keyof typeof copy.elementTypes] || element.type} {element.text && "{element.text}"} {element.emoji && {element.emoji}}
))} {activeDesign.elements.length === 0 && (

{copy.elements.empty}

)}
)