diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 1054f199b2..b78ea22cf2 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -4646,7 +4646,14 @@ "title": "Update" }, "video": { - "title": "Video" + "error": { + "invalid": "Invalid video" + }, + "prompt": { + "placeholder": "describes the video to generate" + }, + "title": "Video", + "undefined": "No available video" }, "warning": { "missing_provider": "The supplier does not exist; reverted to the default supplier {{provider}}. This may cause issues." diff --git a/src/renderer/src/pages/video/Video.tsx b/src/renderer/src/pages/video/Video.tsx new file mode 100644 index 0000000000..e005454de1 --- /dev/null +++ b/src/renderer/src/pages/video/Video.tsx @@ -0,0 +1,22 @@ +import { CircleXIcon } from 'lucide-react' +import { useTranslation } from 'react-i18next' + +export interface VideoProps { + video: null | undefined +} + +export const Video = ({ video }: VideoProps) => { + const { t } = useTranslation() + return ( +
+ {video && } + {video === undefined && t('video.undefined')} + {video === null && ( +
+ + {t('video.error.invalid')} +
+ )} +
+ ) +} diff --git a/src/renderer/src/pages/video/VideoPage.tsx b/src/renderer/src/pages/video/VideoPage.tsx index 128436a279..89bf125067 100644 --- a/src/renderer/src/pages/video/VideoPage.tsx +++ b/src/renderer/src/pages/video/VideoPage.tsx @@ -7,6 +7,7 @@ import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ProviderSetting } from './settings/ProviderSetting' +import { VideoPanel } from './VideoPanel' export const VideoPage = () => { const { t } = useTranslation() @@ -21,9 +22,9 @@ export const VideoPage = () => { -
+ -
+
) diff --git a/src/renderer/src/pages/video/VideoPanel.tsx b/src/renderer/src/pages/video/VideoPanel.tsx new file mode 100644 index 0000000000..42d5553797 --- /dev/null +++ b/src/renderer/src/pages/video/VideoPanel.tsx @@ -0,0 +1,39 @@ +import { Button, Skeleton, Textarea } from '@heroui/react' +import { ArrowUp } from 'lucide-react' +import { useState } from 'react' +import { useTranslation } from 'react-i18next' + +import { Video } from './Video' + +export const VideoPanel = () => { + const { t } = useTranslation() + const [prompt, setPrompt] = useState('') + // TODO: get video job from api + const video = { success: false, data: undefined } + return ( +
+
+ + +
+
+