'use client' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Switch } from '@/components/ui/switch' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Button } from '@/components/ui/button' import { Card, CardContent } from '@/components/ui/card' import { Plus, Trash2, FileText } from 'lucide-react' import type { IntakeConfig, FileRequirementConfig } from '@/types/pipeline-wizard' type IntakeSectionProps = { config: IntakeConfig onChange: (config: IntakeConfig) => void isActive?: boolean } export function IntakeSection({ config, onChange, isActive }: IntakeSectionProps) { const updateConfig = (updates: Partial) => { onChange({ ...config, ...updates }) } const updateFileReq = (index: number, updates: Partial) => { const updated = [...config.fileRequirements] updated[index] = { ...updated[index], ...updates } onChange({ ...config, fileRequirements: updated }) } const addFileReq = () => { onChange({ ...config, fileRequirements: [ ...config.fileRequirements, { name: '', description: '', acceptedMimeTypes: ['application/pdf'], maxSizeMB: 50, isRequired: false, }, ], }) } const removeFileReq = (index: number) => { const updated = config.fileRequirements.filter((_, i) => i !== index) onChange({ ...config, fileRequirements: updated }) } return (
{isActive && (

Some settings are locked because this pipeline is active.

)} {/* Submission Window */}

Enable timed submission windows for project intake

updateConfig({ submissionWindowEnabled: checked }) } disabled={isActive} />
{/* Late Policy */}
{config.lateSubmissionPolicy === 'flag' && (
updateConfig({ lateGraceHours: parseInt(e.target.value) || 0 }) } />
)}
{/* File Requirements */}
{config.fileRequirements.length === 0 && (

No file requirements configured. Projects can be submitted without files.

)} {config.fileRequirements.map((req, index) => (
updateFileReq(index, { name: e.target.value })} />
updateFileReq(index, { maxSizeMB: parseInt(e.target.value) || undefined, }) } />
updateFileReq(index, { description: e.target.value }) } />
updateFileReq(index, { isRequired: checked }) } />
))}
) }