'use client'; import { useState, useEffect } from 'react'; import { ImportModalTabs } from './import/ImportModalTabs'; import { FileImportTab } from './import/FileImportTab'; import { LinkImportTab } from './import/LinkImportTab'; import { SubscriptionImportTab } from './import/SubscriptionImportTab'; import { JsonImportTab } from './import/JsonImportTab'; import type { ImportResult } from '@/lib/utils/source-import-utils'; import type { SourceSubscription } from '@/lib/types'; import { ModalBackdrop } from '@/components/ui/ModalBackdrop'; interface ImportModalProps { isOpen: boolean; onClose: () => void; // File Import Handler onImportFile: (jsonString: string) => Promise | boolean; // Link Import Handler onImportLink: (result: ImportResult) => Promise | boolean; // Subscription Handlers subscriptions: SourceSubscription[]; onAddSubscription: (sub: SourceSubscription) => Promise | boolean; onRemoveSubscription: (id: string) => void; onRefreshSubscription: (sub: SourceSubscription) => Promise; } export function ImportModal({ isOpen, onClose, onImportFile, onImportLink, subscriptions, onAddSubscription, onRemoveSubscription, onRefreshSubscription }: ImportModalProps) { const [activeTab, setActiveTab] = useState<'file' | 'link' | 'subscription' | 'json'>('file'); // Reset tab on open useEffect(() => { if (isOpen) { setActiveTab('file'); } }, [isOpen]); if (!isOpen) return null; return ( <> {/* Modal */}

导入设置

{activeTab === 'file' && ( )} {activeTab === 'link' && ( )} {activeTab === 'subscription' && ( )} {activeTab === 'json' && ( )}
); }