Spoiler.js 575 B

123456789101112131415161718192021
  1. import { useState } from "react";
  2. import { Loader } from "./Loader";
  3. export const Spoiler = ({
  4. open = false,
  5. children = <Loader />,
  6. header = "Spoiler",
  7. }) => {
  8. const [visible, setVisible] = useState(open);
  9. return (
  10. <div className="Spoiler">
  11. <div className="header" onClick={(e) => setVisible(!visible)}>
  12. <div>
  13. <span className="spoilerText">{header}</span>
  14. <span className="spoilerArrow">{visible ? "▲" : "▼"}</span>
  15. </div>
  16. </div>
  17. <div className="content">{visible && children}</div>
  18. </div>
  19. );
  20. };