/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import useUploadVideo from '@/common/components/gallery/useUploadVideo'; import useScreenSize from '@/common/screen/useScreenSize'; import {VideoData} from '@/demo/atoms'; import {MAX_UPLOAD_FILE_SIZE} from '@/demo/DemoConfig'; import {BLUE_PINK_FILL_BR} from '@/theme/gradientStyle'; import {RetryFailed, Upload} from '@carbon/icons-react'; import {CSSProperties, ReactNode} from 'react'; import {Loading} from 'react-daisyui'; type Props = { style: CSSProperties; onUpload: (video: VideoData) => void; onUploadStart?: () => void; onUploadError?: (error: Error) => void; }; export default function VideoGalleryUploadVideo({ style, onUpload, onUploadStart, onUploadError, }: Props) { const {getRootProps, getInputProps, isUploading, error} = useUploadVideo({ onUpload, onUploadStart, onUploadError, }); const {isMobile} = useScreenSize(); return (
{isUploading && ( } title="Uploading ..." /> )} {error !== null && ( } title={error} /> )} {!isUploading && error === null && ( } title={ <> Upload{' '}
Max {MAX_UPLOAD_FILE_SIZE}
} /> )}
); } type IconWrapperProps = { icon: ReactNode; title: ReactNode | string; }; function IconWrapper({icon, title}: IconWrapperProps) { return ( <>
{icon}
{title}
); }