'use client'; import React from 'react'; import { useScopedI18n } from '@/locales/client'; function useLabels() { const t = useScopedI18n('components.ocdResult'); return { total: t('totalScore'), obs: t('obsessionsScore'), comp: t('compulsionsScore'), severity: t('severity'), severityMap: { 1: t('severityLevel.1'), 2: t('severityLevel.2'), 3: t('severityLevel.3'), 4: t('severityLevel.4'), 5: t('severityLevel.5'), } as Record, }; } export function OCDResult({ answers, }: { answers: string[]; }) { const labels = useLabels(); const toNumber = (v: string | undefined) => Number(v) || 0; let obsessionsScore = 0; let compulsionsScore = 0; for (let i = 1; i <= 10; i++) { const score = toNumber(answers[i - 1]); // array index start 0 if (i <= 5) obsessionsScore += score; else compulsionsScore += score; } const totalScore = obsessionsScore + compulsionsScore; let severityLevel = 0; if (totalScore >= 32) severityLevel = 5; else if (totalScore >= 24) severityLevel = 4; else if (totalScore >= 16) severityLevel = 3; else if (totalScore >= 8) severityLevel = 2; else severityLevel = 1; return (
); } interface MetricCardProps { title: string; value: React.ReactNode; className?: string; } function MetricCard({ title, value, className = '' }: MetricCardProps) { return (
{title} {value}
); }