import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Button, Space } from "antd"; import Panel from "./Panel"; import PanelContext, { type ShowPanelOptions, type ShowPanelWithConfirmOptions } from "./PanelContext"; export const PanelProvider = ({ children }: { children: React.ReactNode }) => { const { t } = useTranslation(); const [open, setOpen] = useState(false); const [options, setOptions] = useState(); const showPanel = (options: ShowPanelOptions) => { setOpen(true); setOptions(options); }; const showPanelWithConfirm = (options: ShowPanelWithConfirmOptions) => { const updateOptionsFooter = (confirmLoading: boolean) => { setOptions({ ...options, footer: ( ), onClose: () => Promise.resolve(!confirmLoading), }); }; showPanel(options); updateOptionsFooter(false); }; const hidePanel = () => { setOpen(false); setOptions(undefined); }; const handleOpenChange = (open: boolean) => { setOpen(open); if (!open) { setOptions(undefined); } }; return ( {children} {options?.children} ); };