1- import { CheckIcon , CopyIcon } from './icon' ;
2- import cn from 'clsx'
3- import type { ComponentProps , FC } from 'react'
1+ import type { ComponentProps , FC } from 'react' ;
2+ import cn from 'clsx' ;
43import { useHover } from '@/lib/hooks/use-hover' ;
54import { useTimed } from '@/lib/hooks/use-timed' ;
5+ import { CheckIcon , CopyIcon } from './icon' ;
66
7- export const Code : FC <
8- ComponentProps < 'code' >
9- > = ( { children, className, ...props } ) => {
7+ export const Code : FC < ComponentProps < 'code' > > = ( { children, className, ...props } ) => {
108 const [ copied , startCopyTimer ] = useTimed ( 1500 ) ;
119 const [ ref , hovering ] = useHover ( ) ;
1210 return (
1311 < span
1412 ref = { ref }
15- className = "flex items-center gap-2 break-all rounded-md bg-black p-4 font-mono text-sm relative pr-14 border border-gray-600 "
13+ className = "relative flex items-center gap-2 break-all rounded-md border border-gray-600 bg-black p-4 pr-14 font-mono text-sm"
1614 >
1715 < code
18- className = { cn (
19- 'whitespace-pre-line' ,
20- 'cursor-text' ,
21- className ,
22- ) }
16+ className = { cn ( 'whitespace-pre-line' , 'cursor-text' , className ) }
2317 // always show code blocks in ltr
2418 dir = "ltr"
2519 { ...props }
@@ -28,8 +22,8 @@ export const Code: FC<
2822 </ code >
2923 < button
3024 data-hovering = { hovering || copied }
31- className = "cursor-pointer opacity-0 data-[hovering=true]:transition- opacity data-[hovering=true]:opacity-100 hover:text-orange-600 absolute right-3 top-2 p-2 border border-gray-600 rounded-md "
32- onClick = { async ( ev ) => {
25+ className = "absolute right-3 top-2 cursor-pointer rounded-md border border-gray-600 p-2 opacity-0 hover:text-orange-600 data-[hovering=true]:opacity-100 data-[hovering=true]:transition-opacity "
26+ onClick = { async ev => {
3327 const value = children ?. valueOf ( ) . toString ( ) ;
3428 if ( value ) {
3529 ev . preventDefault ( ) ;
@@ -42,5 +36,5 @@ export const Code: FC<
4236 { copied ? < CheckIcon size = { 16 } /> : < CopyIcon size = { 16 } /> }
4337 </ button >
4438 </ span >
45- )
46- }
39+ ) ;
40+ } ;
0 commit comments