'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 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; envSubscriptionsSet?: boolean; } import { ShieldCheck } from 'lucide-react'; export function ImportModal({ isOpen, onClose, onImportFile, onImportLink, subscriptions, onAddSubscription, onRemoveSubscription, onRefreshSubscription, envSubscriptionsSet }: ImportModalProps) { const [activeTab, setActiveTab] = useState<'file' | 'link' | 'subscription'>('file'); // Reset tab on open useEffect(() => { if (isOpen) { setActiveTab('file'); } }, [isOpen]); if (!isOpen) return null; return ( <> {/* Modal */}

导入设置

{envSubscriptionsSet && (

系统预设源已启用

通过环境变量设置,应用已自动同步最新预设源

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