'use client'; import React from 'react'; import { calculateDASS21Results } from '../../test/private/DASS21Calculator'; import { useScopedI18n } from '@/locales/client'; interface DASS21ResultProps { answers: string[]; } export function DASS21Result({ answers }: DASS21ResultProps) { const t = useScopedI18n('components.dass21Result'); // Convert answer format to the format required by calculator const answersMap: { [key: number]: string } = {}; answers.forEach((answer, index) => { answersMap[index + 1] = answer; }); const results = calculateDASS21Results({ answers: answersMap, questions: [] }); const severityNames = { normal: t('severity.normal'), mild: t('severity.mild'), moderate: t('severity.moderate'), severe: t('severity.severe'), extremely_severe: t('severity.extremely_severe') }; const getSeverityColor = (severity: string) => { switch (severity) { case "normal": return "text-green-600 bg-green-50 border-green-200"; case "mild": return "text-yellow-600 bg-yellow-50 border-yellow-200"; case "moderate": return "text-orange-600 bg-orange-50 border-orange-200"; case "severe": return "text-red-600 bg-red-50 border-red-200"; case "extremely_severe": return "text-red-700 bg-red-100 border-red-300"; default: return "text-gray-600 bg-gray-50 border-gray-200"; } }; const dimensionInfo = { depression: { name: t('dimensions.depression'), score: results.depressionScore, severity: results.depressionSeverity, description: t('descriptions.depression'), maxScore: 42 }, anxiety: { name: t('dimensions.anxiety'), score: results.anxietyScore, severity: results.anxietySeverity, description: t('descriptions.anxiety'), maxScore: 42 }, stress: { name: t('dimensions.stress'), score: results.stressScore, severity: results.stressSeverity, description: t('descriptions.stress'), maxScore: 42 } }; return (
{/* Overall score */}

{t('title')}

{/* Three-dimension analysis */}

{t('labels.three_dimension_analysis')}

{Object.entries(dimensionInfo).map(([key, info]) => (

{info.name}

{info.score}
/{info.maxScore}
{severityNames[info.severity as keyof typeof severityNames]}
{info.description}
))}
{/* Severity level standards */}

{t('labels.scoring_criteria')}

{t('labels.depression_dimension')}

{t('scoring.depression.normal')}
{t('scoring.depression.mild')}
{t('scoring.depression.moderate')}
{t('scoring.depression.severe')}
{t('scoring.depression.extremely_severe')}

{t('labels.anxiety_dimension')}

{t('scoring.anxiety.normal')}
{t('scoring.anxiety.mild')}
{t('scoring.anxiety.moderate')}
{t('scoring.anxiety.severe')}
{t('scoring.anxiety.extremely_severe')}

{t('labels.stress_dimension')}

{t('scoring.stress.normal')}
{t('scoring.stress.mild')}
{t('scoring.stress.moderate')}
{t('scoring.stress.severe')}
{t('scoring.stress.extremely_severe')}
{/* Result interpretation and recommendations */}

{t('labels.result_interpretation_advice')}

{/* Overall assessment */}

{t('labels.overall_assessment')}

{results.isSevere ? (

{t('assessment.severe_message')}

) : (

{t('assessment.normal_message')}

)}
{/* Dimension-specific recommendations */} {results.depressionSeverity !== "normal" && (

{t('advice.depression_dimension')}

{t('advice.depression_item_1')}

{t('advice.depression_item_2')}

{t('advice.depression_item_3')}

{t('advice.depression_item_4')}

{(results.depressionSeverity === "severe" || results.depressionSeverity === "extremely_severe") && (

{t('advice.depression_severe')}

)}
)} {results.anxietySeverity !== "normal" && (

{t('advice.anxiety_dimension')}

{t('advice.anxiety_item_1')}

{t('advice.anxiety_item_2')}

{t('advice.anxiety_item_3')}

{t('advice.anxiety_item_4')}

{(results.anxietySeverity === "severe" || results.anxietySeverity === "extremely_severe") && (

{t('advice.anxiety_severe')}

)}
)} {results.stressSeverity !== "normal" && (

{t('advice.stress_dimension')}

{t('advice.stress_item_1')}

{t('advice.stress_item_2')}

{t('advice.stress_item_3')}

{t('advice.stress_item_4')}

{(results.stressSeverity === "severe" || results.stressSeverity === "extremely_severe") && (

{t('advice.stress_severe')}

)}
)} {/* Severe situation warning */} {results.isSevere && (
{t('labels.important_reminder')}:{t('warning.severe_distress')}
)}

{t('labels.note')}:{t('disclaimer')}

); } interface MetricCardProps { title: string; value: React.ReactNode; className?: string; } function MetricCard({ title, value, className = '' }: MetricCardProps) { return (
{title} {value}
); }