From 890faddf4be7d9b8cd539348658e5aa0a9210763 Mon Sep 17 00:00:00 2001 From: Caleb Date: Tue, 23 Jun 2026 23:54:26 +0300 Subject: [PATCH 1/4] fix: replace bugged discord icon (#5) --- src/app/page.tsx | 4 +- src/components/JoinCTA.tsx | 138 ++++++++++-------- src/components/Navbar.tsx | 290 +++++++++++++++++++------------------ 3 files changed, 225 insertions(+), 207 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 4e882be..0c5564e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -94,11 +94,11 @@ export default function Home() { }} > - + Join the Discord diff --git a/src/components/JoinCTA.tsx b/src/components/JoinCTA.tsx index 2e54f4c..0744f1d 100644 --- a/src/components/JoinCTA.tsx +++ b/src/components/JoinCTA.tsx @@ -1,73 +1,87 @@ "use client"; export default function JoinCTA() { - return ( -
- {/* Background glow */} -
-
-
+ return ( +
+ {/* Background glow */} +
+
+
-
- {/* Card */} -
- {/* Inner glow */} -
+
+ {/* Card */} +
+ {/* Inner glow */} +
- {/* Discord server icon simulation */} -
-
- - - -
-
+ {/* Discord server icon simulation */} +
+
+ + + +
+
-
-

- Your next breakthrough -

-

- starts in a chat. -

-
+
+

+ Your next breakthrough +

+

+ starts in a chat. +

+
-

- 1100+ developers helping each other ship code, review PRs, learn new skills, and build careers. All for free, all on Discord. -

+

+ 1100+ developers helping each other ship code, review PRs, learn new + skills, and build careers. All for free, all on Discord. +

- + - {/* Member avatars row */} -
-
- {["#8B5CF6","#EC4899","#06B6D4","#10B981","#F59E0B"].map((c, i) => ( -
- {String.fromCharCode(65 + i)} -
- ))} -
- 1100+ devs waiting for you -
-
+ {/* Member avatars row */} +
+
+ {["#8B5CF6", "#EC4899", "#06B6D4", "#10B981", "#F59E0B"].map( + (c, i) => ( +
+ {String.fromCharCode(65 + i)} +
+ ), + )}
-
- ); + + 1100+ devs waiting for you + +
+ + +
+ ); } diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 789bcc1..b5bada7 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -5,158 +5,162 @@ import Link from "next/link"; import { ChevronDown, Terminal } from "lucide-react"; const navLinks = [ - { href: "/", label: "Home" }, - { href: "/pages/rules", label: "Rules" }, - { href: "/pages/faq", label: "FAQ" }, - { href: "/resources", label: "Resources" }, - { href: "/pages/hall-of-fame", label: "Hall of Fame" }, + { href: "/", label: "Home" }, + { href: "/pages/rules", label: "Rules" }, + { href: "/pages/faq", label: "FAQ" }, + { href: "/resources", label: "Resources" }, + { href: "/pages/hall-of-fame", label: "Hall of Fame" }, ]; const moreLinks = [ - { href: "/pages/code-of-conduct", label: "Code of Conduct" }, - { href: "/pages/how-to-ask", label: "How to Ask for Help" }, - { href: "/pages/how-to-help", label: "How to Help" }, - { href: "/pages/join", label: "Join Guide" }, - { href: "/pages/contributing", label: "Contributing" }, - { href: "/pages/moderation-guide", label: "Moderation Guide" }, - { href: "/pages/server-info", label: "Server Info" }, - { href: "/pages/privacy-policy", label: "Privacy Policy" }, - { href: "/pages/security-notice", label: "Security Notice" }, - { href: "/pages/staff-roles", label: "Staff Roles" }, - { href: "/pages/tags", label: "Tags Reference" }, - { href: "/pages/acknowledgements", label: "Acknowledgements" }, + { href: "/pages/code-of-conduct", label: "Code of Conduct" }, + { href: "/pages/how-to-ask", label: "How to Ask for Help" }, + { href: "/pages/how-to-help", label: "How to Help" }, + { href: "/pages/join", label: "Join Guide" }, + { href: "/pages/contributing", label: "Contributing" }, + { href: "/pages/moderation-guide", label: "Moderation Guide" }, + { href: "/pages/server-info", label: "Server Info" }, + { href: "/pages/privacy-policy", label: "Privacy Policy" }, + { href: "/pages/security-notice", label: "Security Notice" }, + { href: "/pages/staff-roles", label: "Staff Roles" }, + { href: "/pages/tags", label: "Tags Reference" }, + { href: "/pages/acknowledgements", label: "Acknowledgements" }, ]; export default function Navbar() { - const [isOpen, setIsOpen] = useState(false); - const [isMoreOpen, setIsMoreOpen] = useState(false); + const [isOpen, setIsOpen] = useState(false); + const [isMoreOpen, setIsMoreOpen] = useState(false); - return ( - - ); + Join Discord + + + + + + ); } From 16bf3fff3151ab1d40d5f95d8ae494698b392207 Mon Sep 17 00:00:00 2001 From: Caleb Date: Wed, 24 Jun 2026 00:06:51 +0300 Subject: [PATCH 2/4] feat: replace cta section avatars with real pfps --- src/components/JoinCTA.tsx | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/components/JoinCTA.tsx b/src/components/JoinCTA.tsx index 0744f1d..5d069e7 100644 --- a/src/components/JoinCTA.tsx +++ b/src/components/JoinCTA.tsx @@ -64,17 +64,23 @@ export default function JoinCTA() { {/* Member avatars row */}
- {["#8B5CF6", "#EC4899", "#06B6D4", "#10B981", "#F59E0B"].map( - (c, i) => ( -
- {String.fromCharCode(65 + i)} -
- ), - )} + {[ + "https://cdn.discordapp.com/avatars/955695820999639120/cf296ec1b2af5b10746bb89dbd24fc38.webp?size=96", + "https://cdn.discordapp.com/avatars/380987045008506880/4544bf7a183195600feefa78596578eb.webp?size=40", + "https://cdn.discordapp.com/avatars/847851585706393652/1eae2121f1537af4a3c3c4836d9c9bfc.webp?size=96", + "https://cdn.discordapp.com/avatars/927288268054229062/349d2011d76e055e12de1fc71644ef6f.webp?size=96", + "https://cdn.discordapp.com/avatars/903540976449097749/1a6aad52b59261e32fa66a96c915adcb.webp?size=96", + "https://cdn.discordapp.com/avatars/1418496947240697876/83c7517e2f0e45d91edf4aee0cfd91b5.webp?size=96", + ].map((c, i) => ( + + {/* {String.fromCharCode(65 + i)} */} + + ))}
1100+ devs waiting for you From c50f29aabf2fa13c58b8702f85332dbda247e26f Mon Sep 17 00:00:00 2001 From: Caleb Date: Wed, 24 Jun 2026 00:19:02 +0300 Subject: [PATCH 3/4] feat: add ShinyText component from react bits --- package-lock.json | 34 +-- package.json | 4 +- src/app/page.tsx | 18 +- src/components/ContactSection.tsx | 459 +++++++++++++++--------------- src/components/JoinCTA.tsx | 18 +- src/components/ShinyText.tsx | 131 +++++++++ 6 files changed, 418 insertions(+), 246 deletions(-) create mode 100644 src/components/ShinyText.tsx diff --git a/package-lock.json b/package-lock.json index 0741d21..3b03c64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "gray-matter": "^4.0.3", "gsap": "^3.14.2", "lucide-react": "^0.563.0", - "motion": "^12.33.0", + "motion": "^12.41.0", "next": "16.1.6", "ogl": "^1.0.11", "radix-ui": "^1.4.3", @@ -6960,13 +6960,13 @@ } }, "node_modules/framer-motion": { - "version": "12.33.0", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.33.0.tgz", - "integrity": "sha512-ca8d+rRPcDP5iIF+MoT3WNc0KHJMjIyFAbtVLvM9eA7joGSpeqDfiNH/kCs1t4CHi04njYvWyj0jS4QlEK/rJQ==", + "version": "12.41.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.41.0.tgz", + "integrity": "sha512-OHAMNiCEON1RDBlRGuulsN5AD8ptMjvk5QWfFmYmBLPZ3zFGIJe60kQucQQf4cez1OzQmjYBWDY+dYfISkUdqg==", "license": "MIT", "dependencies": { - "motion-dom": "^12.33.0", - "motion-utils": "^12.29.2", + "motion-dom": "^12.41.0", + "motion-utils": "^12.39.0", "tslib": "^2.4.0" }, "peerDependencies": { @@ -9544,12 +9544,12 @@ } }, "node_modules/motion": { - "version": "12.33.0", - "resolved": "https://registry.npmjs.org/motion/-/motion-12.33.0.tgz", - "integrity": "sha512-TcND7PijsrTeIA9SRVUB8TOJQ+6mJnJ5K4a9oAJZvyI0Zy47Gq5oofU+VkTxbLcvDoKXnHspQcII2mnk3TbFsQ==", + "version": "12.41.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-12.41.0.tgz", + "integrity": "sha512-avEDKE22rFPJqDr3Ttk7gMQpeaOmNik60NoJ5T0tj+RBCNvz21D3ArY3l4uitoeQ7eIpDqueWaO3pPYFv8JOVA==", "license": "MIT", "dependencies": { - "framer-motion": "^12.33.0", + "framer-motion": "^12.41.0", "tslib": "^2.4.0" }, "peerDependencies": { @@ -9570,18 +9570,18 @@ } }, "node_modules/motion-dom": { - "version": "12.33.0", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.33.0.tgz", - "integrity": "sha512-XRPebVypsl0UM+7v0Hr8o9UAj0S2djsQWRdHBd5iVouVpMrQqAI0C/rDAT3QaYnXnHuC5hMcwDHCboNeyYjPoQ==", + "version": "12.41.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.41.0.tgz", + "integrity": "sha512-Lk3J39fOGg6xNr1KRZsN6usDyBf8aP7MEbUPez1VCughHt79OrP7VGqNrPyFL0riaT7WS8t9DRw1M3BHtM/xKw==", "license": "MIT", "dependencies": { - "motion-utils": "^12.29.2" + "motion-utils": "^12.39.0" } }, "node_modules/motion-utils": { - "version": "12.29.2", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz", - "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==", + "version": "12.39.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.39.0.tgz", + "integrity": "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==", "license": "MIT" }, "node_modules/ms": { diff --git a/package.json b/package.json index 48ab1f6..ac741ca 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "gray-matter": "^4.0.3", "gsap": "^3.14.2", "lucide-react": "^0.563.0", - "motion": "^12.33.0", + "motion": "^12.41.0", "next": "16.1.6", "ogl": "^1.0.11", "radix-ui": "^1.4.3", @@ -26,13 +26,13 @@ "tailwind-merge": "^3.4.0" }, "devDependencies": { + "@netlify/plugin-nextjs": "^5.0.0", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "16.1.6", - "@netlify/plugin-nextjs": "^5.0.0", "shadcn": "^3.8.4", "tailwindcss": "^4", "tw-animate-css": "^1.4.0", diff --git a/src/app/page.tsx b/src/app/page.tsx index 0c5564e..54fe6bc 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -13,6 +13,7 @@ import Features from "@/components/Features"; import TechMarquee from "@/components/TechMarquee"; import TerminalWindow from "@/components/TerminalWindow"; import { ArrowRight, Star, Zap } from "lucide-react"; +import ShinyText from "@/components/ShinyText"; export default function Home() { return ( @@ -72,9 +73,22 @@ export default function Home() {

Build faster with a

-

- real developer community +

+

+

CodeVerse Hub is your always-on Discord for code reviews, open source teams, mentorship, and instant help — designed for diff --git a/src/components/ContactSection.tsx b/src/components/ContactSection.tsx index 8f20c07..810b083 100644 --- a/src/components/ContactSection.tsx +++ b/src/components/ContactSection.tsx @@ -3,240 +3,253 @@ import { useState } from "react"; import { Mail, ArrowRight, Github, Send, CheckCircle } from "lucide-react"; import GradientText from "./GradientText"; +import ShinyText from "./ShinyText"; const contactMethods = [ - { - icon: Mail, - label: "Email Us", - value: "contact@thecodeversehub.tech", - href: "mailto:contact@thecodeversehub.tech", - }, - { - icon: () => ( - - - - ), - label: "Join Community", - value: "The CodeVerse Hub Discord", - href: "https://discord.gg/3xKFvKhuGR", - }, - { - icon: Github, - label: "Follow Development", - value: "@TheCodeVerseHub", - href: "https://github.com/TheCodeVerseHub/", - }, - { - icon: Github, - label: "Contribute to CVH Web", - value: "Open-source website on GitHub", - href: "https://github.com/TheCodeVerseHub/cvh_web", - }, + { + icon: Mail, + label: "Email Us", + value: "contact@thecodeversehub.tech", + href: "mailto:contact@thecodeversehub.tech", + }, + { + icon: () => ( + + + + ), + label: "Join Community", + value: "The CodeVerse Hub Discord", + href: "https://discord.gg/3xKFvKhuGR", + }, + { + icon: Github, + label: "Follow Development", + value: "@TheCodeVerseHub", + href: "https://github.com/TheCodeVerseHub/", + }, + { + icon: Github, + label: "Contribute to CVH Web", + value: "Open-source website on GitHub", + href: "https://github.com/TheCodeVerseHub/cvh_web", + }, ]; export default function ContactSection() { - const [submitted, setSubmitted] = useState(false); - const [isSubmitting, setIsSubmitting] = useState(false); + const [submitted, setSubmitted] = useState(false); + const [isSubmitting, setIsSubmitting] = useState(false); - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setIsSubmitting(true); + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setIsSubmitting(true); - const form = e.currentTarget; - const formData = new FormData(form); + const form = e.currentTarget; + const formData = new FormData(form); - try { - await fetch("https://formspree.io/f/mdkvwgln", { - method: "POST", - body: formData, - headers: { - Accept: "application/json", - }, - }); - setSubmitted(true); - form.reset(); - } catch { - console.error("Form submission error"); - } finally { - setIsSubmitting(false); - } - }; + try { + await fetch("https://formspree.io/f/mdkvwgln", { + method: "POST", + body: formData, + headers: { + Accept: "application/json", + }, + }); + setSubmitted(true); + form.reset(); + } catch { + console.error("Form submission error"); + } finally { + setIsSubmitting(false); + } + }; - return ( -

-

- Get in{" "} - - Touch - -

-

- Have a question, want to collaborate, or interested in contributing to - our open-source projects? Our inbox is always open. -

+ return ( +
+

+ Get in{" "} + + + +

+

+ Have a question, want to collaborate, or interested in contributing to + our open-source projects? Our inbox is always open. +

-
-
-

- Community Support -

-

- Get help with CodeVerse Hub, bots, and community tools. -

-
-
-

- Partnerships -

-

- Reach out for events, collaborations, and sponsorships. -

-
-
-

- Open Source -

-

- Ask about contributing to our GitHub projects, including this site. -

-
-
+
+
+

+ Community Support +

+

+ Get help with CodeVerse Hub, bots, and community tools. +

+
+
+

+ Partnerships +

+

+ Reach out for events, collaborations, and sponsorships. +

+
+
+

+ Open Source +

+

+ Ask about contributing to our GitHub projects, including this site. +

+
+
-
-
-
- {contactMethods.map((method, index) => { - const Icon = method.icon; - return ( - -
- - - -
-
-

- {method.label} -

-

{method.value}

-
-
- ); - })} -
-
+
+
+
+ {contactMethods.map((method, index) => { + const Icon = method.icon; + return ( + +
+ + + +
+
+

+ {method.label} +

+

{method.value}

+
+
+ ); + })} +
+
-
- {submitted ? ( -
- -

- Message Sent! -

-

- We'll get back to you as soon as possible. -

- -
- ) : ( -
-
- - -
-
- - -
-
- - -
-
- -