diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index b8237aa..588df82 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -23,10 +23,11 @@ List any issues that are linked to this pull request (e.g., `Closes #123`). ## Checklist - [ ] I've tested this change locally and it works as expected -- [ ] `bun run build` or `npm run build` completes without errors -- [ ] My commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) (e.g. `fix: ...`, `feat: ...`, `chore: ...`) -- [ ] I've updated relevant docs (README, comments, etc.) if this change needs it -- [ ] No leftover `console.log` or debug code +- [ ] `bun run lint` or `npm run lint` completes without warnings or errors +- [ ] `bun run build` or `npm run build` completes successfully +- [ ] My commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) (e.g. `feat: ...`, `fix: ...`, `chore: ...`) +- [ ] I've updated relevant documentation (README, comments, etc.) if needed +- [ ] I've removed any temporary debugging code (e.g. `console.log`) ## Screenshots / recordings (if applicable) diff --git a/app/articles/[slug]/ArticleClient.tsx b/app/articles/[slug]/ArticleClient.tsx index 47967a2..b7147d3 100644 --- a/app/articles/[slug]/ArticleClient.tsx +++ b/app/articles/[slug]/ArticleClient.tsx @@ -397,12 +397,14 @@ export default function ArticleClient({ article, previews }: Props) { className="relative w-full overflow-hidden rounded-lg" style={{ maxHeight: "260px" }} > - {article.title} +
+ {article.title} +
{/* Dark gradient overlay at bottom for text legibility */}
- This page doesn't exist, or it wandered off somewhere into the void. - Let's get you back on track. + { + "This page doesn't exist, or it wandered off somewhere into the void. Let's get you back on track." + } {/* CTA buttons */} diff --git a/app/partners/page.tsx b/app/partners/page.tsx index 34ad503..78684b1 100644 --- a/app/partners/page.tsx +++ b/app/partners/page.tsx @@ -23,6 +23,7 @@ import { ShieldCheck, Users, } from "lucide-react"; +import Image from "next/image"; import { useEffect, useState } from "react"; type DiscordData = { @@ -236,10 +237,11 @@ function PartnerCard({ style={{ aspectRatio: "4 / 1", minHeight: 150, maxHeight: 200 }} > {showImageBanner ? ( - ) : showColourBanner ? (
{logoSrc ? ( - {serverName} ) : ( logoInitials diff --git a/bun.lock b/bun.lock index 970d6fb..85fac54 100644 --- a/bun.lock +++ b/bun.lock @@ -41,7 +41,7 @@ "date-fns": "^3.6.0", "embla-carousel-react": "^8.3.0", "framer-motion": "^12.38.0", - "gsap": "^3.15.0", + "gsap": "^3.13.0", "input-otp": "^1.2.4", "lucide-react": "^0.446.0", "motion": "^12.40.0", diff --git a/components.json b/components.json index 497558a..be66943 100644 --- a/components.json +++ b/components.json @@ -12,7 +12,7 @@ }, "iconLibrary": "lucide", "aliases": { - "components": "@/components", + "components": "@/components/bits", "utils": "@/lib/utils", "ui": "@/components/ui", "lib": "@/lib", diff --git a/components/LinkPreviewCard.tsx b/components/LinkPreviewCard.tsx index dcc8f49..a84d1e7 100644 --- a/components/LinkPreviewCard.tsx +++ b/components/LinkPreviewCard.tsx @@ -1,5 +1,6 @@ import { accent, indigo, text } from "@/lib/colors"; import { AnimatePresence, motion } from "framer-motion"; +import Image from "next/image"; import { useEffect, useRef, useState } from "react"; import { createPortal } from "react-dom"; @@ -240,15 +241,17 @@ export function LinkPreviewCard({
{showImage && ( -
- + Preview setImgError(true)} - className="w-[6rem] h-[6rem] object-cover aspect-square transition-all duration-300 hover:scale-105" - style={{ border: `1px solid ${indigo(0.18)}` }} + className="object-cover aspect-square transition-all duration-300 hover:scale-105" />
)} diff --git a/components/bits/TargetCursor.tsx b/components/bits/TargetCursor.tsx index ec526e1..6aa561c 100644 --- a/components/bits/TargetCursor.tsx +++ b/components/bits/TargetCursor.tsx @@ -1,5 +1,6 @@ "use client"; +import { text } from "@/lib/colors"; import { gsap } from "gsap"; import React, { useCallback, @@ -8,7 +9,6 @@ import React, { useRef, useState, } from "react"; -import { text } from "@/lib/colors"; // A position: fixed element is positioned relative to the viewport UNLESS an // ancestor establishes a containing block (transform, perspective, filter, @@ -114,6 +114,8 @@ const TargetCursor: React.FC = ({ useEffect(() => { if (!mounted || isMobile || !cursorRef.current) return; + const activeStrength = activeStrengthRef.current; + const originalCursor = document.body.style.cursor; if (hideDefaultCursor) { document.body.style.cursor = "none"; @@ -168,7 +170,7 @@ const TargetCursor: React.FC = ({ ) { return; } - const strength = activeStrengthRef.current.current; + const strength = activeStrength.current; if (strength === 0) return; const cursorX = gsap.getProperty(cursorRef.current, "x") as number; const cursorY = gsap.getProperty(cursorRef.current, "y") as number; @@ -301,7 +303,7 @@ const TargetCursor: React.FC = ({ isActiveRef.current = true; gsap.ticker.add(tickerFnRef.current!); - gsap.to(activeStrengthRef.current, { + gsap.to(activeStrength, { current: 1, duration: hoverDuration, ease: "power2.out", @@ -320,7 +322,10 @@ const TargetCursor: React.FC = ({ gsap.ticker.remove(tickerFnRef.current!); isActiveRef.current = false; targetCornerPositionsRef.current = null; - gsap.set(activeStrengthRef.current, { current: 0, overwrite: true }); + gsap.set(activeStrength, { + current: 0, + overwrite: true, + }); activeTarget = null; if (cursorColorOnTarget && cornersRef.current) { @@ -418,7 +423,7 @@ const TargetCursor: React.FC = ({ document.body.style.cursor = originalCursor; isActiveRef.current = false; targetCornerPositionsRef.current = null; - activeStrengthRef.current.current = 0; + activeStrength.current = 0; }; }, [ mounted, diff --git a/components/home/BelongSection.tsx b/components/home/BelongSection.tsx index 0ea1839..d1b66aa 100644 --- a/components/home/BelongSection.tsx +++ b/components/home/BelongSection.tsx @@ -126,9 +126,9 @@ export default function BelongSection() { className="mt-4 text-sm max-w-xl mx-auto leading-relaxed" style={{ fontFamily: "var(--font-geist-mono)", color: text.dim }} > - Whether you're making your first commit or building your next big - project, DevHub is a community where you can learn, contribute, and - learn together. + { + "Whether you're making your first commit or building your next big project, DevHub is a community where you can learn, contribute, and learn together." + } diff --git a/components/site/Footer.tsx b/components/site/Footer.tsx index fea6aa0..47252e3 100644 --- a/components/site/Footer.tsx +++ b/components/site/Footer.tsx @@ -1,5 +1,6 @@ import { accent, background, indigo, text } from "@/lib/colors"; import data from "@/lib/staticdata.config"; +import Image from "next/image"; import Link from "next/link"; const { email } = data; @@ -39,9 +40,11 @@ export default function Footer() { className="font-bold text-[#6366f1] text-lg" style={{ fontFamily: "var(--font-geist-mono)" }} > - Open DevHub logo - Open DevHub logo