From 708336b383efd1e32a3a084a51874cc8c852e738 Mon Sep 17 00:00:00 2001 From: Zhenya Goroh Date: Tue, 8 Oct 2024 22:06:23 +0300 Subject: [PATCH] Added eslint-unused-imports plugin --- .eslintrc.json | 4 ++- package-lock.json | 33 ++++++++++++++++++++++ package.json | 1 + src/app/branding-assets/page.tsx | 2 -- src/app/create-theme/page.tsx | 2 -- src/app/download/page.tsx | 2 -- src/app/layout.tsx | 1 - src/app/page.tsx | 2 -- src/app/privacy-policy/page.tsx | 4 --- src/app/release-notes/[version]/page.tsx | 5 ---- src/app/themes/[theme]/page.tsx | 2 -- src/app/themes/page.tsx | 5 +--- src/app/welcome/page.tsx | 2 -- src/components/create-theme.tsx | 10 ++----- src/components/download.tsx | 1 - src/components/features.tsx | 35 ++---------------------- src/components/footer.tsx | 2 -- src/components/header.tsx | 8 +----- src/components/logo.tsx | 2 -- src/components/marketplace.tsx | 3 +- src/components/mobile-nav.tsx | 1 - src/components/navigation.tsx | 3 -- src/components/theme-card.tsx | 12 ++------ src/components/theme-page.tsx | 1 - 24 files changed, 46 insertions(+), 97 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 6ce19f0..7dd90fe 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,7 +1,9 @@ { "extends": "next/core-web-vitals", + "plugins": ["unused-imports"], "rules": { "react/display-name": "off", - "react/no-unescaped-entities": "off" + "react/no-unescaped-entities": "off", + "unused-imports/no-unused-imports": "error" } } diff --git a/package-lock.json b/package-lock.json index 0ceb70b..6b36112 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,6 +56,7 @@ "@types/sync-fetch": "^0.4.3", "eslint": "^8.57.0", "eslint-config-next": "14.2.4", + "eslint-plugin-unused-imports": "^3.2.0", "postcss": "^8.4.41", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.6", @@ -10907,6 +10908,38 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-unused-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", + "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "6 - 7", + "eslint": "8" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", diff --git a/package.json b/package.json index 02acde7..7ddf28b 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "@types/sync-fetch": "^0.4.3", "eslint": "^8.57.0", "eslint-config-next": "14.2.4", + "eslint-plugin-unused-imports": "^3.2.0", "postcss": "^8.4.41", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.6", diff --git a/src/app/branding-assets/page.tsx b/src/app/branding-assets/page.tsx index 311fc82..c396b43 100644 --- a/src/app/branding-assets/page.tsx +++ b/src/app/branding-assets/page.tsx @@ -1,6 +1,4 @@ import { BrandingAssets } from "@/components/branding-assets"; -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; export default function BrandingAssetsPage() { return ( diff --git a/src/app/create-theme/page.tsx b/src/app/create-theme/page.tsx index 9b1c5ca..5e58f32 100644 --- a/src/app/create-theme/page.tsx +++ b/src/app/create-theme/page.tsx @@ -1,6 +1,4 @@ import CreateThemePage from "@/components/create-theme"; -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; export default function BrandingAssetsPage() { return ( diff --git a/src/app/download/page.tsx b/src/app/download/page.tsx index c70e91e..8ebac0d 100644 --- a/src/app/download/page.tsx +++ b/src/app/download/page.tsx @@ -1,6 +1,4 @@ import DownloadPage from "@/components/download"; -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; export default function Download() { return ( diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f99d295..fd66ee9 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,7 +5,6 @@ import { ThemeProvider } from "@/components/theme-provider"; import StyledComponentsRegistry from "@/lib/styled-components-registry"; import Footer from "@/components/footer"; import { Navigation } from "@/components/navigation"; -import { ny } from "@/lib/utils"; const inter = Inter({ subsets: ["latin"] }); diff --git a/src/app/page.tsx b/src/app/page.tsx index 5477288..942cdc0 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,9 +1,7 @@ "use client"; import Features from "@/components/features"; -import Footer from "@/components/footer"; import Header from "@/components/header"; -import { Navigation } from "@/components/navigation"; export default function Home() { return ( diff --git a/src/app/privacy-policy/page.tsx b/src/app/privacy-policy/page.tsx index e08d4e4..7b2ea1f 100644 --- a/src/app/privacy-policy/page.tsx +++ b/src/app/privacy-policy/page.tsx @@ -1,8 +1,4 @@ "use client"; -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; -import { releaseNoteIsAlpha, releaseNotes } from "@/lib/release-notes"; -import Link from "next/link"; import Markdown from "react-markdown"; import "./markdown.css"; diff --git a/src/app/release-notes/[version]/page.tsx b/src/app/release-notes/[version]/page.tsx index 4bfb4dc..5948164 100644 --- a/src/app/release-notes/[version]/page.tsx +++ b/src/app/release-notes/[version]/page.tsx @@ -1,12 +1,7 @@ import React from "react"; -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; -import ReleaseNote from "@/components/release-note"; import { Button } from "@/components/ui/button"; import { releaseNotes } from "@/lib/release-notes"; -import Link from "next/link"; import { redirect } from "next/navigation"; -import { ChevronLeft, ChevronRight, ChevronDown } from "lucide-react"; export async function generateStaticParams() { return [ diff --git a/src/app/themes/[theme]/page.tsx b/src/app/themes/[theme]/page.tsx index 4bfe603..7331230 100644 --- a/src/app/themes/[theme]/page.tsx +++ b/src/app/themes/[theme]/page.tsx @@ -1,5 +1,3 @@ -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; import ThemePage from "@/components/theme-page"; import { getAllThemes, getThemeFromId } from "@/lib/themes"; import { Metadata, ResolvingMetadata } from "next"; diff --git a/src/app/themes/page.tsx b/src/app/themes/page.tsx index 1345d5b..49dd82f 100644 --- a/src/app/themes/page.tsx +++ b/src/app/themes/page.tsx @@ -1,8 +1,5 @@ -import Footer from "@/components/footer"; import MarketplacePage from "@/components/marketplace"; -import { Navigation } from "@/components/navigation"; -import { getAllThemes, ZenTheme } from "@/lib/themes"; -import { GetStaticProps } from "next"; +import { getAllThemes } from "@/lib/themes"; export default async function ThemesMarketplace() { return ( diff --git a/src/app/welcome/page.tsx b/src/app/welcome/page.tsx index 4ce9b2a..a56b521 100644 --- a/src/app/welcome/page.tsx +++ b/src/app/welcome/page.tsx @@ -1,6 +1,4 @@ import WelcomePage from "@/components/welcome"; -import Footer from "@/components/footer"; -import { Navigation } from "@/components/navigation"; export default function Download() { return ( diff --git a/src/components/create-theme.tsx b/src/components/create-theme.tsx index c1eb8fd..c987ca5 100644 --- a/src/components/create-theme.tsx +++ b/src/components/create-theme.tsx @@ -4,14 +4,8 @@ import { ny } from "@/lib/utils"; import { Button } from "./ui/button"; import React from "react"; import styled from "styled-components"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogTitle, - DialogTrigger, -} from "@radix-ui/react-dialog"; -import { DialogFooter, DialogHeader } from "./ui/dialog"; + + import { Sheet, SheetContent, diff --git a/src/components/download.tsx b/src/components/download.tsx index 60786f2..3d703d6 100644 --- a/src/components/download.tsx +++ b/src/components/download.tsx @@ -9,7 +9,6 @@ import Particles from "./ui/particles"; import confetti from "canvas-confetti"; import { releases, releaseTree } from "@/lib/releases"; import { InfoCircledIcon } from "@radix-ui/react-icons"; -import Link from "next/link"; const BASE_URL = "https://github.com/zen-browser/desktop/releases/latest/download"; const TWILIGHT_BASE_URL = diff --git a/src/components/features.tsx b/src/components/features.tsx index 713383f..8499983 100644 --- a/src/components/features.tsx +++ b/src/components/features.tsx @@ -1,61 +1,31 @@ "use client"; -import Sticky from "react-sticky-el"; import { BookmarkCheckIcon, CheckIcon, - ChevronLeft, - ChevronRight, ExternalLinkIcon, EyeIcon, - EyeOffIcon, - Github, HeartHandshake, - HeartPulseIcon, - HomeIcon, PaintBucket, - PersonStanding, - RabbitIcon, ShieldAlertIcon, ShieldCheck, SidebarCloseIcon, SidebarIcon, - SidebarOpenIcon, - SpaceIcon, SplitSquareHorizontal, - SplitSquareVertical, - SplitSquareVerticalIcon, - TableIcon, XIcon, } from "lucide-react"; import { - Cross1Icon, EyeClosedIcon, - HeartFilledIcon, Link1Icon, LockClosedIcon, QuestionMarkCircledIcon, QuestionMarkIcon, - ReloadIcon, - SpaceBetweenHorizontallyIcon, UpdateIcon, } from "@radix-ui/react-icons"; -import Image from "next/legacy/image"; import Link from "next/link"; import { Button } from "./ui/button"; -import { COLORS } from "./create-theme"; -import { Slider } from "./ui/slider"; -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "./ui/table"; + + import React, { useState } from "react"; -import { ny } from "@/lib/utils"; -import ThemeCard from "./theme-card"; -import { getAllThemes, ZenTheme } from "@/lib/themes"; import { Accordion, AccordionContent, @@ -64,7 +34,6 @@ import { } from "./ui/accordion"; import Logo from "./logo"; import CachedImage from "./CachedImage"; -import { transform } from "next/dist/build/swc"; function Checkmark() { return ( diff --git a/src/components/footer.tsx b/src/components/footer.tsx index 4b19b2f..fe25369 100644 --- a/src/components/footer.tsx +++ b/src/components/footer.tsx @@ -1,6 +1,4 @@ -import Link from "next/link"; import Logo from "./logo"; -import TextReveal from "./ui/text-reveal"; import { DiscordLogoIcon, GitHubLogoIcon, diff --git a/src/components/header.tsx b/src/components/header.tsx index e9dc874..6371555 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -3,14 +3,8 @@ import { ArrowRightIcon } from "@radix-ui/react-icons"; import { useInView } from "framer-motion"; import { useRef } from "react"; -import AnimatedGradientText from "./ui/animated-gradient-text"; import { Button } from "./ui/button"; -import { BorderBeam } from "./ui/border-beam"; -import { ny } from "@/lib/utils"; -import { ChevronDown, ChevronRight } from "lucide-react"; -import Particles from "./ui/particles"; -import Image from "next/legacy/image"; -import Link from "next/link"; +import { ChevronDown } from "lucide-react"; import CoolHeaderText from "./cool-header-text"; export default function Header() { const ref = useRef(null); diff --git a/src/components/logo.tsx b/src/components/logo.tsx index c40db20..0616f2c 100644 --- a/src/components/logo.tsx +++ b/src/components/logo.tsx @@ -1,7 +1,5 @@ "use client"; -import { LOGO_COLORS } from "@/lib/logos"; import { ny } from "@/lib/utils"; -import Image from "next/legacy/image"; import React from "react"; import CachedImage from "./CachedImage"; diff --git a/src/components/marketplace.tsx b/src/components/marketplace.tsx index a6b6d43..f60048a 100644 --- a/src/components/marketplace.tsx +++ b/src/components/marketplace.tsx @@ -1,9 +1,8 @@ "use client"; import React from "react"; import ThemesSearch from "./themes-search"; -import { getAllThemes, getThemesFromSearch, ZenTheme } from "@/lib/themes"; +import { getThemesFromSearch, ZenTheme } from "@/lib/themes"; import ThemeCard from "./theme-card"; -import { Button } from "./ui/button"; import StickyBox from "react-sticky-box"; export default function MarketplacePage({ themes }: { themes: ZenTheme[] }) { diff --git a/src/components/mobile-nav.tsx b/src/components/mobile-nav.tsx index e57f764..301b172 100644 --- a/src/components/mobile-nav.tsx +++ b/src/components/mobile-nav.tsx @@ -2,7 +2,6 @@ import { SidebarOpen } from "lucide-react"; import type { LinkProps } from "next/link"; -import Link from "next/link"; import { useRouter } from "next/navigation"; import * as React from "react"; import { Sheet, SheetContent, SheetTrigger } from "./ui/sheet"; diff --git a/src/components/navigation.tsx b/src/components/navigation.tsx index c532e02..f2a6e4a 100644 --- a/src/components/navigation.tsx +++ b/src/components/navigation.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import Link from "next/link"; import { ny } from "@/lib/utils"; import { @@ -9,12 +8,10 @@ import { NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, - navigationMenuTriggerStyle, } from "@/components/ui/navigation-menu"; import Logo from "./logo"; import { ModeToggle } from "./mode-toggle"; import { MobileNav } from "./mobile-nav"; -import { HeartIcon } from "lucide-react"; import { HeartFilledIcon } from "@radix-ui/react-icons"; export const components: { diff --git a/src/components/theme-card.tsx b/src/components/theme-card.tsx index 04c9446..a568d30 100644 --- a/src/components/theme-card.tsx +++ b/src/components/theme-card.tsx @@ -1,15 +1,7 @@ import { getThemeAuthorLink, ZenTheme } from "@/lib/themes"; import styled from "styled-components"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "./ui/dialog"; -import { Button } from "./ui/button"; + + import { ny } from "@/lib/utils"; const ThemeCardWrapper = styled.div``; diff --git a/src/components/theme-page.tsx b/src/components/theme-page.tsx index 9a3c971..2e6ee81 100644 --- a/src/components/theme-page.tsx +++ b/src/components/theme-page.tsx @@ -2,7 +2,6 @@ import { getThemeAuthorLink, getThemeFromId, getThemeMarkdown, - ZenTheme, } from "@/lib/themes"; import { Button } from "./ui/button"; import Markdown from "react-markdown";