diff options
Diffstat (limited to 'src/components/molecules/modals/modal.tsx')
| -rw-r--r-- | src/components/molecules/modals/modal.tsx | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/src/components/molecules/modals/modal.tsx b/src/components/molecules/modals/modal.tsx deleted file mode 100644 index 344d5b9..0000000 --- a/src/components/molecules/modals/modal.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import dynamic from 'next/dynamic'; -import { FC, ReactNode } from 'react'; -import { - type CogProps, - Heading, - type HeadingProps, - type MagnifyingGlassProps, -} from '../../atoms'; -import styles from './modal.module.scss'; - -export type Icons = 'cogs' | 'search'; - -export type ModalProps = { - /** - * The modal body. - */ - children: ReactNode; - /** - * Set additional classnames. - */ - className?: string; - /** - * Set additional classnames to the heading. - */ - headingClassName?: HeadingProps['className']; - /** - * A icon to illustrate the modal. - */ - icon?: Icons; - /** - * The modal title. - */ - title?: string; -}; - -const CogIcon = dynamic<CogProps>( - () => import('../../atoms/icons/cog').then((mod) => mod.Cog), - { - ssr: false, - } -); -const SearchIcon = dynamic<MagnifyingGlassProps>( - () => - import('../../atoms/icons/magnifying-glass').then( - (mod) => mod.MagnifyingGlass - ), - { ssr: false } -); - -/** - * Modal component - * - * Render a modal component with an optional title and icon. - */ -export const Modal: FC<ModalProps> = ({ - children, - className = '', - headingClassName = '', - icon, - title, -}) => { - const getIcon = (id: Icons) => { - switch (id) { - case 'cogs': - return <CogIcon />; - case 'search': - return <SearchIcon />; - default: - return <></>; - } - }; - - return ( - <div className={`${styles.wrapper} ${className}`}> - {title && ( - <Heading - isFake={true} - level={3} - className={`${styles.title} ${headingClassName}`} - > - {icon && <span className={styles.icon}>{getIcon(icon)}</span>} - {title} - </Heading> - )} - {children} - </div> - ); -}; |
