Skip to content

Commit 056d867

Browse files
committed
emotion: CopyButton
1 parent 3934f0e commit 056d867

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed

site/src/components/CopyButton/CopyButton.tsx

+31-30
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import IconButton from "@mui/material/Button";
2-
import { makeStyles } from "@mui/styles";
32
import Tooltip from "@mui/material/Tooltip";
43
import Check from "@mui/icons-material/Check";
54
import { useClipboard } from "hooks/useClipboard";
6-
import { combineClasses } from "utils/combineClasses";
5+
import { css } from "@emotion/react";
76
import { FileCopyIcon } from "../Icons/FileCopyIcon";
87

98
interface CopyButtonProps {
@@ -29,51 +28,53 @@ export const CopyButton: React.FC<React.PropsWithChildren<CopyButtonProps>> = ({
2928
buttonClassName = "",
3029
tooltipTitle = Language.tooltipTitle,
3130
}) => {
32-
const styles = useStyles();
3331
const { isCopied, copy: copyToClipboard } = useClipboard(text);
3432

33+
const fileCopyIconStyles = css`
34+
width: 20px;
35+
height: 20px;
36+
`;
37+
3538
return (
3639
<Tooltip title={tooltipTitle} placement="top">
3740
<div
38-
className={combineClasses([styles.copyButtonWrapper, wrapperClassName])}
41+
className={wrapperClassName}
42+
css={{
43+
display: "flex",
44+
}}
3945
>
4046
<IconButton
41-
className={combineClasses([styles.copyButton, buttonClassName])}
47+
className={buttonClassName}
48+
css={(theme) => css`
49+
border-radius: ${theme.shape.borderRadius}px;
50+
padding: ${theme.spacing(0.85)};
51+
min-width: 32px;
52+
53+
&:hover {
54+
background: ${theme.palette.background.paper};
55+
}
56+
`}
4257
onClick={copyToClipboard}
4358
size="small"
4459
aria-label={Language.ariaLabel}
4560
variant="text"
4661
>
4762
{isCopied ? (
48-
<Check className={styles.fileCopyIcon} />
63+
<Check css={fileCopyIconStyles} />
4964
) : (
50-
<FileCopyIcon className={styles.fileCopyIcon} />
65+
<FileCopyIcon css={fileCopyIconStyles} />
66+
)}
67+
{ctaCopy && (
68+
<div
69+
css={(theme) => ({
70+
marginLeft: theme.spacing(1),
71+
})}
72+
>
73+
{ctaCopy}
74+
</div>
5175
)}
52-
{ctaCopy && <div className={styles.buttonCopy}>{ctaCopy}</div>}
5376
</IconButton>
5477
</div>
5578
</Tooltip>
5679
);
5780
};
58-
59-
const useStyles = makeStyles((theme) => ({
60-
copyButtonWrapper: {
61-
display: "flex",
62-
},
63-
copyButton: {
64-
borderRadius: theme.shape.borderRadius,
65-
padding: theme.spacing(0.85),
66-
minWidth: 32,
67-
68-
"&:hover": {
69-
background: theme.palette.background.paper,
70-
},
71-
},
72-
fileCopyIcon: {
73-
width: 20,
74-
height: 20,
75-
},
76-
buttonCopy: {
77-
marginLeft: theme.spacing(1),
78-
},
79-
}));

0 commit comments

Comments
 (0)