import { useSyncExternalStore } from 'react'; export function useMediaQuery(query: string): boolean { return useSyncExternalStore( (onChange) => { const list = window.matchMedia(query); list.addEventListener('change', onChange); return () => list.removeEventListener('change', onChange); }, () => window.matchMedia(query).matches, ); } /** Phones get bottom sheets and big targets; larger screens get popovers. */ export const useIsPhone = () => !useMediaQuery('(min-width: 640px)');