diff --git a/src/components/CodeWithCopyButton.tsx b/src/components/CodeWithCopyButton.tsx index 568facd6..c0bd45e2 100644 --- a/src/components/CodeWithCopyButton.tsx +++ b/src/components/CodeWithCopyButton.tsx @@ -1,17 +1,18 @@ 'use client'; import { ContentCopy } from '@mui/icons-material'; -import { Button, styled, Tooltip, useTheme } from '@mui/material'; +import ViewHeadlineIcon from '@mui/icons-material/ViewHeadline'; +import WrapTextIcon from '@mui/icons-material/WrapText'; +import { Box, IconButton, styled, Tooltip } from '@mui/material'; import { message } from 'mui-message'; -import { JSX, useRef } from 'react'; - +import { JSX, useRef, useState } from 'react'; const StyledCode = styled('code')(() => { return { - '.copy-to-clipboard': { + '.code-tools': { display: 'none', }, - '&:hover .copy-to-clipboard': { - display: 'flex', + '&:hover .code-tools': { + display: 'inline-flex', }, }; }); @@ -19,8 +20,8 @@ const StyledCode = styled('code')(() => { export default function CodeWithCopyButton( props: JSX.IntrinsicElements['code'], ) { - const theme = useTheme(); const ref = useRef(null); + const [breakWord, setBreakWord] = useState(false); const onCopy = async () => { const text = (ref.current as unknown as HTMLElement)?.innerText || ''; @@ -38,30 +39,67 @@ export default function CodeWithCopyButton( } return ( - - - - + + + + setBreakWord(!breakWord)} + > + {breakWord ? ( + + ) : ( + + )} + + + + + + + + {props.children} );