denwa-web-shared
viewport-hooks
core64 linesSource
Use the shared viewport hooks rather than react-use. Load when writing responsive behavior, using useMedia, useLaptopBigViewPort, useMobileViewPort.
denwa-web-shared — Use custom viewport hooks
Setup
tsx
import { useMobileViewPort } from 'denwa-web-shared/client';
const { isMobileMaxWidth, isMobileMinWidth } = useMobileViewPort();Core Patterns
Conditional rendering based on viewport
tsx
import { useMobileViewPort, useLaptopViewPort } from 'denwa-web-shared/client';
export const ResponsiveLayout = () => {
const { isMobileMaxWidth } = useMobileViewPort();
const { isLaptopMinWidth } = useLaptopViewPort();
if (isMobileMaxWidth) return <MobileMenu />;
if (isLaptopMinWidth) return <DesktopMenu />;
return <DefaultMenu />;
};Common Mistakes
HIGH Importing useMedia directly
Wrong:
tsx
import { useMedia } from 'react-use';
const isMobile = useMedia('(max-width: 450px)');Correct:
tsx
import { useMobileViewPort } from 'denwa-web-shared/client';
const { isMobileMaxWidth } = useMobileViewPort();Agents import useMedia from react-use and manually provide viewport breakpoints instead of using the custom hooks.
Source: maintainer interview