From 81b6bd916ebeca3dabec0e490653d5a8ecf6a165 Mon Sep 17 00:00:00 2001 From: Coder-soft Date: Sun, 4 Oct 2026 15:35:24 +0500 Subject: [PATCH] fix(navbar): stop dropdown scroll-lock and keep navbar during lazy navigation Two root causes for issue #18: 1. DropdownMenu.Root defaulted to Radix `modal`, so react-remove-scroll locked `body` (the app's real scroll container) and removed the scrollbar without compensation, shifting the page. The custom PreventLayoutShift effects measured `document.documentElement` instead of the scroller, so their guard never ran. Remove the dead effects and default the root to `modal={false}`. 2. Every page rendered its own inside the single top-level Suspense. Navigating to a lazy route hid the previous subtree (including the navbar) while the body-portaled dropdown escaped the hide and floated over the full-screen loading fallback. Render one global outside Suspense, drop the per-page instances, and reset dropdown/drawer state on route change. --- src/App.tsx | 2 +- src/components/Navbar.tsx | 6 ++++ src/components/ui/dropdown-menu.tsx | 45 ++-------------------------- src/pages/Account.tsx | 3 -- src/pages/Admin.tsx | 3 -- src/pages/AiTitleHelper.tsx | 2 -- src/pages/Analytics.tsx | 2 -- src/pages/BackgroundGenerator.tsx | 2 -- src/pages/BlogView.tsx | 4 --- src/pages/Blogs.tsx | 2 -- src/pages/Changelogs.tsx | 2 -- src/pages/Community.tsx | 2 -- src/pages/Construction.tsx | 2 -- src/pages/Contact.tsx | 2 -- src/pages/CreateCreatorPackPage.tsx | 2 -- src/pages/CreatorPackPage.tsx | 4 --- src/pages/EditCreatorPackPage.tsx | 3 -- src/pages/FAQ.tsx | 2 -- src/pages/Generators.tsx | 2 -- src/pages/GuideView.tsx | 2 -- src/pages/Guides.tsx | 2 -- src/pages/Index.tsx | 2 -- src/pages/LooneyResultPage.tsx | 2 -- src/pages/ManageCreatorPacksPage.tsx | 2 -- src/pages/MusicCopyright.tsx | 2 -- src/pages/NativeApplication.tsx | 2 -- src/pages/NotFound.tsx | 2 -- src/pages/PlayerRenderer.tsx | 2 -- src/pages/Privacy.tsx | 2 -- src/pages/Profile.tsx | 1 - src/pages/Renderbot.tsx | 2 -- src/pages/ResourcesHub.tsx | 2 -- src/pages/Showcase.tsx | 2 -- src/pages/TOS.tsx | 2 -- src/pages/TextGenerator.tsx | 2 -- src/pages/Utilities.tsx | 2 -- src/pages/YouTubeDownloader.tsx | 2 -- 37 files changed, 9 insertions(+), 118 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index d46c3acb..d10b476e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -120,6 +120,7 @@ const App = () => { + }> } /> @@ -154,7 +155,6 @@ const App = () => { } /> -
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 8390908b..f5944f77 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -110,6 +110,12 @@ const Navbar = () => { return () => window.removeEventListener('scroll', handleScroll); }, []); + useEffect(() => { + setActiveDropdown(null); + setOpenMobileCollapsible(null); + setIsDrawerOpen(false); + }, [location.pathname]); + const toggleTheme = () => { const newTheme = theme === 'dark' ? 'light' : 'dark'; setTheme(newTheme); diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx index 5e137678..7b426ae4 100644 --- a/src/components/ui/dropdown-menu.tsx +++ b/src/components/ui/dropdown-menu.tsx @@ -4,34 +4,11 @@ import { IconCheck, IconChevronRight, IconCircle } from '@tabler/icons-react' import { cn } from "@/lib/utils" -// Add effect to prevent layout shift when opening dropdown menu -const PreventLayoutShift = () => { - React.useEffect(() => { - const html = document.documentElement; - const scrollbarWidth = window.innerWidth - html.clientWidth; - - if (scrollbarWidth > 0) { - const originalPaddingRight = getComputedStyle(html).getPropertyValue('padding-right'); - - html.style.paddingRight = `${scrollbarWidth}px`; - html.classList.add('overflow-hidden'); - - return () => { - html.style.paddingRight = originalPaddingRight; - html.classList.remove('overflow-hidden'); - }; - } - }, []); - - return null; -} - const DropdownMenu = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef ->(({ children, ...props }, ref) => ( - - {props.open && } +>(({ modal = false, children, ...props }, ref) => ( + {children} )) @@ -89,24 +66,6 @@ const DropdownMenuContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => { - // Add effect to prevent layout shift when opening dropdown - React.useEffect(() => { - const html = document.documentElement; - const scrollbarWidth = window.innerWidth - html.clientWidth; - - if (scrollbarWidth > 0) { - const originalPaddingRight = getComputedStyle(html).getPropertyValue('padding-right'); - - html.style.paddingRight = `${scrollbarWidth}px`; - html.style.overflow = 'hidden'; - - return () => { - html.style.paddingRight = originalPaddingRight; - html.style.overflow = ''; - }; - } - }, []); - return ( { if (loading) { return (
-
@@ -124,7 +122,6 @@ const Account = () => { -
diff --git a/src/pages/Admin.tsx b/src/pages/Admin.tsx index 774ec890..9af6355f 100644 --- a/src/pages/Admin.tsx +++ b/src/pages/Admin.tsx @@ -1,7 +1,6 @@ import { useEffect, useState, lazy, Suspense } from 'react'; import { useAuth } from '@/hooks/useAuth'; import { Navigate } from 'react-router-dom'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Helmet } from 'react-helmet-async'; import { motion } from 'framer-motion'; @@ -18,7 +17,6 @@ const Admin = () => { if (loading) { return (
-
@@ -45,7 +43,6 @@ const Admin = () => { -
diff --git a/src/pages/AiTitleHelper.tsx b/src/pages/AiTitleHelper.tsx index ce06d238..d96f9c99 100644 --- a/src/pages/AiTitleHelper.tsx +++ b/src/pages/AiTitleHelper.tsx @@ -1,4 +1,3 @@ -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import Seo from '@/components/Seo'; import { softwareApplicationSchema } from '@/lib/structuredData'; @@ -89,7 +88,6 @@ const AiTitleHelper = () => { category: "UtilitiesApplication", })} /> -
diff --git a/src/pages/Analytics.tsx b/src/pages/Analytics.tsx index a901d026..66eba5a7 100644 --- a/src/pages/Analytics.tsx +++ b/src/pages/Analytics.tsx @@ -13,7 +13,6 @@ import { IconUserPlus, IconUsers, } from "@tabler/icons-react"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { ChartContainer, ChartTooltip, ChartTooltipContent, type ChartConfig } from "@/components/ui/chart"; @@ -139,7 +138,6 @@ const Analytics = () => { -
diff --git a/src/pages/BackgroundGenerator.tsx b/src/pages/BackgroundGenerator.tsx index 2cc6fa17..d1c6ba08 100644 --- a/src/pages/BackgroundGenerator.tsx +++ b/src/pages/BackgroundGenerator.tsx @@ -1,5 +1,4 @@ import { useState, useEffect, useRef, useMemo } from "react"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { Button } from "@/components/ui/button"; import { Slider } from "@/components/ui/slider"; @@ -636,7 +635,6 @@ const BackgroundGenerator = () => { image: "/ogimg/background.png", })} /> -
diff --git a/src/pages/BlogView.tsx b/src/pages/BlogView.tsx index b377014b..545bafea 100644 --- a/src/pages/BlogView.tsx +++ b/src/pages/BlogView.tsx @@ -1,6 +1,5 @@ import { useEffect, useState } from "react"; import { useParams, Link } from "react-router-dom"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import Seo from "@/components/Seo"; import { breadcrumbSchema } from "@/lib/structuredData"; @@ -76,7 +75,6 @@ export default function BlogView() { if (loading) { return (
-
@@ -88,7 +86,6 @@ export default function BlogView() { if (error || !blog) { return (
-

Error

@@ -130,7 +127,6 @@ export default function BlogView() { ]} /> -
diff --git a/src/pages/Blogs.tsx b/src/pages/Blogs.tsx index 5d42d45c..5c654bec 100644 --- a/src/pages/Blogs.tsx +++ b/src/pages/Blogs.tsx @@ -1,5 +1,4 @@ import { useEffect, useState } from "react"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { Link } from "react-router-dom"; import { supabase } from "@/integrations/supabase/client"; @@ -102,7 +101,6 @@ export default function Blogs() { -
diff --git a/src/pages/Changelogs.tsx b/src/pages/Changelogs.tsx index 1b698c4a..e2b22f4e 100644 --- a/src/pages/Changelogs.tsx +++ b/src/pages/Changelogs.tsx @@ -1,5 +1,4 @@ import { useEffect, useState } from 'react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Helmet } from 'react-helmet-async'; @@ -46,7 +45,6 @@ export default function Changelogs() { -
diff --git a/src/pages/Community.tsx b/src/pages/Community.tsx index 3bb6a7d4..a85b8878 100644 --- a/src/pages/Community.tsx +++ b/src/pages/Community.tsx @@ -1,5 +1,4 @@ import { useState, useEffect } from "react"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { IconPlayerPlay, IconChevronRight, IconUsers, IconStar, IconTrendingUp, IconClock, IconEye } from '@tabler/icons-react'; import { Button } from "@/components/ui/button"; @@ -356,7 +355,6 @@ const Community = () => { /> -
diff --git a/src/pages/Construction.tsx b/src/pages/Construction.tsx index 1a77f4fa..28a70164 100644 --- a/src/pages/Construction.tsx +++ b/src/pages/Construction.tsx @@ -1,5 +1,4 @@ import { useState, useEffect } from 'react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { IconChevronRight, IconPlayerPlay, IconUsers } from '@tabler/icons-react'; @@ -290,7 +289,6 @@ const Community = () => { -
diff --git a/src/pages/Contact.tsx b/src/pages/Contact.tsx index 0960fea9..30496e7c 100644 --- a/src/pages/Contact.tsx +++ b/src/pages/Contact.tsx @@ -1,6 +1,5 @@ import { useState, useEffect } from "react"; import { IconCopy, IconMail, IconCheck, IconBrandGithub, IconGlobe, IconExternalLink } from '@tabler/icons-react'; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { Button } from "@/components/ui/button"; import { toast } from "sonner"; @@ -138,7 +137,6 @@ const Contact = () => { content="https://renderdragon.org/ogimg/contact.png" /> -
diff --git a/src/pages/CreateCreatorPackPage.tsx b/src/pages/CreateCreatorPackPage.tsx index 540539d2..15ce4fd7 100644 --- a/src/pages/CreateCreatorPackPage.tsx +++ b/src/pages/CreateCreatorPackPage.tsx @@ -1,6 +1,5 @@ import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -100,7 +99,6 @@ const CreateCreatorPackPage = () => { Upload Creator Pack | RenderDragon -
diff --git a/src/pages/CreatorPackPage.tsx b/src/pages/CreatorPackPage.tsx index c9efb749..b353b82b 100644 --- a/src/pages/CreatorPackPage.tsx +++ b/src/pages/CreatorPackPage.tsx @@ -3,7 +3,6 @@ import { useParams, Link } from 'react-router-dom'; import { motion } from 'framer-motion'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { useCreatorPacks, CreatorPack } from '@/hooks/useCreatorPacks'; import { useAuth } from '@/hooks/useAuth'; @@ -54,7 +53,6 @@ const CreatorPackPage = () => { if (isLoading) { return (
-
@@ -66,7 +64,6 @@ const CreatorPackPage = () => { if (!pack) { return (
-

Pack Not Found

@@ -90,7 +87,6 @@ const CreatorPackPage = () => { {pack.cover_image_url && } -
diff --git a/src/pages/EditCreatorPackPage.tsx b/src/pages/EditCreatorPackPage.tsx index 0c78ea59..461372d5 100644 --- a/src/pages/EditCreatorPackPage.tsx +++ b/src/pages/EditCreatorPackPage.tsx @@ -1,6 +1,5 @@ import React, { useState, useEffect } from 'react'; import { useNavigate, useParams, Link } from 'react-router-dom'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -129,7 +128,6 @@ const EditCreatorPackPage = () => { if (isLoading) { return (
-
@@ -156,7 +154,6 @@ const EditCreatorPackPage = () => { Edit Creator Pack | RenderDragon -
diff --git a/src/pages/FAQ.tsx b/src/pages/FAQ.tsx index 0e39712b..60d52f1f 100644 --- a/src/pages/FAQ.tsx +++ b/src/pages/FAQ.tsx @@ -1,4 +1,3 @@ -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import Seo from '@/components/Seo'; @@ -64,7 +63,6 @@ const FAQ = () => { jsonLd={faqSchema} /> -
diff --git a/src/pages/Generators.tsx b/src/pages/Generators.tsx index c654418d..d8ff3c29 100644 --- a/src/pages/Generators.tsx +++ b/src/pages/Generators.tsx @@ -1,5 +1,4 @@ import { lazy, Suspense } from 'react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Helmet } from 'react-helmet-async'; @@ -24,7 +23,6 @@ const Generators = () => { -
diff --git a/src/pages/GuideView.tsx b/src/pages/GuideView.tsx index b62455a1..6e207133 100644 --- a/src/pages/GuideView.tsx +++ b/src/pages/GuideView.tsx @@ -1,6 +1,5 @@ import { useEffect, useMemo, useState } from "react"; import { useParams, Link } from "react-router-dom"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import Seo from "@/components/Seo"; @@ -98,7 +97,6 @@ export default function GuideView() { ]} /> -
diff --git a/src/pages/Guides.tsx b/src/pages/Guides.tsx index 053caeab..a7f7d1ab 100644 --- a/src/pages/Guides.tsx +++ b/src/pages/Guides.tsx @@ -1,5 +1,4 @@ import { useState, useEffect } from "react"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { IconBook } from "@tabler/icons-react"; import { @@ -144,7 +143,6 @@ const GuidesPage = () => { /> -
diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index ba61e95b..95647f4f 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -1,7 +1,6 @@ import { motion } from 'framer-motion'; import Seo from '@/components/Seo'; import { softwareApplicationSchema } from '@/lib/structuredData'; -import Navbar from '@/components/Navbar'; import Hero from '@/components/Hero'; import TrustBar from '@/components/TrustBar'; import PopularTools from '@/components/PopularTools'; @@ -33,7 +32,6 @@ const Index = () => { image: "/ogimg.png", })} /> -
{ return
{record?.sourceLabel || 'Check result'} - Looney -
Back to checks diff --git a/src/pages/ManageCreatorPacksPage.tsx b/src/pages/ManageCreatorPacksPage.tsx index 8951c7ee..fd5d5ab6 100644 --- a/src/pages/ManageCreatorPacksPage.tsx +++ b/src/pages/ManageCreatorPacksPage.tsx @@ -5,7 +5,6 @@ import { IconArrowLeft, IconEdit, IconTrash, IconExternalLink, IconLoader2, Icon import { useCreatorPacks, CreatorPack } from '@/hooks/useCreatorPacks'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Helmet } from 'react-helmet-async'; import { toast } from 'sonner'; @@ -54,7 +53,6 @@ const ManageCreatorPacksPage = () => { Manage My Creator Packs | RenderDragon -
diff --git a/src/pages/MusicCopyright.tsx b/src/pages/MusicCopyright.tsx index 33bc43f8..84741925 100644 --- a/src/pages/MusicCopyright.tsx +++ b/src/pages/MusicCopyright.tsx @@ -1,6 +1,5 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import LooneyCheckForm from '@/components/LooneyCheckForm'; import LooneyHistorySection from '@/components/LooneyHistorySection'; @@ -32,7 +31,6 @@ const MusicCopyright = () => { category: "UtilitiesApplication", })} /> -

Looney Checks

Research music licensing signals before you publish. Check a Spotify track, catalog music, or an audio file you upload yourself.

diff --git a/src/pages/NativeApplication.tsx b/src/pages/NativeApplication.tsx index 28572691..0d06e2bb 100644 --- a/src/pages/NativeApplication.tsx +++ b/src/pages/NativeApplication.tsx @@ -1,6 +1,5 @@ import { motion } from 'framer-motion'; import { IconDownload, IconClipboard, IconLayout, IconBackground, IconBolt, IconExternalLink, IconBrandGithub } from '@tabler/icons-react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; @@ -64,7 +63,6 @@ const NativeApplication = () => { -
diff --git a/src/pages/NotFound.tsx b/src/pages/NotFound.tsx index 9d754032..410c949f 100644 --- a/src/pages/NotFound.tsx +++ b/src/pages/NotFound.tsx @@ -4,7 +4,6 @@ import { useEffect } from "react"; import { Link } from "react-router-dom"; import { motion } from "framer-motion"; import { IconHome, IconCompass, IconTool, IconPick } from "@tabler/icons-react"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; @@ -46,7 +45,6 @@ const NotFound = () => { return (
-
{ })} /> -
diff --git a/src/pages/Privacy.tsx b/src/pages/Privacy.tsx index 7969709f..fa6ee700 100644 --- a/src/pages/Privacy.tsx +++ b/src/pages/Privacy.tsx @@ -1,6 +1,5 @@ import { useEffect } from 'react'; import { Helmet } from 'react-helmet-async'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; @@ -20,7 +19,6 @@ const Privacy = () => { -
diff --git a/src/pages/Profile.tsx b/src/pages/Profile.tsx index 4161d506..1324ea0e 100644 --- a/src/pages/Profile.tsx +++ b/src/pages/Profile.tsx @@ -1,6 +1,5 @@ import React, { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import { Helmet } from "react-helmet-async"; import { supabase } from "@/integrations/supabase/client"; diff --git a/src/pages/Renderbot.tsx b/src/pages/Renderbot.tsx index 2b63372e..83a3f0b7 100644 --- a/src/pages/Renderbot.tsx +++ b/src/pages/Renderbot.tsx @@ -1,6 +1,5 @@ import { motion } from 'framer-motion'; import { IconBrandDiscord } from '@tabler/icons-react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Helmet } from 'react-helmet-async'; @@ -15,7 +14,6 @@ const Renderbot = () => ( -
diff --git a/src/pages/ResourcesHub.tsx b/src/pages/ResourcesHub.tsx index 862f9831..10c20ffe 100644 --- a/src/pages/ResourcesHub.tsx +++ b/src/pages/ResourcesHub.tsx @@ -1,6 +1,5 @@ import { useRef, useEffect, useState, useCallback, lazy, Suspense, useMemo } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { useIsMobile } from '@/hooks/use-mobile'; import { toast } from 'sonner'; @@ -422,7 +421,6 @@ const ResourcesHub = () => { -
diff --git a/src/pages/Showcase.tsx b/src/pages/Showcase.tsx index 8c8a1765..4e7f7ec1 100644 --- a/src/pages/Showcase.tsx +++ b/src/pages/Showcase.tsx @@ -19,7 +19,6 @@ import { Textarea } from "@/components/ui/textarea"; import { IconCode, IconDownload, IconFileText, IconLoader2, IconPlus, IconSearch, IconTypography } from '@tabler/icons-react'; import { cn } from "@/lib/utils"; import { supabase } from "@/integrations/supabase/client"; -import Navbar from "@/components/Navbar"; import Footer from "@/components/Footer"; import AuthDialog from "@/components/auth/AuthDialog"; import AudioPlayer from "@/components/AudioPlayer"; @@ -378,7 +377,6 @@ const ShowcasePage: React.FC = () => { return (
- {/* pad top to avoid content under fixed navbar */}
diff --git a/src/pages/TOS.tsx b/src/pages/TOS.tsx index 90b90bb8..005c5b36 100644 --- a/src/pages/TOS.tsx +++ b/src/pages/TOS.tsx @@ -1,6 +1,5 @@ import { useEffect } from 'react'; import { Helmet } from 'react-helmet-async'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; @@ -19,7 +18,6 @@ const TOS = () => { -
diff --git a/src/pages/TextGenerator.tsx b/src/pages/TextGenerator.tsx index 8c55c44d..e7c19708 100644 --- a/src/pages/TextGenerator.tsx +++ b/src/pages/TextGenerator.tsx @@ -1,7 +1,6 @@ import { useState, useEffect, useRef } from 'react'; import Seo from '@/components/Seo'; import { softwareApplicationSchema } from '@/lib/structuredData'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -122,7 +121,6 @@ const TextGenerator = () => { })} /> -
diff --git a/src/pages/Utilities.tsx b/src/pages/Utilities.tsx index dd7d82a7..dbd45c54 100644 --- a/src/pages/Utilities.tsx +++ b/src/pages/Utilities.tsx @@ -1,7 +1,6 @@ import { useState } from 'react'; import { motion } from 'framer-motion'; import { IconArrowUpRight, IconPencil, IconMovie, IconCode, IconDeviceGamepad2 } from '@tabler/icons-react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { Button } from '@/components/ui/button'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; @@ -193,7 +192,6 @@ const Utils = () => { -
diff --git a/src/pages/YouTubeDownloader.tsx b/src/pages/YouTubeDownloader.tsx index 7ee787f4..68629df7 100644 --- a/src/pages/YouTubeDownloader.tsx +++ b/src/pages/YouTubeDownloader.tsx @@ -1,5 +1,4 @@ import { useState, useEffect } from 'react'; -import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { IconDownload, IconAlertCircle, IconRefresh, IconBrandYoutube, IconInfoCircle } from '@tabler/icons-react'; @@ -273,7 +272,6 @@ const YouTubeDownloader: React.FC = () => { category: "UtilitiesApplication", })} /> -