+
+
Rank & Address
-
-
Score
-
Staked
+
+ Transfers
+ NFTs
{/* Scrollable Content */}
- {extendedData.map((entry, index) => (
+ {leaderboardData.map((entry, index) => (
-
-
{entry.rank}
+
+ {entry.rank}
-
{entry.address}
+
+ {entry.address.slice(0, 6)}...{entry.address.slice(-4)}
+
-
-
- {entry.score}
-
-
- {entry.eth} ETH
-
+
+
+ {entry.count}
+
+
+ {entry.tokenIds.length}
+
@@ -112,6 +140,30 @@ export default function Leaderboard() {
+
+ {/* Stats Section */}
+
+
+
+
+ {leaderboardData.length}
+
+
Total Traders
+
+
+
+ {data.transfers.length}
+
+
Total Transfers
+
+
+
+ {new Set(data.transfers.map((t: Transfer) => t.tokenId)).size}
+
+
Unique NFTs
+
+
+
);
-}
+}
\ No newline at end of file
diff --git a/packages/nextjs/app/leaderboard/queries.ts b/packages/nextjs/app/leaderboard/queries.ts
index 9585d19..a959ffb 100644
--- a/packages/nextjs/app/leaderboard/queries.ts
+++ b/packages/nextjs/app/leaderboard/queries.ts
@@ -2,10 +2,14 @@ import { gql } from "@apollo/client";
export const LEADERBOARD = gql`
query LeaderBoard {
- userStakes(orderBy: totalStaked, orderDirection: desc) {
- totalStaked
- user
+ transfers {
+ blockTimestamp
+ blockNumber
+ from
id
+ tokenId
+ transactionHash
+ to
}
}
-`;
+`;
\ No newline at end of file
diff --git a/packages/nextjs/tailwind.config.js b/packages/nextjs/tailwind.config.js
index 8be8fb1..d091dca 100644
--- a/packages/nextjs/tailwind.config.js
+++ b/packages/nextjs/tailwind.config.js
@@ -6,56 +6,40 @@ module.exports = {
"./utils/**/*.{js,ts,jsx,tsx}",
],
plugins: [require("daisyui")],
- darkTheme: "dark",
- darkMode: ["selector", "[data-theme='dark']"],
+ darkTheme: "fitpal",
+ darkMode: ["selector", "[data-theme='fitpal']"],
daisyui: {
themes: [
{
- light: {
- primary: '#000001',
- 'primary-content': '#fbf8fe',
- secondary: '#2d2c2e',
- 'secondary-content': '#fbf8fe',
- accent: '#b6b7bb',
- 'accent-content': '#000001',
- neutral: '#a3a2a7',
- 'neutral-content': '#fbf8fe',
- 'base-100': '#fbf8fe',
- 'base-200': '#2d2c2e',
- 'base-300': '#000001',
- 'base-content': '#000001',
- info: '#b6b7bb',
- success: '#34EEB6',
- warning: '#FFCF72',
- error: '#FF8863',
- '--rounded-btn': '9999rem',
- '.tooltip': { '--tooltip-tail': '6px' },
- '.link': { textUnderlineOffset: '2px' },
- '.link:hover': { opacity: '80%' }
- },
- },
- {
- dark: {
- primary: '#000001', // Full Black
- 'primary-content': '#fbf8fe', // White
- secondary: '#2d2c2e', // Med Grey
- 'secondary-content': '#fbf8fe', // White
- accent: '#b6b7bb', // Inner Grey
- 'accent-content': '#fbf8fe', // White
- neutral: '#a3a2a7', // Mid Grey
- 'neutral-content': '#fbf8fe', // White
- 'base-100': '#2d2c2e', // Med Grey
- 'base-200': '#000001', // Full Black
- 'base-300': '#2d2c2e', // Med Grey
- 'base-content': '#fbf8fe', // White
- info: '#b6b7bb', // Inner Grey
- success: '#34EEB6',
- warning: '#FFCF72',
- error: '#FF8863',
- '--rounded-btn': '9999rem',
- '.tooltip': { '--tooltip-tail': '6px', '--tooltip-color': 'oklch(var(--p))' },
- '.link': { textUnderlineOffset: '2px' },
- '.link:hover': { opacity: '80%' }
+ fitpal: {
+ primary: '#9FFF5B', // Neon Green
+ 'primary-content': '#000000',
+ secondary: '#1C1C1E', // Dark Grey
+ 'secondary-content': '#ffffff',
+ accent: '#9FFF5B', // Neon Green
+ 'accent-content': '#000000',
+ neutral: '#2C2C2E', // Medium Grey
+ 'neutral-content': '#ffffff',
+ 'base-100': '#000000', // Pure Black
+ 'base-200': '#1C1C1E', // Dark Grey
+ 'base-300': '#2C2C2E', // Medium Grey
+ 'base-content': '#ffffff',
+ info: '#9FFF5B', // Neon Green
+ success: '#9FFF5B', // Neon Green
+ warning: '#FFD426', // Warning Yellow
+ error: '#FF4545', // Error Red
+
+ // Custom properties
+ '--rounded-btn': '0.75rem',
+ '--border-btn': '1px',
+ '.glass': {
+ 'background': 'rgba(28,28,30,0.8)',
+ 'backdrop-filter': 'blur(8px)',
+ },
+ '.chart-line': {
+ 'stroke': '#9FFF5B',
+ 'filter': 'drop-shadow(0 0 2px #9FFF5B)',
+ },
},
},
],
@@ -63,14 +47,18 @@ module.exports = {
theme: {
extend: {
colors: {
- 'full-black': '#000001',
- 'med-grey': '#2d2c2e',
- 'inner-grey': '#b6b7bb',
- 'mid-grey': '#a3a2a7',
- 'pure-white': '#fbf8fe',
+ 'neon-green': '#9FFF5B',
+ 'dark-surface': '#1C1C1E',
+ 'darker-surface': '#000000',
+ 'medium-surface': '#2C2C2E',
+ },
+ boxShadow: {
+ 'neon-glow': '0 0 10px rgba(159, 255, 91, 0.3)',
+ 'neon-glow-strong': '0 0 15px rgba(159, 255, 91, 0.5)',
+ },
+ backgroundImage: {
+ 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
},
- boxShadow: { center: '0 0 12px -2px rgb(0 0 0 / 0.05)' },
- animation: { 'pulse-fast': 'pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite' }
},
},
};
\ No newline at end of file