'use client'; import React from 'react'; import { useScopedI18n } from '@/locales/client'; import { calculateNPDResults } from '../../test/private/NPDCalculator'; function useLabels() { const t = useScopedI18n('components.npdResult'); return { totalScore: t('totalScore'), percentile: t('percentile'), leadership: t('leadership'), exhibitionism: t('exhibitionism'), narcissisticTraitsLevel: t('narcissisticTraitsLevel'), dominantTrait: t('dominantTrait'), entitlement: t('entitlement'), interpretation: t('interpretation'), understandingTraits: t('understandingTraits'), factorBreakdown: t('factorBreakdown'), importantNotes: t('importantNotes'), healthyVsProblematic: t('healthyVsProblematic'), interpretationLevels: { low: t('interpretationLevels.low'), average: t('interpretationLevels.average'), above_average: t('interpretationLevels.above_average'), high: t('interpretationLevels.high'), }, traitLabels: { leadership: t('traitLabels.leadership'), exhibitionism: t('traitLabels.exhibitionism'), entitlement: t('traitLabels.entitlement'), }, factorDescriptions: { leadership: t('factorDescriptions.leadership'), exhibitionism: t('factorDescriptions.exhibitionism'), entitlement: t('factorDescriptions.entitlement'), }, notes: { continuum: t('notes.continuum'), adaptive: t('notes.adaptive'), disorder: t('notes.disorder'), purpose: t('notes.purpose'), population: t('notes.population'), }, healthyAspects: t('healthyAspects'), potentialConcerns: t('potentialConcerns'), balanceKey: t('balanceKey'), recommendationTexts: { high: t('recommendationTexts.high'), above_average: t('recommendationTexts.above_average'), low: t('recommendationTexts.low'), }, }; } export function NPDResult({ answers, }: { answers: string[]; }) { const labels = useLabels(); // Convert answers array to object format expected by calculator const answersObj: { [key: number]: string } = {}; answers.forEach((answer, index) => { answersObj[index + 1] = answer; }); const results = calculateNPDResults({ answers: answersObj, questions: [] }); const getInterpretationColor = (interpretation: string) => { switch (interpretation) { case 'low': return 'text-green-600'; case 'average': return 'text-blue-600'; case 'above_average': return 'text-yellow-600'; case 'high': return 'text-red-600'; default: return 'text-gray-600'; } }; const getInterpretationLabel = (interpretation: string) => { return labels.interpretationLevels[interpretation as keyof typeof labels.interpretationLevels] || 'Unknown'; }; const getDominantTraitLabel = (trait: string) => { return labels.traitLabels[trait as keyof typeof labels.traitLabels] || 'Unknown'; }; return (
Score: {results.totalScore}/16 (≈{results.percentile}th percentile)
{labels.entitlement}: {results.factorScores.entitlement}
{results.interpretation === "high" ? labels.recommendationTexts.high : results.interpretation === "above_average" ? labels.recommendationTexts.above_average : labels.recommendationTexts.low}
{labels.factorBreakdown}:
{labels.healthyAspects}
{labels.potentialConcerns}
{labels.balanceKey}