From b383fd495baa8224f7fc342e073b991d416c302b Mon Sep 17 00:00:00 2001 From: eshanized Date: Thu, 16 Jan 2025 06:48:31 +0530 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat:=20add=20a=20toast=20notifi?= =?UTF-8?q?cation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/features/Toast.tsx | 28 ++++++++++++++++++++++++++++ src/components/features/ToolCard.tsx | 15 ++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/components/features/Toast.tsx diff --git a/src/components/features/Toast.tsx b/src/components/features/Toast.tsx new file mode 100644 index 00000000..062ad914 --- /dev/null +++ b/src/components/features/Toast.tsx @@ -0,0 +1,28 @@ +// Toast.tsx +import { motion } from 'framer-motion'; + +interface ToastProps { + message: string; + onClose: () => void; +} + +export const Toast = ({ message, onClose }: ToastProps) => ( + +
+ {message} +
+ +
+); diff --git a/src/components/features/ToolCard.tsx b/src/components/features/ToolCard.tsx index c387c5ad..c5e8b1fb 100644 --- a/src/components/features/ToolCard.tsx +++ b/src/components/features/ToolCard.tsx @@ -1,6 +1,7 @@ import { motion } from 'framer-motion'; import { Terminal, Clipboard } from 'lucide-react'; import { useState } from 'react'; +import { Toast } from './Toast'; // Make sure to import the Toast component interface ToolCardProps { name: string; @@ -11,12 +12,17 @@ interface ToolCardProps { export function ToolCard({ name, description, category, command }: ToolCardProps) { const [copied, setCopied] = useState(false); + const [showToast, setShowToast] = useState(false); const handleCopyClick = () => { navigator.clipboard.writeText(command) .then(() => { setCopied(true); - setTimeout(() => setCopied(false), 2000); // Reset copied status after 2 seconds + setShowToast(true); + setTimeout(() => { + setCopied(false); + setShowToast(false); + }, 3000); // Hide toast after 3 seconds }) .catch((error) => console.error('Failed to copy: ', error)); }; @@ -55,6 +61,13 @@ export function ToolCard({ name, description, category, command }: ToolCardProps + + {showToast && ( + setShowToast(false)} + /> + )} ); }