Skip to content
View nguyensydo's full-sized avatar
🏠
Làm việc tại nhà
🏠
Làm việc tại nhà

Block or report nguyensydo

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nguyensydo/README.md

import { useState, useEffect } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Skeleton } from "@/components/ui/skeleton"; import { LineChart, Line, XAxis, YAxis, Tooltip, ResponsiveContainer } from "recharts";

const airdropData = [ { project: "zkLink Nova", status: "Claimed", date: "2025-04-10", token: "ZKL", amount: 120, valueUSD: 45, txUrl: "https://zklinkscan.com/tx/0xabc..." }, { project: "Fuel", status: "Task Done", date: "2025-04-12", token: null, amount: null, valueUSD: null, txUrl: null }, { project: "ZetaChain", status: "Claimed", date: "2025-04-08", token: "ZETA", amount: 350, valueUSD: 90, txUrl: "https://zetaexplorer.io/tx/0xdef..." }, { project: "Omni Network", status: "Upcoming Claim", date: "2025-04-14", token: null, amount: null, valueUSD: null, txUrl: null }, { project: "LayerZero", status: "Task Done", date: "2025-04-13", token: null, amount: null, valueUSD: null, txUrl: null } ];

const chartData = airdropData .filter(a => a.valueUSD) .map((a) => ({ date: a.date, value: a.valueUSD }));

export default function AirdropDashboard() { const [airdrops, setAirdrops] = useState([]);

useEffect(() => { setTimeout(() => { setAirdrops(airdropData); }, 1000); }, []);

const totalValue = airdrops.reduce((sum, a) => sum + (a.valueUSD || 0), 0); const claimedTokens = airdrops.filter(a => a.token); const tokenSummary = claimedTokens.reduce((summary, a) => { if (!summary[a.token]) { summary[a.token] = 0; } summary[a.token] += a.amount; return summary; }, {});

return (

📈 Tổng giá trị Airdrop nhận được theo thời gian

  <div className="bg-white dark:bg-gray-800 p-4 rounded-2xl shadow space-y-2">
    <h2 className="text-lg font-bold">💰 Tổng giá trị ví Airdrop đã nhận: <span className="text-green-400">${totalValue}</span></h2>
    <h3 className="text-md font-semibold mt-2">📦 Token đã nhận về ví:</h3>
    <ul className="list-disc list-inside text-sm">
      {Object.entries(tokenSummary).map(([token, amount]) => (
        <li key={token}><strong>{token}</strong>: {amount}</li>
      ))}
    </ul>
  </div>

  <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
    {airdrops.length === 0 ? (
      <Skeleton className="h-40 w-full" />
    ) : (
      airdrops.map((airdrop, index) => (
        <Card key={index} className="rounded-2xl shadow-md bg-white dark:bg-gray-800">
          <CardContent className="p-4">
            <div className="flex items-center justify-between mb-2">
              <h2 className="text-xl font-semibold">{airdrop.project}</h2>
              <Badge variant="outline">{airdrop.status}</Badge>
            </div>
            <p className="text-sm text-muted-foreground dark:text-gray-400">Ngày: {airdrop.date}</p>
            {airdrop.token ? (
              <>
                <p className="mt-2 text-sm">Token: <strong>{airdrop.token}</strong></p>
                <p className="text-sm">Số lượng: {airdrop.amount}</p>
                <p className="text-sm">Giá trị (ước tính): ${airdrop.valueUSD}</p>
                <a href={airdrop.txUrl} target="_blank" className="text-blue-500 underline text-sm">Xem giao dịch</a>
              </>
            ) : (
              <p className="mt-2 text-sm italic text-yellow-500">Đang chờ nhận token...</p>
            )}
          </CardContent>
        </Card>
      ))
    )}
  </div>
</div>

); }

Pinned Loading

  1. airdrop-dashboard airdrop-dashboard Public

    JavaScript

  2. bitcoin bitcoin Public

    Forked from bitcoin/bitcoin

    Bitcoin Core integration/staging tree

    C++