11import { useEffect , useRef , useState } from 'react' ;
22import mermaid from 'mermaid' ;
3+ import { useTranslation } from 'react-i18next' ;
34
45interface MermaidDiagramProps {
56 chart : string ;
@@ -28,6 +29,7 @@ export function MermaidDiagram({ chart, className = '' }: MermaidDiagramProps) {
2829 const [ svg , setSvg ] = useState < string > ( '' ) ;
2930 const [ error , setError ] = useState < string | null > ( null ) ;
3031 const [ id ] = useState ( generateId ) ;
32+ const { t } = useTranslation ( [ 'common' , 'errors' ] ) ;
3133
3234 useEffect ( ( ) => {
3335 if ( ! chart || ! ref . current ) return ;
@@ -46,7 +48,8 @@ export function MermaidDiagram({ chart, className = '' }: MermaidDiagramProps) {
4648 setSvg ( svg ) ;
4749 } catch ( err ) {
4850 console . error ( 'Mermaid rendering error:' , err ) ;
49- setError ( err instanceof Error ? err . message : 'Failed to render diagram' ) ;
51+ const fallback = t ( 'mermaid.renderError' , { ns : 'errors' } ) ;
52+ setError ( err instanceof Error ? err . message : fallback ) ;
5053 }
5154 } ;
5255
@@ -57,7 +60,7 @@ export function MermaidDiagram({ chart, className = '' }: MermaidDiagramProps) {
5760 return (
5861 < div className = { `border border-destructive rounded-lg p-4 ${ className } ` } >
5962 < div className = "text-sm text-destructive" >
60- < strong > Mermaid Diagram Error: </ strong >
63+ < strong > { t ( 'mermaid.title' , { ns : 'errors' } ) } </ strong >
6164 < pre className = "mt-2 text-xs overflow-auto" > { error } </ pre >
6265 </ div >
6366 </ div >
@@ -67,13 +70,13 @@ export function MermaidDiagram({ chart, className = '' }: MermaidDiagramProps) {
6770 if ( ! svg ) {
6871 return (
6972 < div className = { `border rounded-lg p-4 ${ className } ` } >
70- < div className = "text-sm text-muted-foreground" > Loading diagram... </ div >
73+ < div className = "text-sm text-muted-foreground" > { t ( 'mermaid.loading' , { ns : 'errors' } ) } </ div >
7174 </ div >
7275 ) ;
7376 }
7477
7578 return (
76- < div
79+ < div
7780 ref = { ref }
7881 className = { `mermaid-diagram border rounded-lg p-4 overflow-auto ${ className } ` }
7982 dangerouslySetInnerHTML = { { __html : svg } }
0 commit comments