UNPKG

@workday/canvas-kit-docs

Version:

Documentation components of Canvas Kit components

36 lines (35 loc) 1.58 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import React from 'react'; import { PrimaryButton } from '@workday/canvas-kit-react/button'; import { Flex } from '@workday/canvas-kit-react/layout'; import { createStyles } from '@workday/canvas-kit-styling'; import { system } from '@workday/canvas-tokens-web'; const blockStyles = createStyles({ padding: system.padding.xs, backgroundColor: system.color.surface.contrast.default, borderRadius: system.shape.md, justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', }); const codeCommandStyles = createStyles({ color: system.color.fg.info.default, marginInlineEnd: system.gap.sm, }); const codePackageStyles = createStyles({ color: system.color.fg.inverse, }); export const InstallBlock = ({ command, packageName }) => { const commandRef = React.useRef(null); const [copied, setCopied] = React.useState(false); React.useEffect(() => { setTimeout(() => setCopied(false), 600); }, [copied]); const handleCopy = () => { setCopied(true); if (commandRef.current) { navigator.clipboard.writeText(commandRef.current.innerText); } }; return (_jsxs(Flex, { cs: blockStyles, children: [_jsxs("pre", { ref: commandRef, children: [_jsx("span", { className: codeCommandStyles, children: command }), _jsx("span", { className: codePackageStyles, children: packageName })] }), _jsx(PrimaryButton, { variant: "inverse", onClick: handleCopy, size: "small", children: copied ? 'Copied' : 'Copy' })] })); };