{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "platform-detector", "files": [ { "path": "registry/lib/platform-detector.ts", "content": "type PlatformInfo = {\n browser: {\n chrome: boolean\n firefox: boolean\n safari: boolean\n edge: boolean\n name: \"chrome\" | \"firefox\" | \"safari\" | \"edge\" | \"unknown\"\n }\n os: {\n ios: boolean\n android: boolean\n windows: boolean\n macos: boolean\n name: \"android\" | \"windows\" | \"ios\" | \"macos\" | \"unknown\"\n }\n}\n\nconst getPlatform = (): PlatformInfo => {\n if (typeof window === \"undefined\") {\n return {\n browser: {\n chrome: false,\n firefox: false,\n safari: false,\n edge: false,\n name: \"unknown\",\n },\n os: {\n ios: false,\n android: false,\n windows: false,\n macos: false,\n name: \"unknown\",\n },\n }\n }\n\n const ua = window.navigator.userAgent.toLowerCase()\n\n const browser = {\n chrome: ua.includes(\"chrome\") && !ua.includes(\"edg\"),\n firefox: ua.includes(\"firefox\"),\n safari: ua.includes(\"safari\") && !ua.includes(\"chrome\"),\n edge: ua.includes(\"edg\"),\n get name() {\n if (this.chrome) return \"chrome\"\n if (this.firefox) return \"firefox\"\n if (this.safari) return \"safari\"\n if (this.edge) return \"edge\"\n return \"unknown\"\n },\n }\n\n const os = {\n ios: ua.includes(\"iphone\") || ua.includes(\"ipad\") || ua.includes(\"ipod\"),\n android: ua.includes(\"android\"),\n windows: ua.includes(\"windows\"),\n macos: ua.includes(\"mac\"),\n get name() {\n if (this.ios) return \"ios\"\n if (this.android) return \"android\"\n if (this.windows) return \"windows\"\n if (this.macos) return \"macos\"\n return \"unknown\"\n },\n }\n\n return { browser, os }\n}\n\nexport const platform = getPlatform()\n", "type": "registry:lib", "target": "lib/platform-detector.ts" } ], "type": "registry:lib" }