'use client'; import { motion } from 'framer-motion'; import { fadeUp } from '@/lib/animations'; import { CriticalButton, FlatTextarea } from '@/components/ui'; const SAMPLES = [ { label: 'p53 (human)', seq: `>sp|P04637|P53_HUMAN Cellular tumor antigen p53 MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGP DEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYPQGLNGTVNLPGRNSFEV RVCACPHERCTEGRAVKLFSPKELNCEMAQDIINNKFNLNLLPETIPNTIICFVESQPPQGD SVTTCFSWRGEGNEMYLHTEKEYKALKSTLSEKYMATCLLLSPKKKSLFPEALKLCNQKYS EEFLLLDEALLSGCFAELACALHLAPAEGRYSGGFNHELYNMMTQQQQHQHHLQMQQHHQQ HHQQHHQQHHQQQQQQQQQQQQQQQQQH`, }, { label: 'Insulin (human)', seq: `>sp|P01308|INS_HUMAN Insulin MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAED LQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN`, }, ]; interface SequenceInputProps { value: string; onChange: (value: string) => void; onSubmit: () => void; loading: boolean; error?: string | null; } export function SequenceInput({ value, onChange, onSubmit, loading, error }: SequenceInputProps) { const aaCount = value .split('\n') .filter((l) => !l.startsWith('>')) .join('').length; return ( onChange(e.target.value)} rows={10} placeholder={">sp|P04637|P53_HUMAN\nMEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQ..."} /> {error && (

{error}

)}
{SAMPLES.map((s) => ( ))} {value ? `${aaCount} aa` : '0 aa'}
{loading ? 'Running pipeline…' : 'Run Pipeline'}
); }