mirror of
https://github.com/kjanat/livedash-node.git
synced 2026-02-13 19:55:45 +01:00
- Dynamic import for WordCloud component (code splitting) - Fix waterfall in handleRefresh with Promise.all - Memoize data prep functions in overview page (7 useMemo hooks) - Replace useState+useEffect with useMemo in CountryDisplay/LanguageDisplay - Memoize navigationCards and class getters in dashboard page - Extract inline handlers with useCallback - Fix missing index parameter in TopQuestionsChart map - Migrate from next lint to ESLint CLI (Next.js 16 deprecation)
27 lines
708 B
TypeScript
27 lines
708 B
TypeScript
"use client";
|
|
|
|
import { useMemo } from "react";
|
|
import { getLocalizedLanguageName } from "../lib/localization";
|
|
|
|
interface LanguageDisplayProps {
|
|
languageCode: string | null | undefined;
|
|
className?: string;
|
|
}
|
|
|
|
/**
|
|
* Component to display a language name from its ISO 639-1 code
|
|
* Uses Intl.DisplayNames API when available, falls back to the code
|
|
*/
|
|
export default function LanguageDisplay({
|
|
languageCode,
|
|
className,
|
|
}: LanguageDisplayProps) {
|
|
// Compute directly - Intl.DisplayNames is synchronous
|
|
const languageName = useMemo(
|
|
() => (languageCode ? getLocalizedLanguageName(languageCode) : "Unknown"),
|
|
[languageCode]
|
|
);
|
|
|
|
return <span className={className}>{languageName}</span>;
|
|
}
|