'use client'; import React, { useState } from 'react'; import { useLanguage } from '@/contexts/LanguageContext'; import UserSelector from './UserSelector'; import TokenInput from './TokenInput'; interface ConfigurationModalProps { isOpen: boolean; onClose: () => void; // Repository input repositoryInput: string; // Language selection selectedLanguage: string; setSelectedLanguage: (value: string) => void; supportedLanguages: Record; // Wiki type options isComprehensiveView: boolean; setIsComprehensiveView: (value: boolean) => void; // Model selection provider: string; setProvider: (value: string) => void; model: string; setModel: (value: string) => void; isCustomModel: boolean; setIsCustomModel: (value: boolean) => void; customModel: string; setCustomModel: (value: string) => void; // Platform selection selectedPlatform: 'github' | 'gitlab' | 'bitbucket'; setSelectedPlatform: (value: 'github' | 'gitlab' | 'bitbucket') => void; // Access token accessToken: string; setAccessToken: (value: string) => void; // File filter options excludedDirs: string; setExcludedDirs: (value: string) => void; excludedFiles: string; setExcludedFiles: (value: string) => void; includedDirs: string; setIncludedDirs: (value: string) => void; includedFiles: string; setIncludedFiles: (value: string) => void; // Form submission onSubmit: () => void; isSubmitting: boolean; // Authentication authRequired?: boolean; authCode?: string; setAuthCode?: (code: string) => void; isAuthLoading?: boolean; } export default function ConfigurationModal({ isOpen, onClose, repositoryInput, selectedLanguage, setSelectedLanguage, supportedLanguages, isComprehensiveView, setIsComprehensiveView, provider, setProvider, model, setModel, isCustomModel, setIsCustomModel, customModel, setCustomModel, selectedPlatform, setSelectedPlatform, accessToken, setAccessToken, excludedDirs, setExcludedDirs, excludedFiles, setExcludedFiles, includedDirs, setIncludedDirs, includedFiles, setIncludedFiles, onSubmit, isSubmitting, authRequired, authCode, setAuthCode, isAuthLoading }: ConfigurationModalProps) { const { messages: t } = useLanguage(); // Show token section state const [showTokenSection, setShowTokenSection] = useState(false); if (!isOpen) return null; return (
{/* Modal header with close button */}

{t.form?.configureWiki || 'Configure Wiki'}

{/* Modal body */}
{/* Repository info */}
{repositoryInput}
{/* Language selection */}
{/* Wiki Type Selector - more compact version */}
{/* Model Selector */}
{/* Access token section using TokenInput component */} setShowTokenSection(!showTokenSection)} allowPlatformChange={true} /> {/* Authorization Code Input */} {isAuthLoading && (
Loading authentication status...
)} {!isAuthLoading && authRequired && (
setAuthCode?.(e.target.value)} className="input-japanese block w-full px-3 py-2 text-sm rounded-md bg-transparent text-[var(--foreground)] focus:outline-none focus:border-[var(--accent-primary)]" placeholder="Enter your authorization code" />
{t.form?.authorizationRequired || 'Authentication is required to generate the wiki.'}
)}
{/* Modal footer */}
); }