Skip to content

Commit 914b02c

Browse files
committed
Gallery fixes
1 parent a9a794d commit 914b02c

File tree

3 files changed

+202
-127
lines changed

3 files changed

+202
-127
lines changed
Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ReactNode } from 'react'
1+
import { ReactNode, memo, useMemo } from 'react'
22
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'
33
import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism'
44

@@ -10,7 +10,30 @@ interface CodeExampleProps {
1010
children: ReactNode
1111
}
1212

13-
export default function CodeExample({ title, description, code, language = 'tsx', children }: CodeExampleProps) {
13+
function CodeExample({ title, description, code, language = 'tsx', children }: CodeExampleProps) {
14+
// Memoize the code block to prevent re-rendering when only children change
15+
const codeBlock = useMemo(() => (
16+
<div className="mb-4 rounded-lg overflow-hidden">
17+
<SyntaxHighlighter
18+
language={language}
19+
style={oneDark}
20+
customStyle={{
21+
margin: 0,
22+
borderRadius: '0.5rem',
23+
fontSize: '0.875rem',
24+
backgroundColor: '#0f172a', // slate-900
25+
}}
26+
codeTagProps={{
27+
style: {
28+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
29+
}
30+
}}
31+
>
32+
{code}
33+
</SyntaxHighlighter>
34+
</div>
35+
), [code, language])
36+
1437
return (
1538
<div className="mb-12">
1639
{title && (
@@ -25,25 +48,7 @@ export default function CodeExample({ title, description, code, language = 'tsx'
2548
)}
2649

2750
{/* Code Block */}
28-
<div className="mb-4 rounded-lg overflow-hidden">
29-
<SyntaxHighlighter
30-
language={language}
31-
style={oneDark}
32-
customStyle={{
33-
margin: 0,
34-
borderRadius: '0.5rem',
35-
fontSize: '0.875rem',
36-
backgroundColor: '#0f172a', // slate-900
37-
}}
38-
codeTagProps={{
39-
style: {
40-
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
41-
}
42-
}}
43-
>
44-
{code}
45-
</SyntaxHighlighter>
46-
</div>
51+
{codeBlock}
4752

4853
{/* Live Example */}
4954
<div className="not-prose border border-gray-200 dark:border-gray-800 rounded-lg p-6 bg-white dark:bg-gray-900">
@@ -53,3 +58,5 @@ export default function CodeExample({ title, description, code, language = 'tsx'
5358
)
5459
}
5560

61+
export default memo(CodeExample)
62+

src/gallery/pages/Autocomplete.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@ export default function AutocompletePage() {
5151
)}
5252
</Autocomplete>
5353
<div className="mt-2 flex justify-end">
54-
<p>
54+
<div>
5555
<b className="text-gray-500">Single:</b>
5656
{simple && (
5757
<div className="flex">
5858
<img src={simple.profileUrl} className="w-8 h-8 rounded-full mr-2" alt={simple.displayName} />
5959
<b className="text-lg">{simple.displayName}</b>
6060
</div>
6161
)}
62-
</p>
62+
</div>
6363
</div>
6464
</div>
6565
</CodeExample>
@@ -102,15 +102,15 @@ export default function AutocompletePage() {
102102
)}
103103
</Autocomplete>
104104
<div className="mt-2 flex justify-end">
105-
<p>
105+
<div>
106106
<b className="text-gray-500">Single with Icon:</b>
107107
{contact && (
108108
<div className="flex">
109109
<img src={contact.profileUrl} className="w-8 h-8 rounded-full mr-2" alt={contact.displayName} />
110110
<b className="text-lg">{contact.displayName}</b>
111111
</div>
112112
)}
113-
</p>
113+
</div>
114114
</div>
115115
</div>
116116
</CodeExample>
@@ -156,7 +156,7 @@ export default function AutocompletePage() {
156156
</Autocomplete>
157157
<div className="mt-2">
158158
<div className="text-right"><b className="text-gray-500">Multiple with Icon:</b></div>
159-
<p>
159+
<div>
160160
{contacts.length > 0 && (
161161
<div className="flex flex-wrap">
162162
{contacts.map((c: any) => (
@@ -167,7 +167,7 @@ export default function AutocompletePage() {
167167
))}
168168
</div>
169169
)}
170-
</p>
170+
</div>
171171
</div>
172172
</div>
173173
</CodeExample>

0 commit comments

Comments
 (0)