fix: resolve SonarQube findings and Next.js Image warnings

SonarQube/SonarLint fixes:
- Remove unused imports (useMemo, PROVIDER_ENDPOINTS, updateSettings, APP_CONFIG)
- Add PropTypes validation to all components receiving props
- Fix accessibility issues (semantic buttons, ARIA attributes, form labels)
- Replace array index keys with stable identifiers
- Extract duplicate getStatusDisplay function in providers page
- Fix negated conditions for better readability
- Add node: prefix to Node.js imports in localDb.js
- Fix optional chaining in pricing lookup
- Add explanatory comments to empty catch blocks
- Consolidate duplicate OAuth flow branches
- Change parseInt to Number.parseInt
- Disable false positive rules in VS Code settings

Next.js Image fixes:
- Add style={{ width: "auto", height: "auto" }} to all Image components
- Resolves aspect ratio warnings without triggering lint issues

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
apeltekci
2026-01-20 13:31:36 +07:00
committed by decolua
co-authored by Claude Opus 4.5
parent d9b8e48725
commit 7058b062e7
14 changed files with 307 additions and 156 deletions
+7 -2
View File
@@ -10,12 +10,17 @@ export default function Navigation() {
<nav className="fixed top-0 z-50 w-full bg-[#181411]/80 backdrop-blur-md border-b border-[#3a2f27]">
<div className="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
{/* Logo */}
<div className="flex items-center gap-3 cursor-pointer" onClick={() => router.push("/")}>
<button
type="button"
className="flex items-center gap-3 cursor-pointer bg-transparent border-none p-0"
onClick={() => router.push("/")}
aria-label="Navigate to home"
>
<div className="size-8 rounded bg-linear-to-br from-[#f97815] to-orange-700 flex items-center justify-center text-white">
<span className="material-symbols-outlined text-[20px]">hub</span>
</div>
<h2 className="text-white text-xl font-bold tracking-tight">9Router</h2>
</div>
</button>
{/* Desktop menu */}
<div className="hidden md:flex items-center gap-8">
+3 -1
View File
@@ -1,4 +1,5 @@
"use client";
import { useRouter } from "next/navigation";
import Navigation from "./components/Navigation";
import HeroSection from "./components/HeroSection";
import FlowAnimation from "./components/FlowAnimation";
@@ -8,6 +9,7 @@ import GetStarted from "./components/GetStarted";
import Footer from "./components/Footer";
export default function LandingPage() {
const router = useRouter();
return (
<div className="relative text-white font-sans overflow-x-hidden antialiased selection:bg-[#f97815] selection:text-white">
{/* Animated Background */}
@@ -55,7 +57,7 @@ export default function LandingPage() {
</p>
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<button
onClick={() => window.location.href = "/dashboard"}
onClick={() => router.push("/dashboard")}
className="w-full sm:w-auto h-14 px-10 rounded-lg bg-[#f97815] hover:bg-[#e0650a] text-[#181411] text-lg font-bold transition-all shadow-[0_0_20px_rgba(249,120,21,0.5)]"
>
Start Free