diff --git a/DeviceSystemID.tsx b/DeviceSystemID.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/app/components/CurrentTime.tsx b/app/components/CurrentTime.tsx index fb87e9e5a..8ad978263 100644 --- a/app/components/CurrentTime.tsx +++ b/app/components/CurrentTime.tsx @@ -9,7 +9,7 @@ const CurrentTime: React.FC = () => { const updateTime = () => { const now = new Date(); const formattedTime = new Intl.DateTimeFormat("en-US", { - hour: "2-digit", + hour12: true, dayPeriod: "short", @@ -27,6 +27,8 @@ const CurrentTime: React.FC = () => { const now = new Date(); const formattedDay = new Intl.DateTimeFormat("en-US", { weekday: 'short', + hour: "2-digit", + minute: '2-digit', }).format(now); setCurDay(formattedDay); }; @@ -36,9 +38,9 @@ const CurrentTime: React.FC = () => { }, []); return ( <> -
+
{curDay}
-
{currentTime}
+
{currentTime}
); diff --git a/app/components/DeviceAddress.tsx b/app/components/DeviceAddress.tsx new file mode 100644 index 000000000..d922d104b --- /dev/null +++ b/app/components/DeviceAddress.tsx @@ -0,0 +1,59 @@ +// components/DeviceAddress.tsx +'use client'; +import { useEffect, useState } from 'react'; + +type DeviceAddress = { + ip: string; + city: string; + region: string; + country: string; +}; + +const DeviceAddress: React.FC = () => { + const [address, setAddress] = useState(null); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchDeviceAddress = async () => { + try { + const response = await fetch('https://ipapi.co/json/'); + if (!response.ok) { + throw new Error('Failed to fetch device address'); + } + const data: DeviceAddress = await response.json(); + setAddress(data); + } catch (err) { + setError("An unknown error occurred."); + } + }; + + fetchDeviceAddress(); + }, []); + + return ( +
+
+ {error ? ( +
+

Error: {error}

+
+ ) : address ? ( +
+

Device Address

+

IP: {address.ip}

+

City: {address.city}

+

Region: {address.region}

+

Country: {address.country}

+ +
+ ) : ( +
+

Loading...

+
+ )} +
+
+ ); +}; + +export default DeviceAddress; diff --git a/app/components/StickyRelativeDemo.tsx b/app/components/StickyRelativeDemo.tsx index 932c264a9..1cebaa75e 100644 --- a/app/components/StickyRelativeDemo.tsx +++ b/app/components/StickyRelativeDemo.tsx @@ -11,7 +11,7 @@ const StickyRelativeDemo: NextPage = () => { Recent projects
-
+
@@ -48,7 +48,15 @@ const StickyRelativeDemo: NextPage = () => {
  • Visit Site
  • - + + Veecrew +
@@ -66,25 +74,25 @@ const StickyRelativeDemo: NextPage = () => { width={300} height={300} className="min-w-full min-h-full rounded-2xl " - /> + /> {"My + /> {"My + />
-
+
@@ -121,7 +129,25 @@ const StickyRelativeDemo: NextPage = () => {
  • Visit Site
  • - + + + + + + + +
@@ -139,21 +165,21 @@ const StickyRelativeDemo: NextPage = () => { width={300} height={300} className="min-w-full min-h-full rounded-2xl " - /> + /> {"My + /> {"My + />
diff --git a/app/components/TextFlipper.tsx b/app/components/TextFlipper.tsx index 7b48a2c05..e1e7eed97 100644 --- a/app/components/TextFlipper.tsx +++ b/app/components/TextFlipper.tsx @@ -15,7 +15,7 @@ const TextFlipper: React.FC = () => { }, []); return ( -
+
+
+
- - - - - {/* */} - nee. - + + +
+ + {/* */} + ne. + +
- - + +
diff --git a/app/components/testDemoTheme.tsx b/app/components/testDemoTheme.tsx new file mode 100644 index 000000000..9bd63e646 --- /dev/null +++ b/app/components/testDemoTheme.tsx @@ -0,0 +1,11 @@ +"use client"; + +import { motion } from "framer-motion"; + +export const TestDemoTheme: React.FC = () =>{ + return( +
+ +
+ ) +} \ No newline at end of file diff --git a/app/components/typeWriter.tsx b/app/components/typeWriter.tsx index fc2bb2422..6fa8a1ef9 100644 --- a/app/components/typeWriter.tsx +++ b/app/components/typeWriter.tsx @@ -24,7 +24,7 @@ export function TypewriterEffectSmoothDemo() { return (
-

+

The road to make unique from here

diff --git a/app/globals.css b/app/globals.css index 427428154..d4d492439 100644 --- a/app/globals.css +++ b/app/globals.css @@ -2,19 +2,20 @@ @tailwind components; @tailwind utilities; @import './add.css'; + :root { - --color-primary: #0B3948; + --color-primary: #ffffff; --color-secondary: #416165; - --color-white: #B3FFB3; + --color-third: #B3FFB3; --color-gray-light: #D1FFD7; --color-dark: #FFC800; + --color-dark-light: #101010; } - /* Dark mode variables */ @media (prefers-color-scheme: dark) { :root { - --color-primary: #ffffff; + --color-primary: #0a0a0a; --color-secondary: #3C6E71; --color-white: #ffffff; --color-gray-light: #D9D9D9; @@ -26,8 +27,10 @@ .flipper { display: inline-block; position: relative; - width: 200px; /* Adjust width as needed */ - height: 40px; /* Adjust height as needed */ + width: 200px; + /* Adjust width as needed */ + height: 40px; + /* Adjust height as needed */ } .step { @@ -54,6 +57,7 @@ transform: rotateX(10deg); opacity: 1; } + :root { --foreground-rgb: 0, 0, 0; --background-start-rgb: 214, 219, 220; @@ -70,16 +74,13 @@ body { color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, + background: linear-gradient(to bottom, transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); + rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb)); } @layer utilities { .text-balance { text-wrap: balance; } -} +} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index ec463cf09..dde3cd27d 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,10 +1,9 @@ import type { Metadata } from "next"; -import DarkModeToggle from "./components/DarkModeToggle"; import HomeSectionHeader from "./components/homeSectionHeader"; import AdminWeather from "./components/AdminWeather"; import IntroSection from "./components/introSection"; import ReviewSection from "./components/reviewSection"; - +import DeviceAddress from "./components/DeviceAddress"; export const metadata: Metadata = { title: "nee. - Portfolio Framer Template For Freelancers", @@ -15,25 +14,26 @@ export default function Home() { return (
- -
+ +
-
- -
+
-
- +
+ +
+ +
-
+
Vision to learn
-
+
- + {/* Other components or content */}
); -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index 29bf5bc6c..f2b7df9b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "neerajrekwar.github.io", "version": "0.1.0", "dependencies": { + "@fingerprintjs/fingerprintjs": "^4.4.2", "@nextui-org/navbar": "^2.0.30", "@nextui-org/react": "^2.3.6", "@nextui-org/system": "^2.1.2", @@ -124,6 +125,14 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fingerprintjs/fingerprintjs": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.4.2.tgz", + "integrity": "sha512-ZekjtT4qCXq0pbv6FJqBRdTXajLg+kgQ2Tmrh+aWue5sMWboE9iicpg8JYKI4xhZFwLT7yd1K8Zy+P79XSx/1Q==", + "dependencies": { + "tslib": "^2.4.1" + } + }, "node_modules/@floating-ui/core": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", diff --git a/package.json b/package.json index 8d11eef00..947c5b9e5 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "export": "next export" }, "dependencies": { + "@fingerprintjs/fingerprintjs": "^4.4.2", "@nextui-org/navbar": "^2.0.30", "@nextui-org/react": "^2.3.6", "@nextui-org/system": "^2.1.2", diff --git a/public/arr.svg b/public/arr.svg new file mode 100644 index 000000000..334ab5f41 --- /dev/null +++ b/public/arr.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file