forked from tuvn86/webapp-conversation
feat: init
This commit is contained in:
parent
8acd8f6fbd
commit
97d3a6277d
77 changed files with 5299 additions and 0 deletions
27
hooks/use-breakpoints.ts
Normal file
27
hooks/use-breakpoints.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
'use client'
|
||||
import React from 'react'
|
||||
|
||||
export enum MediaType {
|
||||
mobile = 'mobile',
|
||||
tablet = 'tablet',
|
||||
pc = 'pc',
|
||||
}
|
||||
|
||||
const useBreakpoints = () => {
|
||||
const [width, setWidth] = React.useState(globalThis.innerWidth);
|
||||
const media = (() => {
|
||||
if (width <= 640) return MediaType.mobile;
|
||||
if (width <= 768) return MediaType.tablet;
|
||||
return MediaType.pc;
|
||||
})();
|
||||
|
||||
React.useEffect(() => {
|
||||
const handleWindowResize = () => setWidth(window.innerWidth);
|
||||
window.addEventListener("resize", handleWindowResize);
|
||||
return () => window.removeEventListener("resize", handleWindowResize);
|
||||
}, []);
|
||||
|
||||
return media;
|
||||
}
|
||||
|
||||
export default useBreakpoints
|
||||
Loading…
Add table
Add a link
Reference in a new issue