Files
cms-server/client/cms/src/hooks/use-mobile.ts
Noa Virellia 06f86cb8e3
All checks were successful
Client CMS Check Build (NixCN CMS) TeamCity build finished
Backend Check Build (NixCN CMS) TeamCity build finished
chore(client): format
Signed-off-by: Noa Virellia <noa@requiem.garden>
2026-02-01 15:31:29 +08:00

21 lines
660 B
TypeScript

import * as React from 'react';
const MOBILE_BREAKPOINT = 768;
export function useIsMobile() {
const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);
React.useEffect(() => {
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
const onChange = () => {
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
};
mql.addEventListener('change', onChange);
// eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
return () => mql.removeEventListener('change', onChange);
}, []);
return !!isMobile;
}