// Copyright 2017-2021 @polkadot/react-components authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { ThemeDef } from '@polkadot/react-components/types'; import type { ActionsProps, ColumnProps, ModalProps } from './types'; import React, { useContext } from 'react'; import { Modal as SUIModal } from 'semantic-ui-react'; import { ThemeContext } from 'styled-components'; import Actions from './Actions'; import Column from './Column'; import Columns from './Columns'; type ModalType = React.FC & { Actions: React.FC; Column: React.FC; Columns: React.FC; Content: typeof SUIModal.Content; Header: typeof SUIModal.Header; Description: typeof SUIModal.Description; }; function ModalBase (props: ModalProps): React.ReactElement { const { theme } = useContext(ThemeContext); const { children, className = '', header, open = true } = props; return ( {header && ( {header} )} {children} ); } const Modal = React.memo(ModalBase) as unknown as ModalType; Modal.Actions = Actions; Modal.Column = Column; Modal.Columns = Columns; Modal.Content = SUIModal.Content; Modal.Header = SUIModal.Header; Modal.Description = SUIModal.Description; export default Modal;