@@ -14,6 +14,7 @@ import linesToDiv from "./lines-to-div";
14
14
import atApplyInjection from "./syntax-highlighter/at-apply.json" ;
15
15
import atRulesInjection from "./syntax-highlighter/at-rules.json" ;
16
16
import themeFnInjection from "./syntax-highlighter/theme-fn.json" ;
17
+ import { CopyButton } from "./copy-button" ;
17
18
18
19
export function js ( strings : TemplateStringsArray , ...args : any [ ] ) {
19
20
return { lang : "js" , code : dedent ( strings , ...args ) } ;
@@ -50,7 +51,7 @@ export async function CodeExample({
50
51
} ) {
51
52
return (
52
53
< CodeExampleWrapper className = { className } >
53
- { filename ? < CodeExampleFilename filename = { filename } /> : null }
54
+ { filename ? < CodeExampleFilename filename = { filename } code = { example . code } /> : null }
54
55
< HighlightedCode example = { example } />
55
56
</ CodeExampleWrapper >
56
57
) ;
@@ -189,8 +190,13 @@ export function RawHighlightedCode({
189
190
return < div className = { className } dangerouslySetInnerHTML = { { __html : code } } /> ;
190
191
}
191
192
192
- function CodeExampleFilename ( { filename } : { filename : string } ) {
193
- return < div className = "px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50" > { filename } </ div > ;
193
+ function CodeExampleFilename ( { filename, code } : { filename : string ; code ?: string } ) {
194
+ return (
195
+ < div className = "flex justify-between px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50" >
196
+ { filename }
197
+ { code && < CopyButton code = { code } /> }
198
+ </ div >
199
+ ) ;
194
200
}
195
201
196
202
const highlighter = await createHighlighter ( {
0 commit comments