hooks.ts 679 B

12345678910111213141516171819202122232425262728293031
  1. import { useState } from "react";
  2. const initialMessage = { color: "red", text: "" };
  3. export const useMessage = (timeout?: number) => {
  4. const [message, set] = useState(initialMessage);
  5. const setMessage = (text = "", color = "red") => {
  6. set({ text, color });
  7. if (timeout) {
  8. setTimeout(() => set(initialMessage), timeout);
  9. }
  10. };
  11. return [message, setMessage] as const;
  12. };
  13. export const useCopy = (timeout = 1500) => {
  14. const [copied, set] = useState(false);
  15. const setCopied = (isCopied = true) => {
  16. set(isCopied);
  17. if (isCopied && timeout) {
  18. setTimeout(() => set(false), timeout);
  19. }
  20. };
  21. return [copied, setCopied] as const;
  22. };