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 && (
)
)}
);
}