{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "use-os",
  "title": "UseOS",
  "description": "Detects the user's operating system.",
  "files": [
    {
      "path": "registry/hooks/use-os.tsx",
      "content": "import { useMemo } from 'react';\n\nexport enum OS {\n  Undetermined = 'undetermined',\n  MacOS = 'macos',\n  IOS = 'ios',\n  Windows = 'windows',\n  Android = 'android',\n  Linux = 'linux',\n}\n\nconst macosPattern = /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i;\nconst iosPattern = /(iPhone)|(iPad)|(iPod)/i;\nconst windowsPattern = /(Win32)|(Win64)|(Windows)|(WinCE)|(Windows)/i;\nconst androidPattern = /Android/i;\nconst linuxPattern = /Linux/i;\n\nfunction detectOS(userAgent: string): OS {\n  if (\n    iosPattern.test(userAgent) ||\n    (macosPattern.test(userAgent) &&\n      typeof document !== 'undefined' &&\n      'ontouchend' in document)\n  ) {\n    return OS.IOS;\n  }\n  if (macosPattern.test(userAgent)) {\n    return OS.MacOS;\n  }\n  if (windowsPattern.test(userAgent)) {\n    return OS.Windows;\n  }\n  if (androidPattern.test(userAgent)) {\n    return OS.Android;\n  }\n  if (linuxPattern.test(userAgent)) {\n    return OS.Linux;\n  }\n  return OS.Undetermined;\n}\n\nexport function useOS(): OS {\n  return useMemo(() => {\n    if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n      return OS.Undetermined;\n    }\n    return detectOS(navigator.userAgent);\n  }, []);\n}\n",
      "type": "registry:hook",
      "target": "hooks/guarahooks/use-os.tsx"
    }
  ],
  "categories": [
    "utilities"
  ],
  "type": "registry:hook"
}