15 lines
636 B
TypeScript
15 lines
636 B
TypeScript
|
|
export type FormFactor = 'mobile' | 'desktop';
|
||
|
|
|
||
|
|
const MOBILE_TOKENS = ['Mobile', 'iPhone', 'iPad', 'Android'] as const;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Classify a User-Agent string as 'mobile' or 'desktop'.
|
||
|
|
* Defaults to 'desktop' when the UA is missing or unrecognized — the CSS
|
||
|
|
* media-query fallback in globals.css handles desktop browsers resized below
|
||
|
|
* the lg breakpoint, so a wrong-but-defaultish classification never breaks UX.
|
||
|
|
*/
|
||
|
|
export function classifyFormFactor(userAgent: string | null | undefined): FormFactor {
|
||
|
|
if (!userAgent) return 'desktop';
|
||
|
|
return MOBILE_TOKENS.some((token) => userAgent.includes(token)) ? 'mobile' : 'desktop';
|
||
|
|
}
|