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}
)}
)