import { Box, Button, Column, Dialog, Icon, Modal, Tooltip, TooltipTrigger, } from '@umami/react-zen'; import { useMemo, useState } from 'react'; import { useBoard, useMessages } from '@/components/hooks'; import { Pencil, Plus, X } from '@/components/icons'; import type { BoardComponentConfig } from '@/lib/types'; import styles from './BoardColumn.module.css'; import { BoardComponentRenderer } from './BoardComponentRenderer'; import { BoardComponentSelect } from './BoardComponentSelect'; export function BoardColumn({ id, component, editing = false, onRemove, onSetComponent, canRemove = true, }: { id: string; component?: BoardComponentConfig; editing?: boolean; onRemove?: (id: string) => void; onSetComponent?: (id: string, config: BoardComponentConfig | null) => void; canRemove?: boolean; }) { const [showSelect, setShowSelect] = useState(false); const { board } = useBoard(); const { t, labels } = useMessages(); const websiteId = board?.parameters?.websiteId; const renderedComponent = useMemo(() => { if (!component || !websiteId) { return null; } return ; }, [component, websiteId]); const handleSelect = (config: BoardComponentConfig) => { onSetComponent?.(id, config); setShowSelect(false); }; return ( {editing && canRemove && ( Remove column )} {renderedComponent ? ( <> {renderedComponent} {editing && ( Change component )} ) : ( editing && ( ) )} {() => ( setShowSelect(false)} /> )} ); }