index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import React from "react";
  2. import toast from "react-hot-toast";
  3. import { FiCopy } from "react-icons/fi";
  4. import { Button } from "src/components/Button";
  5. import { Modal } from "src/components/Modal";
  6. import styled from "styled-components";
  7. interface EdgeModalProps {
  8. selectedEdge: string;
  9. visible: boolean;
  10. closeModal: () => void;
  11. }
  12. const StyledTextarea = styled.textarea`
  13. resize: none;
  14. width: 100%;
  15. min-height: 200px;
  16. padding: 10px;
  17. background: ${({ theme }) => theme.BACKGROUND_TERTIARY};
  18. color: ${({ theme }) => theme.INTERACTIVE_NORMAL};
  19. outline: none;
  20. border-radius: 4px;
  21. line-height: 20px;
  22. border: none;
  23. `;
  24. export const EdgeModal = ({ selectedEdge, visible, closeModal }: EdgeModalProps) => {
  25. const handleClipboard = () => {
  26. toast.success("Content copied to clipboard!");
  27. navigator.clipboard.writeText(selectedEdge);
  28. closeModal();
  29. };
  30. return (
  31. <Modal visible={visible} setVisible={closeModal}>
  32. <Modal.Header>Edge Content</Modal.Header>
  33. <Modal.Content>
  34. <StyledTextarea defaultValue={selectedEdge} readOnly />
  35. </Modal.Content>
  36. <Modal.Controls setVisible={closeModal}>
  37. <Button status="SECONDARY" onClick={handleClipboard}>
  38. <FiCopy size={18} /> Clipboard
  39. </Button>
  40. </Modal.Controls>
  41. </Modal>
  42. );
  43. };