(size: "sm" | "md" | "lg" | "xl" | "2xl")
| 19 | * @returns A boolean indicating whether the viewport size applies. |
| 20 | */ |
| 21 | export const useBreakpoint = (size: "sm" | "md" | "lg" | "xl" | "2xl") => { |
| 22 | const [matches, setMatches] = useState(typeof window !== "undefined" ? window.matchMedia(`(min-width: ${screens[size]})`).matches : true); |
| 23 | |
| 24 | useEffect(() => { |
| 25 | const breakpoint = window.matchMedia(`(min-width: ${screens[size]})`); |
| 26 | |
| 27 | setMatches(breakpoint.matches); |
| 28 | |
| 29 | const handleChange = (value: MediaQueryListEvent) => setMatches(value.matches); |
| 30 | |
| 31 | breakpoint.addEventListener("change", handleChange); |
| 32 | return () => breakpoint.removeEventListener("change", handleChange); |
| 33 | }, [size]); |
| 34 | |
| 35 | return matches; |
| 36 | }; |
no outgoing calls
no test coverage detected