diff --git a/frontend/bun.lockb b/frontend/bun.lockb index 3e04e77..087182a 100755 Binary files a/frontend/bun.lockb and b/frontend/bun.lockb differ diff --git a/frontend/package.json b/frontend/package.json index cf44602..c3727f8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,6 +12,7 @@ "react-dom": "^18.3.1", "react-router-dom": "^6.26.0", "react-scripts": "5.0.1", + "react-type-animation": "^3.2.0", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/frontend/src/components/DownloadForm.js b/frontend/src/components/DownloadForm.js index 21025e0..ea5dffd 100644 --- a/frontend/src/components/DownloadForm.js +++ b/frontend/src/components/DownloadForm.js @@ -5,7 +5,7 @@ import Confetti from "react-confetti"; const DownloadForm = () => { const [url, setUrl] = useState(""); - const [quality, setQuality] = useState("480p"); + const [quality, setQuality] = useState("360p"); const [message, setMessage] = useState(""); const [progress, setProgress] = useState(0); const [isProcessing, setIsProcessing] = useState(false); @@ -96,43 +96,52 @@ const DownloadForm = () => { return (
-
- - setUrl(e.target.value)} - className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm" - placeholder="Enter video URL" - /> +
+
+ + setUrl(e.target.value)} + className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm" + placeholder="Enter video URL" + /> +
+
+ + +
-
- - -
-
+ +
0 || (isProcessing && progress === 0) + ? "border border-gray-300" + : "" + }`} + >
{
+
{!isProcessing && !message.startsWith("Downloading") && ( )} @@ -184,6 +195,23 @@ const DownloadForm = () => { transform: translateX(100%); } } + + @keyframes gradientFlow { + 0% { + background-position: 0% 0%; + } + 50% { + background-position: 100% 100%; + } + 100% { + background-position: 0% 0%; + } + } + + .animate-gradient { + background-size: 300% 300%; + animation: gradientFlow 15s ease infinite; + } `}
); diff --git a/frontend/src/components/Header.js b/frontend/src/components/Header.js index 88d4d2d..abea001 100644 --- a/frontend/src/components/Header.js +++ b/frontend/src/components/Header.js @@ -2,8 +2,26 @@ import React from "react"; const Header = () => { return ( -
+

DownLink

+
); }; diff --git a/frontend/src/components/Home.js b/frontend/src/components/Home.js index 8e7fbb7..a7f36f9 100644 --- a/frontend/src/components/Home.js +++ b/frontend/src/components/Home.js @@ -1,13 +1,30 @@ +"use client"; import React from "react"; import DownloadForm from "./DownloadForm"; +import { TypeAnimation } from "react-type-animation"; const Home = () => { return ( -
-

- Download YouTube Videos -

- +
+
+

+ +

+ +
); };