diff --git a/package-lock.json b/package-lock.json index 5f4a9da..369a143 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "autoprefixer": "^10.4.21", "framer-motion": "^11.15.0", "langchain": "^0.3.7", - "next": "15.4.10", + "next": "^15.5.15", "openai": "^4.77.3", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -695,9 +695,9 @@ } }, "node_modules/@langchain/core": { - "version": "0.3.79", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.79.tgz", - "integrity": "sha512-ZLAs5YMM5N2UXN3kExMglltJrKKoW7hs3KMZFlXUnD7a5DFKBYxPFMeXA4rT+uvTxuJRZPCYX0JKI5BhyAWx4A==", + "version": "0.3.80", + "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.80.tgz", + "integrity": "sha512-vcJDV2vk1AlCwSh3aBm/urQ1ZrlXFFBocv11bz/NBUfLWD5/UDNMzwPdaAd2dKvNmTWa9FM2lirLU3+JCf4cRA==", "license": "MIT", "dependencies": { "@cfworker/json-schema": "^4.0.2", @@ -764,9 +764,9 @@ } }, "node_modules/@next/env": { - "version": "15.4.10", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.10.tgz", - "integrity": "sha512-knhmoJ0Vv7VRf6pZEPSnciUG1S4bIhWx+qTYBW/AjxEtlzsiNORPk8sFDCEvqLfmKuey56UB9FL1UdHEV3uBrg==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.15.tgz", + "integrity": "sha512-vcmyu5/MyFzN7CdqRHO3uHO44p/QPCZkuTUXroeUmhNP8bL5PHFEhik22JUazt+CDDoD6EpBYRCaS2pISL+/hg==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -780,9 +780,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.8.tgz", - "integrity": "sha512-Pf6zXp7yyQEn7sqMxur6+kYcywx5up1J849psyET7/8pG2gQTVMjU3NzgIt8SeEP5to3If/SaWmaA6H6ysBr1A==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.15.tgz", + "integrity": "sha512-6PvFO2Tzt10GFK2Ro9tAVEtacMqRmTarYMFKAnV2vYMdwWc73xzmDQyAV7SwEdMhzmiRoo7+m88DuiXlJlGeaw==", "cpu": [ "arm64" ], @@ -796,9 +796,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.8.tgz", - "integrity": "sha512-xla6AOfz68a6kq3gRQccWEvFC/VRGJmA/QuSLENSO7CZX5WIEkSz7r1FdXUjtGCQ1c2M+ndUAH7opdfLK1PQbw==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.15.tgz", + "integrity": "sha512-G+YNV+z6FDZTp/+IdGyIMFqalBTaQSnvAA+X/hrt+eaTRFSznRMz9K7rTmzvM6tDmKegNtyzgufZW0HwVzEqaQ==", "cpu": [ "x64" ], @@ -812,12 +812,15 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.8.tgz", - "integrity": "sha512-y3fmp+1Px/SJD+5ntve5QLZnGLycsxsVPkTzAc3zUiXYSOlTPqT8ynfmt6tt4fSo1tAhDPmryXpYKEAcoAPDJw==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.15.tgz", + "integrity": "sha512-eVkrMcVIBqGfXB+QUC7jjZ94Z6uX/dNStbQFabewAnk13Uy18Igd1YZ/GtPRzdhtm7QwC0e6o7zOQecul4iC1w==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -828,12 +831,15 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.8.tgz", - "integrity": "sha512-DX/L8VHzrr1CfwaVjBQr3GWCqNNFgyWJbeQ10Lx/phzbQo3JNAxUok1DZ8JHRGcL6PgMRgj6HylnLNndxn4Z6A==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.15.tgz", + "integrity": "sha512-RwSHKMQ7InLy5GfkY2/n5PcFycKA08qI1VST78n09nN36nUPqCvGSMiLXlfUmzmpQpF6XeBYP2KRWHi0UW3uNg==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -844,12 +850,15 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.8.tgz", - "integrity": "sha512-9fLAAXKAL3xEIFdKdzG5rUSvSiZTLLTCc6JKq1z04DR4zY7DbAPcRvNm3K1inVhTiQCs19ZRAgUerHiVKMZZIA==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.15.tgz", + "integrity": "sha512-nplqvY86LakS+eeiuWsNWvfmK8pFcOEW7ZtVRt4QH70lL+0x6LG/m1OpJ/tvrbwjmR8HH9/fH2jzW1GlL03TIg==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -860,12 +869,15 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.8.tgz", - "integrity": "sha512-s45V7nfb5g7dbS7JK6XZDcapicVrMMvX2uYgOHP16QuKH/JA285oy6HcxlKqwUNaFY/UC6EvQ8QZUOo19cBKSA==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.15.tgz", + "integrity": "sha512-eAgl9NKQ84/sww0v81DQINl/vL2IBxD7sMybd0cWRw6wqgouVI53brVRBrggqBRP/NWeIAE1dm5cbKYoiMlqDQ==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -876,9 +888,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.8.tgz", - "integrity": "sha512-KjgeQyOAq7t/HzAJcWPGA8X+4WY03uSCZ2Ekk98S9OgCFsb6lfBE3dbUzUuEQAN2THbwYgFfxX2yFTCMm8Kehw==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.15.tgz", + "integrity": "sha512-GJVZC86lzSquh0MtvZT+L7G8+jMnJcldloOjA8Kf3wXvBrvb6OGe2MzPuALxFshSm/IpwUtD2mIoof39ymf52A==", "cpu": [ "arm64" ], @@ -892,9 +904,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.8.tgz", - "integrity": "sha512-Exsmf/+42fWVnLMaZHzshukTBxZrSwuuLKFvqhGHJ+mC1AokqieLY/XzAl3jc/CqhXLqLY3RRjkKJ9YnLPcRWg==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.15.tgz", + "integrity": "sha512-nFucjVdwlFqxh/JG3hWSJ4p8+YJV7Ii8aPDuBQULB6DzUF4UNZETXLfEUk+oI2zEznWWULPt7MeuTE6xtK1HSA==", "cpu": [ "x64" ], @@ -1364,9 +1376,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -1374,13 +1386,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1768,9 +1780,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -2155,9 +2167,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3503,16 +3515,16 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -4895,9 +4907,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5001,12 +5013,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.4.10", - "resolved": "https://registry.npmjs.org/next/-/next-15.4.10.tgz", - "integrity": "sha512-itVlc79QjpKMFMRhP+kbGKaSG/gZM6RCvwhEbwmCNF06CdDiNaoHcbeg0PqkEa2GOcn8KJ0nnc7+yL7EjoYLHQ==", + "version": "15.5.15", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.15.tgz", + "integrity": "sha512-VSqCrJwtLVGwAVE0Sb/yikrQfkwkZW9p+lL/J4+xe+G3ZA+QnWPqgcfH1tDUEuk9y+pthzzVFp4L/U8JerMfMQ==", "license": "MIT", "dependencies": { - "@next/env": "15.4.10", + "@next/env": "15.5.15", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", @@ -5019,14 +5031,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.4.8", - "@next/swc-darwin-x64": "15.4.8", - "@next/swc-linux-arm64-gnu": "15.4.8", - "@next/swc-linux-arm64-musl": "15.4.8", - "@next/swc-linux-x64-gnu": "15.4.8", - "@next/swc-linux-x64-musl": "15.4.8", - "@next/swc-win32-arm64-msvc": "15.4.8", - "@next/swc-win32-x64-msvc": "15.4.8", + "@next/swc-darwin-arm64": "15.5.15", + "@next/swc-darwin-x64": "15.5.15", + "@next/swc-linux-arm64-gnu": "15.5.15", + "@next/swc-linux-arm64-musl": "15.5.15", + "@next/swc-linux-x64-gnu": "15.5.15", + "@next/swc-linux-x64-musl": "15.5.15", + "@next/swc-win32-arm64-msvc": "15.5.15", + "@next/swc-win32-x64-msvc": "15.5.15", "sharp": "^0.34.3" }, "peerDependencies": { @@ -5505,9 +5517,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -6696,9 +6708,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7169,9 +7181,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 15c9272..91de611 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "autoprefixer": "^10.4.21", "framer-motion": "^11.15.0", "langchain": "^0.3.7", - "next": "15.4.10", + "next": "^15.5.15", "openai": "^4.77.3", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/src/app/globals.css b/src/app/globals.css index 0d587b7..a175136 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -8,60 +8,94 @@ box-sizing: border-box; } -html { +html, body { scroll-behavior: smooth; + width: 100%; + overflow-x: hidden; + margin: 0 !important; + padding: 0 !important; } body { - font-family: 'JetBrains Mono', monospace; - cursor: crosshair; + font-family: 'Comic Sans MS', 'Comic Sans', 'Chalkboard SE', cursive !important; + background-color: #ffffff; + background-image: + repeating-linear-gradient(45deg, #fffde7 0px, #fffde7 2px, #fff 2px, #fff 12px); + color: #000000 !important; + cursor: default !important; } -.terminal-border { - border-color: rgba(128, 128, 128, 0.2); +html.dark body { + background-color: #000000 !important; + background-image: none !important; + color: #00ff00 !important; } -/* Scanline effect */ -.scanline { +/* Marquee */ +.marquee-wrapper { width: 100%; - height: 2px; - z-index: 100; - background: rgba(74, 222, 128, 0.02); - opacity: 0.1; - position: fixed; - pointer-events: none; - animation: scanline 8s linear infinite; + overflow: hidden; + background: linear-gradient(90deg, #000080, #0000cc, #000080); + color: #ffff00; + padding: 5px 0; + font-family: 'Comic Sans MS', cursive; + font-size: 13px; + font-weight: bold; + white-space: nowrap; + border-bottom: 3px solid #ff0000; } -@keyframes scanline { - 0% { top: 0; } - 100% { top: 100%; } +.marquee-content { + display: inline-block; + padding-left: 100%; + animation: marquee-scroll 30s linear infinite; } -::selection { - background: #4ade80; - color: #000; +@keyframes marquee-scroll { + from { transform: translateX(0); } + to { transform: translateX(-100%); } +} + +/* Blink */ +.blink { + animation: blink-anim 0.7s step-end infinite; +} + +@keyframes blink-anim { + 0%, 100% { opacity: 1; } + 50% { opacity: 0; } } -/* Custom Animations */ -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } +/* Rainbow text */ +.rainbow-text { + animation: rainbow-colors 2.5s linear infinite; } -@keyframes blink { - 50% { - opacity: 0; - } +@keyframes rainbow-colors { + 0% { color: #ff0000; } + 16% { color: #ff8800; } + 33% { color: #cccc00; } + 50% { color: #00aa00; } + 66% { color: #0044ff; } + 83% { color: #aa00ff; } + 100% { color: #ff0000; } } -/* Animation utility classes */ -.animate-fade-in-up { - animation: fadeInUp 0.8s ease-out; +/* Global link styles */ +a { + color: #0000cc; + text-decoration: underline; +} +a:visited { + color: #800080; +} +a:hover { + color: #ff0000; + text-decoration: underline; +} + +/* Selection */ +::selection { + background: #000080; + color: #ffff00; } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f7ecc58..d4025c6 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -23,9 +23,9 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - + {children} {/* */} diff --git a/src/components/BlogSection.tsx b/src/components/BlogSection.tsx index cb3ed9e..2713395 100644 --- a/src/components/BlogSection.tsx +++ b/src/components/BlogSection.tsx @@ -1,7 +1,6 @@ 'use client'; import React, { useEffect, useState } from 'react'; -import { FaArrowRight } from 'react-icons/fa'; import Link from 'next/link'; import { BlogPost } from '@/lib/sanity'; @@ -29,70 +28,92 @@ const BlogSection = () => { year: 'numeric', month: 'short', day: 'numeric' - }).toLowerCase(); + }); }; - if (loading) { - return ( -
-

//blog

-
- {[1, 2, 3].map((i) => ( -
-
-
-
- ))} -
-
- ); - } - return ( -
-

//blog

-

- sharing insights from talks, projects, and learnings in AI/ML. -

+ + + + + + +
+
+ ๐Ÿ“ MY SUPER COOL BLOG POSTS!!! ๐Ÿ“ +
- {posts.length > 0 ? ( -
- {posts.map((post) => ( - -
-
- {formatDate(post.publishedAt)} -

- {post.title} -

-

- {post.excerpt} -

-
- + {loading ? ( +
+ โณ Loading posts... please wait!!!
- - ))} - -
- - view all posts โ†’ - -
-
- ) : ( -

- no posts found. check back soon! -

- )} - + ) : posts.length > 0 ? ( + + + {posts.map((post, idx) => ( + + + + ))} + + + + +
+
+ ๐Ÿ“… {formatDate(post.publishedAt)} +
+ + {post.title} + +
+ {post.excerpt} +
+
+ + READ MORE ยปยปยป + +
+
+ + ๐Ÿ“– VIEW ALL POSTS!!! + +
+ ) : ( +
+ ๐Ÿ˜ข No posts found yet... check back soon!!! +
+ )} +
); }; diff --git a/src/components/ContactSection.tsx b/src/components/ContactSection.tsx index ec1ebd2..8834738 100644 --- a/src/components/ContactSection.tsx +++ b/src/components/ContactSection.tsx @@ -1,53 +1,99 @@ 'use client'; import React from 'react'; -import { FaEnvelope, FaGithub, FaLinkedin } from 'react-icons/fa'; const ContactSection = () => { return ( -
-

//contact

-

- have a project in mind? i'd love to hear about it. -

+ + + + + + +
+
+ ๐Ÿ“ฌ CONTACT ME!!! DON'T BE SHY!!! ๐Ÿ“ฌ +
-
- - - cyrus2952@gmail.com - +

+ Have a project in mind?? I'd LOVE to hear about it!!! + Click the buttons below or yell at me on the internet!!! ๐ŸŽ‰ +

- - - github.com/mattekudacy - + + + + + + + + +
+ + ๐Ÿ“ง EMAIL ME!!! + + + + ๐Ÿ™ MY GITHUB!!! + + + + ๐Ÿ‘” LINKEDIN!!! + +
- - - linkedin.com/in/cyrusmante - -
- -
-
- - status: available for work -
-
- +
+ + โœ… STATUS: AVAILABLE FOR WORK!!! ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰ + +
+
); }; diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 571ef5e..e30902f 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -4,16 +4,48 @@ import React from 'react'; const Footer = () => { return ( - + + + {/* Rainbow bar */} + + + + + + + {/* Bottom rainbow bar */} + + + + +
+
+
+ + + + + + +
+
ยฉ 2026 CYRUS MANTE โ€” BUILT WITH โค๏ธ AND WAY TOO MUCH COFFEE โ˜•
+ +
+ This site best viewed in Netscape Navigator 4.0 or Internet Explorer 5.5+ +
+
+ + ๐Ÿšง PAGE LAST UPDATED: WHENEVER I FELT LIKE IT ๐Ÿšง + +
+
+
+
+
); }; diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index 43289f3..132c76d 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -1,6 +1,6 @@ 'use client'; -import React, { useEffect, useState, useRef } from 'react'; +import React, { useEffect, useState } from 'react'; import Footer from './Footer'; interface HeroSectionProps { @@ -8,10 +8,9 @@ interface HeroSectionProps { } const HeroSection = ({ children }: HeroSectionProps) => { - const [time, setTime] = useState(''); - const [isDark, setIsDark] = useState(true); - const nameRef = useRef(null); - const [nameVisible, setNameVisible] = useState(false); + const [time, setTime] = useState('--:--:-- --'); + const [isDark, setIsDark] = useState(false); + const [visitorCount] = useState(() => Math.floor(Math.random() * 90000) + 10000); useEffect(() => { const updateTime = () => { @@ -28,10 +27,6 @@ const HeroSection = ({ children }: HeroSectionProps) => { updateTime(); const interval = setInterval(updateTime, 1000); - - // Trigger name animation after mount - setTimeout(() => setNameVisible(true), 300); - return () => clearInterval(interval); }, []); @@ -42,162 +37,333 @@ const HeroSection = ({ children }: HeroSectionProps) => { return ( <> - {/* Scanline effect */} -
- - {/* Theme toggle button */} - - -
- {/* Header */} -
-
-

//portfolio

- mattekudacy.is-a.dev -
-
-

//contact

- cyrus2952@gmail.com -
-
-

//github

- github.com/mattekudacy -
-
-

//location

-

- Philippines - {time} -

-
-
- - {/* Main content */} -
- {/* Hero - Profile + Name */} -
-
-
- Cyrus Mante -
-
-

- <Cyrus Mante> -

-

- //ai engineer & data scientist -

-
-
- - {/* Sections container */} -
- {/* About */} -
-

//about

-
-

- hi, i'm Cyrus, my friends call me cy. i enjoy building - dynamic, creative products from start to finish, focused on - developing intuitive experiences that constantly grow and improve - based on your satisfaction. -

-
-
- - {/* Work Experience */} -
-

//work experience

- - {/* Job 1 */} -
-
- oct 2025 - present -
-
-
- Cambridge University Press - //ai software developer -
-
    -
  • - -

    collaborate with design teams to implement various complex user interfaces to prioritize features for the product releases.

    -
  • -
  • - -

    migrated endpoints architecture from monolith to microservices for efficient scaling.

    -
  • -
-
-
- - {/* Job 2 */} -
-
- sept 2024 - sept 2025 -
-
-
- Accenture - //ai/ml computational science analyst -
-
    -
  • - -

    developed and deployed machine learning models for predictive analytics and natural language processing.

    -
  • -
  • - -

    built data pipelines and automated workflows for model training and inference.

    -
  • -
-
-
-
- - {/* Technologies */} -
-

//technologies

-
-
-

AI/ML

-

Python, TensorFlow, PyTorch, Scikit-learn

-
-
-

Frontend

-

React, Next.js, TypeScript, TailwindCSS

-
-
-

Backend

-

Node.js, Django, FastAPI, PostgreSQL

-
-
-

Cloud

-

AWS, Docker, GCP, Azure

-
-
-
- - {/* Child sections (Projects, Blog, Contact) */} - {children} -
-
- -