MCPcopy Index your code
hub / github.com/OpenPipe/OpenPipe / CopiableCode

Function CopiableCode

app/src/components/CopiableCode.tsx:6–59  ·  view source on GitHub ↗
({
  code,
  isDisabled,
  ...rest
}: { code: string; isDisabled?: boolean } & StackProps)

Source from the content-addressed store, hash-verified

4import { useHandledAsyncCallback } from "~/utils/hooks";
5
6const CopiableCode = ({
7 code,
8 isDisabled,
9 ...rest
10}: { code: string; isDisabled?: boolean } & StackProps) => {
11 const [copied, setCopied] = useState(false);
12
13 const [copyToClipboard] = useHandledAsyncCallback(async () => {
14 await navigator.clipboard.writeText(code);
15 setCopied(true);
16 }, [code]);
17
18 let tooltipLabel = copied ? "Copied!" : "Copy to clipboard";
19 if (isDisabled) {
20 tooltipLabel = "Copying Disabled";
21 }
22
23 return (
24 <HStack
25 backgroundColor="blackAlpha.800"
26 color="white"
27 borderRadius={4}
28 padding={3}
29 w="full"
30 justifyContent="space-between"
31 alignItems="flex-start"
32 {...rest}
33 >
34 <Text
35 fontFamily="inconsolata"
36 fontWeight="bold"
37 letterSpacing={0.5}
38 overflowX="auto"
39 whiteSpace="pre-wrap"
40 >
41 {code}
42 {/* Necessary for trailing newline to actually be displayed */}
43 {code.endsWith("\n") ? "\n" : ""}
44 </Text>
45 <Tooltip closeOnClick={false} label={tooltipLabel}>
46 <IconButton
47 aria-label="Copy"
48 icon={<Icon as={MdContentCopy} boxSize={5} />}
49 size="xs"
50 colorScheme="white"
51 variant="ghost"
52 onClick={copyToClipboard}
53 onMouseLeave={() => setCopied(false)}
54 isDisabled={isDisabled}
55 />
56 </Tooltip>
57 </HStack>
58 );
59};
60
61export default CopiableCode;

Callers

nothing calls this directly

Calls 1

useHandledAsyncCallbackFunction · 0.90

Tested by

no test coverage detected