/* eslint-disable no-undef */ import { Icon } from '@bentwnghk/ui'; import { createStyles } from 'antd-style'; import { FileImage, FileText, FileUpIcon } from 'lucide-react'; import { darken, lighten } from 'polished'; import { memo } from 'react'; import { createPortal } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { Center, Flexbox } from 'react-layout-kit'; import { getContainer, useDragUpload } from './useDragUpload'; const BLOCK_SIZE = 64; const ICON_SIZE = 36; const useStyles = createStyles(({ css, token }) => { return { container: css` width: 320px; height: 200px; padding: ${token.borderRadiusLG + 4}px; border-radius: 16px; background: ${token.geekblue}; `, content: css` width: 100%; height: 100%; padding: 16px; border: 1.5px dashed #fff; border-radius: ${token.borderRadiusLG}px; `, desc: css` font-size: 14px; line-height: 22px; color: #fff; `, icon: css` border-radius: ${token.borderRadiusLG}px; color: ${darken(0.05, token.geekblue)}; background: ${lighten(0.38, token.geekblue)}; `, iconGroup: css` margin-block-start: -44px; `, title: css` font-size: 20px; font-weight: bold; color: #fff; `, wrapper: css` position: fixed; z-index: 9999; inset: 0; width: 100%; height: 100%; background: ${token.colorBgMask}; transition: all 0.3s ease-in-out; `, }; }); interface DragUploadProps { enabledFiles?: boolean; onUploadFiles: (files: File[]) => Promise; } const DragUpload = memo(({ enabledFiles = true, onUploadFiles }) => { const { styles, theme } = useStyles(); const { t } = useTranslation('components'); const isDragging = useDragUpload(onUploadFiles); if (!isDragging) return; return createPortal(
{t(enabledFiles ? 'DragUpload.dragFileTitle' : 'DragUpload.dragTitle')} {t(enabledFiles ? 'DragUpload.dragFileDesc' : 'DragUpload.dragDesc')}
, getContainer()!, ); }); export default DragUpload;