AIGC.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import * as React from 'react';
  2. import VideoCreator from './VideoCreator';
  3. import { ContentScheduler } from './ContentScheduler';
  4. import { Tabs } from './ui/Tabs';
  5. import { AIGCSettings, AIGCVideo, ScheduledPost } from '../types';
  6. import { useTranslation } from '../hooks/useI18n';
  7. interface AIGCProps {
  8. aigcSettings: AIGCSettings;
  9. onVideosGenerated: (videos: AIGCVideo[]) => void;
  10. onScheduleUpdate: (schedule: ScheduledPost[]) => void;
  11. // FIX: Add onUpdateAIGCSettings to props to be passed down to VideoCreator.
  12. onUpdateAIGCSettings: (newSettings: AIGCSettings) => void;
  13. }
  14. const AIGC: React.FC<AIGCProps> = ({ aigcSettings, onVideosGenerated, onScheduleUpdate, onUpdateAIGCSettings }) => {
  15. const { t } = useTranslation();
  16. const [activeTab, setActiveTab] = React.useState<'creator' | 'scheduler'>('creator');
  17. const renderContent = () => {
  18. switch (activeTab) {
  19. case 'creator':
  20. // FIX: Pass the correct props to VideoCreator as its interface has changed.
  21. return <VideoCreator
  22. aigcSettings={aigcSettings}
  23. onUpdateAIGCSettings={onUpdateAIGCSettings}
  24. onVideosGenerated={onVideosGenerated}
  25. />
  26. case 'scheduler':
  27. return <ContentScheduler
  28. videos={aigcSettings.videos}
  29. schedule={aigcSettings.schedule}
  30. onScheduleUpdate={onScheduleUpdate}
  31. />
  32. default:
  33. return null
  34. }
  35. };
  36. const tabLabels = {
  37. creator: t('nav.aigc.creator'),
  38. scheduler: t('nav.aigc.scheduler'),
  39. };
  40. return (
  41. <div className='h-full flex flex-col'>
  42. <div className='p-6 border-b border-gray-200 dark:border-gray-700'>
  43. <Tabs
  44. tabs={Object.keys(tabLabels) as Array<keyof typeof tabLabels>}
  45. activeTab={activeTab}
  46. labels={tabLabels}
  47. onTabClick={(tab) => setActiveTab(tab)}
  48. />
  49. </div>
  50. <div className='flex-1 overflow-hidden'>
  51. {renderContent()}
  52. </div>
  53. </div>
  54. );
  55. };
  56. export default AIGC;