Skip to content

Commit 3674316

Browse files
authored
conf: use ReactMarkdown to display events description and speakers bio (graphql#1514)
1 parent a788294 commit 3674316

File tree

5 files changed

+677
-46
lines changed

5 files changed

+677
-46
lines changed

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
"prismjs": "1.29.0",
4545
"react": "18.2.0",
4646
"react-dom": "18.2.0",
47+
"react-markdown": "^8.0.7",
4748
"react-tooltip": "^5.18.1",
49+
"rehype-raw": "^6.1.1",
4850
"timeago.js": "4.0.2"
4951
},
5052
"devDependencies": {
@@ -64,4 +66,4 @@
6466
"tailwindcss": "3.3.2",
6567
"typescript": "5.1.3"
6668
}
67-
}
69+
}

src/components/Conf/Schedule/ScheduleList.tsx

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { format, parseISO, compareAsc } from "date-fns"
22
import React, { FC, useEffect, useState } from "react"
3+
import ReactMarkdown from "react-markdown"
4+
import rehypeRaw from "rehype-raw"
5+
import remarkGfm from "remark-gfm"
36
import { Tooltip } from "react-tooltip"
47
import { eventsColors } from "../../../utils/eventsColors"
58

@@ -104,7 +107,7 @@ const ScheduleList: FC<Props> = ({
104107
isOpen={isOpen}
105108
positionStrategy="absolute"
106109
opacity={1}
107-
border={"3px solid black"}
110+
border="2px solid black"
108111
setIsOpen={value => {
109112
setIsOpen(value)
110113
}}
@@ -114,9 +117,15 @@ const ScheduleList: FC<Props> = ({
114117
<div className="text-gray-800 flex flex-col gap-2">
115118
<span className="font-medium">{hoveredSession.name}</span>
116119
<p className="" style={{ margin: 0 }}>
117-
{hoveredSession?.description
118-
? hoveredSession?.description.slice(0, 350) + "..."
119-
: "No Description"}
120+
<ReactMarkdown
121+
children={
122+
hoveredSession?.description
123+
? hoveredSession?.description.slice(0, 250) + "..."
124+
: "No Description"
125+
}
126+
rehypePlugins={[rehypeRaw]}
127+
remarkPlugins={[remarkGfm]}
128+
/>
120129
</p>
121130
</div>
122131
)}

src/templates/event.tsx

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import React, { FC } from "react"
2+
import ReactMarkdown from "react-markdown"
3+
import rehypeRaw from "rehype-raw"
4+
import remarkGfm from "remark-gfm"
25
import { HeadProps, PageProps } from "gatsby"
36
import FooterConf from "../components/Conf/Footer"
47
import HeaderConf from "../components/Conf/Header"
@@ -121,7 +124,13 @@ export const EventComponent: FC<{
121124
<Tag text={event.audience} />
122125
<Tag text={event.event_subtype} />
123126
</div>
124-
<p className="mt-7 lg:pr-20">{event.description}</p>
127+
<p className="mt-7 lg:pr-20">
128+
<ReactMarkdown
129+
children={event.description}
130+
remarkPlugins={[remarkGfm]}
131+
rehypePlugins={[rehypeRaw]}
132+
/>
133+
</p>
125134

126135
<div className="flex lg:flex-row flex-col gap-4">
127136
{speakers?.map(speaker => (
@@ -149,7 +158,7 @@ export const EventComponent: FC<{
149158
key={social.url}
150159
href={social.url}
151160
target="_blank"
152-
className="flex items-center text-[#333333] w-max"
161+
className="flex items-center text-[#c9b7b7] w-max"
153162
>
154163
<SocialMediaIcon
155164
service={

src/templates/speaker.tsx

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import React, { FC } from "react"
2+
import { ReactMarkdown } from "react-markdown/lib/react-markdown"
3+
import rehypeRaw from "rehype-raw"
4+
import remarkGfm from "remark-gfm"
25
import FooterConf from "../components/Conf/Footer"
36
import HeaderConf from "../components/Conf/Header"
47
import LayoutConf from "../components/Conf/Layout"
@@ -102,10 +105,13 @@ const SpeakersTemplate: FC<
102105
<div className="mt-3 font-medium">
103106
{renderPositionAndCompany(speaker)}
104107
</div>
105-
<p
106-
className="lg:text-justify"
107-
dangerouslySetInnerHTML={{ __html: speaker.about }}
108-
/>
108+
<p className="lg:text-justify">
109+
<ReactMarkdown
110+
children={speaker.about}
111+
rehypePlugins={[rehypeRaw]}
112+
remarkPlugins={[remarkGfm]}
113+
/>
114+
</p>
109115
</div>
110116
</div>
111117
</div>

0 commit comments

Comments
 (0)