({ code })
| 14 | } |
| 15 | |
| 16 | const CodeHighlight: FC<CodeHighlightProps> = ({ code }) => { |
| 17 | const [codeType, setCodeType] = useState(0) |
| 18 | const { copy, copyToClipboard } = useCopy() |
| 19 | return ( |
| 20 | <div className="my-5 w-full overflow-hidden rounded-xl border border-metal-900 bg-[#0D1015] dark:bg-[#0D1015]/90"> |
| 21 | <div className="flex justify-between"> |
| 22 | <div className="flex text-white"> |
| 23 | {Object.keys(code).map((key, index) => ( |
| 24 | <button |
| 25 | key={key} |
| 26 | onClick={() => setCodeType(index)} |
| 27 | className={cn( |
| 28 | 'border-b border-r border-metal-800 px-6 py-2.5 text-body-4 font-normal', |
| 29 | codeType === index ? 'bg-metal-900/10' : 'bg-metal-900', |
| 30 | )}> |
| 31 | <span>{key}</span> |
| 32 | </button> |
| 33 | ))} |
| 34 | </div> |
| 35 | <div> |
| 36 | <button |
| 37 | onClick={() => { |
| 38 | copyToClipboard(Object.values(code)[codeType]) |
| 39 | toast.success('Code Copied!', { |
| 40 | classNames: { |
| 41 | toast: |
| 42 | 'dark:!bg-metal-900/30 dark:!text-white dark:!border-metal-800 !bg-white !text-metal-900 !border-metal-50', |
| 43 | }, |
| 44 | }) |
| 45 | }} |
| 46 | className="mx-6 my-2.5"> |
| 47 | {copy ? <Check size={20} weight="light" color="#fff" /> : <Copy size={20} weight="light" color="#fff" />} |
| 48 | </button> |
| 49 | </div> |
| 50 | </div> |
| 51 | <div> |
| 52 | <SyntaxHighlighter |
| 53 | language="javascript" |
| 54 | style={coldarkDark} |
| 55 | customStyle={{ |
| 56 | maxHeight: '420px', |
| 57 | borderRadius: '0px', |
| 58 | padding: '32px', |
| 59 | marginTop: '0px', |
| 60 | marginBottom: '0px', |
| 61 | fontSize: '14px', |
| 62 | lineHeight: '22px', |
| 63 | letterSpacing: '-0.4px', |
| 64 | }}> |
| 65 | {Object.values(code)[codeType].trim()} |
| 66 | </SyntaxHighlighter> |
| 67 | </div> |
| 68 | </div> |
| 69 | ) |
| 70 | } |
| 71 | |
| 72 | export default CodeHighlight |
nothing calls this directly
no test coverage detected