diff --git a/src/components/DevAreaTools/IPLookup.jsx b/src/components/DevAreaTools/IPLookup.jsx
new file mode 100644
index 0000000..86efa84
--- /dev/null
+++ b/src/components/DevAreaTools/IPLookup.jsx
@@ -0,0 +1,80 @@
+import { useState } from 'react';
+
+export default function IPLookup() {
+ const [ipAddress, setIpAddress] = useState('');
+ const [result, setResult] = useState(null);
+ const [loading, setLoading] = useState(false);
+
+ const lookupIP = async (ip) => {
+ setLoading(true);
+ try {
+ // Using ipapi.co - free, no API key
+ const url = ip
+ ? `https://ipapi.co/${ip}/json/`
+ : 'https://ipapi.co/json/';
+
+ const response = await fetch(url);
+ const data = await response.json();
+
+ setResult(data);
+ } catch (error) {
+ console.error('Error:', error);
+ setResult({ error: 'Failed to lookup IP' });
+ }
+ setLoading(false);
+ };
+
+ const getMyIP = () => {
+ setIpAddress('');
+ lookupIP('');
+ };
+
+ return (
+
+
IP Address Lookup
+
+
+ setIpAddress(e.target.value)}
+ className="flex-1 px-4 py-2 border rounded"
+ />
+
+
+
+
+ {loading &&
Loading...
}
+
+ {result && !result.error && (
+
+
IP: {result.ip}
+
City: {result.city}
+
Region: {result.region}
+
Country: {result.country_name}
+
Timezone: {result.timezone}
+
ISP: {result.org}
+
Latitude: {result.latitude}
+
Longitude: {result.longitude}
+
+ )}
+
+ {result?.error && (
+
{result.error}
+ )}
+
+ );
+}
\ No newline at end of file
diff --git a/src/pages/DevArea/DevTools.jsx b/src/pages/DevArea/DevTools.jsx
index c4c5c55..fb2c106 100644
--- a/src/pages/DevArea/DevTools.jsx
+++ b/src/pages/DevArea/DevTools.jsx
@@ -8,6 +8,7 @@ import XmlFormatter from "../../components/DevAreaTools/XmlFormatter";
import Base64Tool from "../../components/DevAreaTools/Base64Tool";
import YAMLFormatter from "../../components/DevAreaTools/YAMLFormatter";
import PasswordGenerator from "../../components/DevAreaTools/PasswordGenerator";
+import IPLookup from "../../components/DevAreaTools/IPLookup";
const DevTools = () => {
const { tool } = useParams();
@@ -21,6 +22,7 @@ const DevTools = () => {
"yaml-formatter": ,
"base64": ,
"password-generator": ,
+ "ip-lookup": ,
}
diff --git a/src/pages/DevArea/index.jsx b/src/pages/DevArea/index.jsx
index 024aca2..dae4a00 100644
--- a/src/pages/DevArea/index.jsx
+++ b/src/pages/DevArea/index.jsx
@@ -165,7 +165,7 @@ const DevArea = () => {
{
name: "IP Address Lookup",
link: "/devarea/ip-lookup",
- isAvailable: false
+ isAvailable: true
},
// Security
{