@@ -5,15 +5,59 @@ import Heading from '@components/Heading';
55import { WhyDoThisTooltipProps } from './WhyDoThisTooltip.types' ;
66
77import styles from './WhyDoThisTooltip.module.scss' ;
8+ import Image from 'next/image' ;
89
910const WhyDoThisTooltip : FC < WhyDoThisTooltipProps > = ( {
1011 whatDamagesText,
1112 headline,
1213 locale,
1314} ) => {
15+ // TODO: This is very temporary workaround for strapi data
16+ const looksLikeHtml = ( s : string ) => / < \/ ? [ a - z ] [ \s \S ] * > / i. test ( s ) ;
17+ const escapeHtml = ( s : string ) =>
18+ s
19+ . replace ( / & / g, '&' )
20+ . replace ( / < / g, '<' )
21+ . replace ( / > / g, '>' )
22+ . replace ( / " / g, '"' )
23+ . replace ( / ' / g, ''' ) ;
24+
25+ const textToHtml = ( input : string ) => {
26+ let s = escapeHtml ( input ) ;
27+
28+ s = s . replace ( / \* \* ( .+ ?) \* \* / g, '<strong>$1</strong>' ) ;
29+
30+ const paragraphs = s
31+ . split ( / \n \s * \n / )
32+ . map ( p => p . trim ( ) )
33+ . filter ( Boolean ) ;
34+
35+ return paragraphs . map ( p => `<p>${ p . replace ( / \n / g, '<br />' ) } </p>` ) . join ( '' ) ;
36+ } ;
37+ function RichText ( { value } : { value ?: string | null } ) {
38+ if ( ! value ) return null ;
39+
40+ const html = looksLikeHtml ( value ) ? value : textToHtml ( value ) ;
41+
42+ return (
43+ < div
44+ dangerouslySetInnerHTML = { { __html : html } }
45+ className = { styles . content }
46+ />
47+ ) ;
48+ }
49+
1450 return (
1551 < div className = { styles . whyDoThisTooltip } >
1652 < div >
53+ < Image
54+ src = { '/keepsimple_/assets/longevity/habits/what-is-this-bg.webp' }
55+ alt = "Background"
56+ width = { 700 }
57+ height = { 300 }
58+ priority
59+ className = { styles . img }
60+ />
1761 { headline && (
1862 < Heading
1963 text = { headline ? headline : '' }
@@ -23,10 +67,7 @@ const WhyDoThisTooltip: FC<WhyDoThisTooltipProps> = ({
2367 className = { styles . heading }
2468 />
2569 ) }
26- < div
27- dangerouslySetInnerHTML = { { __html : whatDamagesText || '' } }
28- className = { styles . content }
29- />
70+ < RichText value = { whatDamagesText } />
3071 </ div >
3172 </ div >
3273 ) ;
0 commit comments