diff --git a/src/App.tsx b/src/App.tsx
index 8687a45..c9f902d 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -12,7 +12,14 @@ const router = createBrowserRouter([
function App() {
return (
<>
-
+
>
);
diff --git a/src/components/common/TransactionFailureDrawer.tsx b/src/components/common/TransactionFailureDrawer.tsx
index 80dff8e..4896a14 100644
--- a/src/components/common/TransactionFailureDrawer.tsx
+++ b/src/components/common/TransactionFailureDrawer.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
import {
Dialog,
DialogContent,
@@ -7,7 +7,7 @@ import {
DialogFooter,
} from '@/components/ui/dialog';
import { Button } from '@/components/ui/button';
-import { AlertCircle, Copy } from 'lucide-react';
+import { AlertCircle, Copy, Check } from 'lucide-react';
import toast from 'react-hot-toast';
import { formatAbsoluteDateTime, formatRelativeTime } from '@/utils/time.utils';
@@ -34,9 +34,13 @@ const TransactionFailureDrawer: React.FC = ({
onRetry,
onDismiss,
}) => {
- const copyToClipboard = (text: string) => {
+ const [copiedField, setCopiedField] = useState<'errorCode' | 'txHash' | null>(null);
+
+ const copyToClipboard = (text: string, field: 'errorCode' | 'txHash') => {
navigator.clipboard.writeText(text);
toast.success('Copied to clipboard');
+ setCopiedField(field);
+ setTimeout(() => setCopiedField(null), 2000);
};
const handleClose = () => {
@@ -100,14 +104,26 @@ const TransactionFailureDrawer: React.FC = ({
+
+ {copiedField === 'errorCode' ? 'Error code copied to clipboard' : ''}
+
)}
@@ -122,14 +138,26 @@ const TransactionFailureDrawer: React.FC = ({
+
+ {copiedField === 'txHash' ? 'Transaction hash copied to clipboard' : ''}
+
)}
diff --git a/src/components/common/TransactionHashRow.tsx b/src/components/common/TransactionHashRow.tsx
index d51a12d..c4d67c0 100644
--- a/src/components/common/TransactionHashRow.tsx
+++ b/src/components/common/TransactionHashRow.tsx
@@ -46,14 +46,22 @@ const TransactionHashRow: React.FC = ({
+
+ {copied ? 'Transaction hash copied to clipboard' : ''}
+
{explorerUrl && (
= ({
>
{truncate(address, prefixChars, suffixChars)}
{copyable && (
-
+ <>
+
+
+ {copied ? 'Address copied to clipboard' : ''}
+
+ >
)}
);