diff --git a/web/leaderboard/.eslintrc.json b/web/leaderboard/.eslintrc.json
deleted file mode 100644
index bffb357a7..000000000
--- a/web/leaderboard/.eslintrc.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": "next/core-web-vitals"
-}
diff --git a/web/leaderboard/.gitignore b/web/leaderboard/.gitignore
deleted file mode 100644
index 289440abd..000000000
--- a/web/leaderboard/.gitignore
+++ /dev/null
@@ -1,42 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# local env files
-.env*.local
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
-
-# Sentry Config File
-.sentryclirc
-
-# Sentry Config File
-.sentryclirc
diff --git a/web/leaderboard/Dockerfile.frontend b/web/leaderboard/Dockerfile.frontend
deleted file mode 100644
index 63ff1bf75..000000000
--- a/web/leaderboard/Dockerfile.frontend
+++ /dev/null
@@ -1,38 +0,0 @@
-
-FROM fluidity/build-web-container:latest AS build
-
-WORKDIR /usr/local/src/fluidity/web
-
-ENV PRODUCTION ${PRODUCTION}
-
-ARG CI
-
-ARG GITHUB_TOKEN
-
-ENV CI $CI
-
-ENV PATH /app/node_modules.bin:$PATH
-
-COPY . ./
-
-RUN yarn
-
-ARG FLU_SENTRY_DSN
-
-WORKDIR /usr/local/src/fluidity/web/leaderboard
-
-RUN make frontend
-
-FROM fluidity/runtime-web-container:latest
-
-WORKDIR /usr/local/src/fluidity/web
-
-COPY --from=build /usr/local/src/fluidity/web .
-
-WORKDIR /usr/local/src/fluidity/web/leaderboard
-
-EXPOSE 3000
-
-RUN mkdir .next && touch .next/BUILD_ID && echo "999" > .next/BUILD_ID
-
-CMD ["yarn", "start"]
diff --git a/web/leaderboard/Makefile b/web/leaderboard/Makefile
deleted file mode 100644
index 83242a782..000000000
--- a/web/leaderboard/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-
-REPO := leaderboard
-
-FRONTEND_SRC_DIR := src
-
-FRONTEND_SRC_TS_DIR := ${FRONTEND_SRC_DIR}
-FRONTEND_SRC_SASS_DIR := ${FRONTEND_SRC_DIR}/styles
-
-FRONTEND_SRC_TS := $(shell find ${FRONTEND_SRC_TS_DIR} -name '*ts*')
-FRONTEND_SRC_SASS := ${FRONTEND_SRC_SASS_DIR}/config.scss
-
-FRONTEND_SRC := ${FRONTEND_SRC_TS} ${FRONTEND_SRC_SASS}
-
-include ../../web.mk
-
-NEXTJS_BUILD := cd .. && turbo build --filter website
-
-nextjs:
- ${NEXTJS_BUILD}
-
-${FRONTEND_BUILD}: nextjs
- @touch ${FRONTEND_BUILD}
-
-# No the double dot is not a typo. Turbo builds are from the monorepo root.
-docker-frontend: ${FRONTEND_SRC}
- @${DOCKER_BUILD} \
- ${DOCKERFLAGS} \
- ${DOCKER_BUILD_ARGS} \
- -t "${ORG_ROOT}/${REPO}-frontend" \
- -f Dockerfile.frontend \
- ..
-
- @touch docker-frontend
-
-run-docker: ${FILES} docker
- @${DOCKER} run ${DOCKERFLAGS} -i -p 80:80 ${REPO}
-
-clean:
- rm -f docker-backend docker-frontend
diff --git a/web/leaderboard/README.md b/web/leaderboard/README.md
deleted file mode 100644
index 55a976585..000000000
--- a/web/leaderboard/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-This is a fUSDC leaderboard ranking project. Receive diffretent data - 24Hours and AllTime.
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-yarn dev
-```
-
-Open [http://localhost:30001](http://localhost:3001) with your browser to see the result.
diff --git a/web/leaderboard/cypress.config.ts b/web/leaderboard/cypress.config.ts
deleted file mode 100644
index e6b8b76bf..000000000
--- a/web/leaderboard/cypress.config.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { defineConfig } from "cypress";
-
-export default defineConfig({
- component: {
- devServer: {
- framework: "next",
- bundler: "webpack",
- },
- },
-
- e2e: {
- setupNodeEvents(on, config) {
- // implement node event listeners here
- },
- },
-});
diff --git a/web/leaderboard/cypress/e2e/page.cy.ts b/web/leaderboard/cypress/e2e/page.cy.ts
deleted file mode 100644
index 4f8917945..000000000
--- a/web/leaderboard/cypress/e2e/page.cy.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import type { NextApiRequest, NextApiResponse } from "next";
-
-type User = {
- address: string;
- number_of_transactions: number;
- rank: number;
- volume: number;
- yield_earned: number;
-};
-
-const users = [
- {
- address: "0x21f2275f26611fba1d486153b5d2d78164568435",
- number_of_transactions: 21898,
- rank: 2388,
- volume: 255.13345799999914,
- yield_earned: 18.985949367059586,
- },
- {
- address: "0x1cb94adfd3314d48ca8145b2c6983419257c0486",
- number_of_transactions: 12520,
- rank: 3682,
- volume: 894699.873285003,
- yield_earned: 482.0982366909158,
- },
- {
- address: "0xe776ffdab7b40147fc0b8e93676eb444fb3650b6",
- number_of_transactions: 7135,
- rank: 4260,
- volume: 240194.4372060101,
- yield_earned: 920.81961067,
- },
-];
-
-describe("Home Page Tests", () => {
- beforeEach(() => {
- cy.visit("http://localhost:3001");
- });
-
- it("loads the main elements on the page", () => {
- cy.get("main").should("exist");
- cy.get('[class*="header"]').should("exist");
- cy.contains("h1", "Fluidity Leaderboard").should("exist");
- });
-
- it("change filters on click all time", () => {
- cy.get("[data-cy=all-btn]").click();
- cy.get("[data-cy=title]").contains("ALL TIME");
- });
-
- it("open Connect Wallet Modal", () => {
- cy.get('[class*="connected_wallet"]').should("exist");
- cy.get('[class*="connected_wallet"]').click();
- cy.wait(10000);
- cy.get('[class*="connect-wallet-outer-container"]').should("exist");
- });
-
- it("Confirms the number of adresses in the table", () => {
- expect(users).to.be.an("array");
-
- users.forEach((user) => {
- expect(user).to.have.all.keys(
- "address",
- "number_of_transactions",
- "rank",
- "volume",
- "yield_earned"
- );
- expect(user.address).to.be.a("string");
- expect(user.number_of_transactions).to.be.a("number");
- expect(user.rank).to.be.a("number");
- expect(user.volume).to.be.a("number");
- expect(user.yield_earned).to.be.a("number");
- });
- });
-});
diff --git a/web/leaderboard/cypress/e2e/profile.cy.ts b/web/leaderboard/cypress/e2e/profile.cy.ts
deleted file mode 100644
index 4d4998bd4..000000000
--- a/web/leaderboard/cypress/e2e/profile.cy.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-describe("Connect Wallet Modal Open Test", () => {
- beforeEach(() => {
- cy.visit("http://localhost:3001");
- });
-
- it("open Connect Wallet Modal", () => {
- cy.get('[class*="connected_wallet"]').should("exist");
- cy.get('[class*="connected_wallet"]').click();
- cy.wait(10000);
- cy.get('[class*="connect-wallet-outer-container"]').should("exist");
- });
-});
diff --git a/web/leaderboard/cypress/e2e/table.cy.ts b/web/leaderboard/cypress/e2e/table.cy.ts
deleted file mode 100644
index 24dc3c04c..000000000
--- a/web/leaderboard/cypress/e2e/table.cy.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-describe("Table Component E2E Tests", () => {
- beforeEach(() => {
- cy.visit("http://localhost:3001");
- });
-
- it("should display the correct table headings", () => {
- const headings = [
- "RANK",
- "USER",
- "#TX",
- "VOLUME (USD)",
- "YIELD EARNED (USD)",
- ];
- headings.forEach((heading) => {
- cy.contains("th", heading).should("be.visible");
- });
- });
-
- it("should display data rows correctly when data is loaded", () => {
- cy.get('[class*="page_table_row"]').should("have.length.at.least", 1);
- });
-
- it("should show a loading state when data is being fetched", () => {
- cy.contains("Fetching table data...").should("be.visible");
- });
-});
diff --git a/web/leaderboard/cypress/support/commands.ts b/web/leaderboard/cypress/support/commands.ts
deleted file mode 100644
index e69de29bb..000000000
diff --git a/web/leaderboard/cypress/support/component-index.html b/web/leaderboard/cypress/support/component-index.html
deleted file mode 100644
index 3e16e9b07..000000000
--- a/web/leaderboard/cypress/support/component-index.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
- Components App
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/web/leaderboard/cypress/support/component.ts b/web/leaderboard/cypress/support/component.ts
deleted file mode 100644
index 37f59edbe..000000000
--- a/web/leaderboard/cypress/support/component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// ***********************************************************
-// This example support/component.ts is processed and
-// loaded automatically before your test files.
-//
-// This is a great place to put global configuration and
-// behavior that modifies Cypress.
-//
-// You can change the location of this file or turn off
-// automatically serving support files with the
-// 'supportFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/configuration
-// ***********************************************************
-
-// Import commands.js using ES2015 syntax:
-import './commands'
-
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
-
-import { mount } from 'cypress/react18'
-
-// Augment the Cypress namespace to include type definitions for
-// your custom command.
-// Alternatively, can be defined in cypress/support/component.d.ts
-// with a at the top of your spec.
-declare global {
- namespace Cypress {
- interface Chainable {
- mount: typeof mount
- }
- }
-}
-
-Cypress.Commands.add('mount', mount)
-
-// Example use:
-// cy.mount( )
\ No newline at end of file
diff --git a/web/leaderboard/cypress/support/e2e.ts b/web/leaderboard/cypress/support/e2e.ts
deleted file mode 100644
index f80f74f8e..000000000
--- a/web/leaderboard/cypress/support/e2e.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// ***********************************************************
-// This example support/e2e.ts is processed and
-// loaded automatically before your test files.
-//
-// This is a great place to put global configuration and
-// behavior that modifies Cypress.
-//
-// You can change the location of this file or turn off
-// automatically serving support files with the
-// 'supportFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/configuration
-// ***********************************************************
-
-// Import commands.js using ES2015 syntax:
-import './commands'
-
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
\ No newline at end of file
diff --git a/web/leaderboard/next-env.d.ts b/web/leaderboard/next-env.d.ts
deleted file mode 100644
index fd36f9494..000000000
--- a/web/leaderboard/next-env.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-///
-///
-///
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/web/leaderboard/next.config.js b/web/leaderboard/next.config.js
deleted file mode 100644
index 80dc3d24e..000000000
--- a/web/leaderboard/next.config.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {};
-
-module.exports = nextConfig;
-
-
-// Injected content via Sentry wizard below
-
-const { withSentryConfig } = require("@sentry/nextjs");
-
-module.exports = withSentryConfig(
- module.exports,
- {
- // For all available options, see:
- // https://github.com/getsentry/sentry-webpack-plugin#options
-
- // Suppresses source map uploading logs during build
- silent: true,
- org: "fluidity-money",
- project: "fluidity-money",
- },
- {
- // For all available options, see:
- // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
-
- // Upload a larger set of source maps for prettier stack traces (increases build time)
- widenClientFileUpload: true,
-
- // Transpiles SDK to be compatible with IE11 (increases bundle size)
- transpileClientSDK: true,
-
- // Routes browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers (increases server load)
- tunnelRoute: "/monitoring",
-
- // Hides source maps from generated client bundles
- hideSourceMaps: true,
-
- // Automatically tree-shake Sentry logger statements to reduce bundle size
- disableLogger: true,
-
- // Enables automatic instrumentation of Vercel Cron Monitors.
- // See the following for more information:
- // https://docs.sentry.io/product/crons/
- // https://vercel.com/docs/cron-jobs
- automaticVercelMonitors: true,
- }
-);
diff --git a/web/leaderboard/package.json b/web/leaderboard/package.json
deleted file mode 100644
index 6f9e7ce64..000000000
--- a/web/leaderboard/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "leaderboard",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "next lint"
- },
- "dependencies": {
- "@apollo/client": "^3.8.8",
- "@fluidity-money/surfing": "*",
- "@sentry/nextjs": "^7.93.0",
- "framer-motion": "^10.16.4",
- "graphql": "^16.8.1",
- "next": "14.1.1",
- "next-urql": "^5.0.2",
- "react": "^18",
- "react-dom": "^18",
- "urql": "^4.0.0",
- "viem": "^1.19.7",
- "wagmi": "^1.4.7"
- },
- "devDependencies": {
- "@types/cypress": "^1.1.3",
- "@types/node": "^20",
- "@types/react": "^18",
- "@types/react-dom": "^18",
- "cypress": "^13.6.1",
- "eslint": "^8",
- "eslint-config-next": "14.0.1",
- "typescript": "^5"
- },
- "browser": {
- "fs": false,
- "os": false,
- "path": false
- }
-}
diff --git a/web/leaderboard/public/checked.svg b/web/leaderboard/public/checked.svg
deleted file mode 100644
index 15a096397..000000000
--- a/web/leaderboard/public/checked.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c8f159a5401c8a1f03702e134bda02af0659b1232b51572f7aa369202959818f
-size 383
diff --git a/web/leaderboard/public/copyIconCircle.svg b/web/leaderboard/public/copyIconCircle.svg
deleted file mode 100644
index fa0bd695f..000000000
--- a/web/leaderboard/public/copyIconCircle.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4259503f608e3d679c5f35302a18f31ad7e012e77215b4d04944ef0aa1223213
-size 720
diff --git a/web/leaderboard/public/disconnectIcon.svg b/web/leaderboard/public/disconnectIcon.svg
deleted file mode 100644
index 48faa35dc..000000000
--- a/web/leaderboard/public/disconnectIcon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:289166032937ebe13fcb083753f720d6b462ab74e357eb15ffdfb62a5d347c50
-size 645
diff --git a/web/leaderboard/public/favicon.ico b/web/leaderboard/public/favicon.ico
deleted file mode 100644
index a498ee813..000000000
Binary files a/web/leaderboard/public/favicon.ico and /dev/null differ
diff --git a/web/leaderboard/public/manifest.json b/web/leaderboard/public/manifest.json
deleted file mode 100644
index 71254a1ac..000000000
--- a/web/leaderboard/public/manifest.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "icons": [
- {
- "src": "favicon.ico",
- "sizes": "64x64 32x32 24x24 16x16",
- "type": "image/x-icon"
- }
- ]
-}
diff --git a/web/leaderboard/public/socials/discord.svg b/web/leaderboard/public/socials/discord.svg
deleted file mode 100644
index 2c093d90f..000000000
--- a/web/leaderboard/public/socials/discord.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:802319ea264649eddcc459a4bdd0eda410d9f79c09fc94fed7a28efa0d27e305
-size 3127
diff --git a/web/leaderboard/public/socials/linkedin.svg b/web/leaderboard/public/socials/linkedin.svg
deleted file mode 100644
index 1fb0c4ea9..000000000
--- a/web/leaderboard/public/socials/linkedin.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69c1b097733b5bcf7dd0f35a218e754a22c612cd93edcf15efc25a9ecff06773
-size 514
diff --git a/web/leaderboard/public/socials/telegram.svg b/web/leaderboard/public/socials/telegram.svg
deleted file mode 100644
index 9b7edaa31..000000000
--- a/web/leaderboard/public/socials/telegram.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f841605ae5adccc3be61dd672629f13647170d16690e0d8ae1f46e28ac2f4871
-size 1250
diff --git a/web/leaderboard/public/socials/twitter.svg b/web/leaderboard/public/socials/twitter.svg
deleted file mode 100644
index f12b141df..000000000
--- a/web/leaderboard/public/socials/twitter.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69876bc90d945f48fe2e415c2b6d345b28be2c44e13c3514885deb6f2cd48fd4
-size 844
diff --git a/web/leaderboard/public/user.svg b/web/leaderboard/public/user.svg
deleted file mode 100644
index 5367b2045..000000000
--- a/web/leaderboard/public/user.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a4e70add6b77ebfc530b4bd9b14bec7ff37280119b884dc396b9552c419d20dc
-size 1150331
diff --git a/web/leaderboard/public/x.svg b/web/leaderboard/public/x.svg
deleted file mode 100644
index ddb3caa3a..000000000
--- a/web/leaderboard/public/x.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f54c97f8cac6d3daec848bd12df4d0f5becb9261216c734657927035775f4e35
-size 787
diff --git a/web/leaderboard/sentry.client.config.ts b/web/leaderboard/sentry.client.config.ts
deleted file mode 100644
index 64c547684..000000000
--- a/web/leaderboard/sentry.client.config.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file configures the initialization of Sentry on the client.
-// The config you add here will be used whenever a users loads a page in their browser.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-//
-
-import * as Sentry from "@sentry/nextjs";
-
-Sentry.init({
- dsn: process.env.FLU_SENTRY_DSN,
-
- // Adjust this value in production, or use tracesSampler for greater control
- tracesSampleRate: 1,
-
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-
- replaysOnErrorSampleRate: 1.0,
-
- // This sets the sample rate to be 10%. You may want this to be 100% while
- // in development and sample at a lower rate in production
- replaysSessionSampleRate: 0.1,
-
- // You can remove this option if you're not planning to use the Sentry Session Replay feature:
- integrations: [
- new Sentry.Replay({
- // Additional Replay configuration goes in here, for example:
- maskAllText: true,
- blockAllMedia: true,
- }),
- ],
-});
diff --git a/web/leaderboard/sentry.edge.config.ts b/web/leaderboard/sentry.edge.config.ts
deleted file mode 100644
index e96585f60..000000000
--- a/web/leaderboard/sentry.edge.config.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on).
-// The config you add here will be used whenever one of the edge features is loaded.
-// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from "@sentry/nextjs";
-
-Sentry.init({
- dsn: process.env.FLU_SENTRY_DSN,
-
- // Adjust this value in production, or use tracesSampler for greater control
- tracesSampleRate: 1,
-
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-});
diff --git a/web/leaderboard/sentry.server.config.ts b/web/leaderboard/sentry.server.config.ts
deleted file mode 100644
index 5d2d2cd99..000000000
--- a/web/leaderboard/sentry.server.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file configures the initialization of Sentry on the server.
-// The config you add here will be used whenever the server handles a request.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from "@sentry/nextjs";
-
-Sentry.init({
- dsn: process.env.FLU_SENTRY_DSN,
-
- // Adjust this value in production, or use tracesSampler for greater control
- tracesSampleRate: 1,
-
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-});
diff --git a/web/leaderboard/src/app/components/Card/Card.module.scss b/web/leaderboard/src/app/components/Card/Card.module.scss
deleted file mode 100644
index 34b6497f2..000000000
--- a/web/leaderboard/src/app/components/Card/Card.module.scss
+++ /dev/null
@@ -1,285 +0,0 @@
-$white-a40: rgba(255, 255, 255, 0.4);
-$white-a20: rgba(255, 255, 255, 0.2);
-$white-a10: rgba(255, 255, 255, 0.1);
-$white-a5: rgba(255, 255, 255, 0.05);
-$white: #ffffff;
-
-$holo: conic-gradient(
- from 209.59deg at 50% 50%,
- #f3b8d8 0deg,
- #b793e9 50.06deg,
- #9fd4f3 85.94deg,
- #ffd2c4 134.97deg,
- #fbf3f3 172.05deg,
- #d9abdf 200.75deg,
- #af9ce3 224.67deg,
- #aae4e1 259.36deg,
- #c6ead0 298.82deg,
- #ffffff 328.72deg,
- #fdb5e4 360deg
-);
-
-$holo-linear: linear-gradient(
- 90deg,
- #f3b8d8 0%,
- #b793e9 15.1%,
- #9fd4f3 26.04%,
- #ffd2c4 36.46%,
- #fbf3f3 46.88%,
- #d9abdf 57.29%,
- #af9ce3 72.4%,
- #aae4e1 85.42%,
- #c6ead0 93.23%,
- #fdb5e4 100%
-);
-
-$border: (
- "disabled": $white-a10,
- "default": $white-a20,
- "prominent": $white,
- "focus": $white-a40,
-);
-
-.card {
- display: flex;
- flex-direction: column;
- width: fit-content;
- height: fit-content;
- padding: 1em;
- box-sizing: border-box;
-
- &.shimmer {
- -webkit-mask: linear-gradient(
- -60deg,
- #000000 40%,
- rgba(0, 0, 0, 0.717),
- #000 60%
- )
- right/300% 100%;
- mask: linear-gradient(-60deg, #000000 40%, rgba(0, 0, 0, 0.715), #000 60%)
- right/300% 100%;
- background-repeat: no-repeat;
- animation: shimmer 5s infinite;
- background-color: black;
- }
-
- &.fill {
- width: 100%;
- }
-
- &.button {
- all: unset;
- font-size: 1em;
- cursor: pointer;
- display: flex;
- flex-direction: column;
- width: fit-content;
- height: fit-content;
- padding: 1em;
- }
-
- &.rounded {
- border-radius: 12px;
- }
-
- &[disabled] {
- cursor: not-allowed;
- border-color: map-get($border, "disabled");
- filter: grayscale(100%);
- }
-
- // Borders
- border-width: 0;
- border-style: none;
-
- &.solid {
- border-width: 1px;
- border-style: solid;
- }
-
- &.dashed {
- border-width: 1px;
- border-style: dashed;
- }
-
- // Colors
- &.gray {
- background-color: $white-a5;
- border-color: map-get($border, "default");
- }
-
- &.white {
- background-color: $white;
- border-color: $white;
- }
-
- &.holo {
- position: relative;
- border: none;
- overflow: hidden;
- background: $holo-linear;
- background-size: 1600px;
- animation: gradient 15s ease infinite;
-
- &.transparent {
- background: none;
-
- &::before {
- content: "";
- position: absolute;
- pointer-events: none;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- padding: 2px;
- background: $holo;
- -webkit-mask: linear-gradient(#fff 0 0) content-box,
- linear-gradient(#fff 0 0);
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
- -webkit-mask-composite: xor;
- mask-composite: exclude;
- }
-
- &.rounded {
- &::before {
- border-radius: 12px;
- }
- }
-
- &.dashed {
- &::before {
- border: 1px dashed black;
- padding: 0;
- }
- }
-
- &.none {
- &::before {
- border: 1px solid black;
- padding: 0;
- }
- }
- }
-
- &.frosted {
- background: rgba(255, 255, 255, 0.05);
- backdrop-filter: blur(50px);
- -webkit-backdrop-filter: blur(50px);
-
- &::before {
- content: "";
- position: absolute;
- pointer-events: none;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- padding: 1px;
- background: $holo;
- -webkit-mask: linear-gradient(#fff 0 0) content-box,
- linear-gradient(#fff 0 0);
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
- -webkit-mask-composite: xor;
- mask-composite: exclude;
- }
-
- &.rounded {
- &::before {
- border-radius: 12px;
- }
- }
-
- &.dashed {
- &::before {
- border: 1px dashed black;
- padding: 0;
- }
- }
-
- &.none {
- &::before {
- border: 1px solid black;
- padding: 0;
- }
- }
- }
- }
-
- // Backgrounds
- &.transparent {
- background-color: transparent;
- }
-
- &.dashed {
- border-style: dashed;
- }
-
- &.frosted {
- // background: rgba(255, 255, 255, 0.05);
- backdrop-filter: blur(50px);
- -webkit-backdrop-filter: blur(50px);
-
- // Override border styles
- &.dashed,
- &.solid,
- &.none {
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
- border-style: solid;
- border-color: rgba(255, 255, 255, 0.102);
- }
- }
-}
-
-@keyframes shimmer {
- 0%,
- 10% {
- -webkit-mask-position: right/300%;
- }
- 90%,
- 100% {
- -webkit-mask-position: -50%;
- }
-}
-
-@keyframes gradient {
- 0% {
- background-position: 0 0;
- }
- 50% {
- background-position: 600px 0;
- }
- 100% {
- background-position: 0 0;
- }
-}
-
-.shimmerWrapper {
- position: relative;
- overflow: hidden;
-
- &.fill {
- width: 100%;
- }
-
- &.rounded {
- border-radius: 12px;
- }
-
- &.heading {
- > * {
- flex: 0 0;
- }
- }
-
- .shimmerBackground {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: white;
- filter: blur(100px);
- z-index: -1;
- }
-}
diff --git a/web/leaderboard/src/app/components/Card/Card.tsx b/web/leaderboard/src/app/components/Card/Card.tsx
deleted file mode 100644
index 2db39d6cf..000000000
--- a/web/leaderboard/src/app/components/Card/Card.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2022 Fluidity Money. All rights reserved. Use of this
-// source code is governed by a GPL-style license that can be found in the
-// LICENSE.md file.
-
-import styles from "./Card.module.scss";
-
-export interface ICard {
- component?: "div" | "button" | "tr";
- style?: React.CSSProperties;
- rounded?: boolean;
- disabled?: boolean;
- fill?: boolean;
- shimmer?: boolean;
- type?: "opaque" | "transparent" | "frosted";
- border?: "solid" | "dashed" | "none";
- color?: "gray" | "white" | "holo";
- [_: string]: any;
-}
-
-const Card = ({
- component = "div",
- style = {},
- rounded = true,
- className = "",
- disabled = false,
- children,
- fill = false,
- shimmer = false,
- type = "opaque",
- border = "none",
- color = "gray",
- ...props
-}: ICard) => {
- const Component = component;
-
- const typeClass = type !== "opaque" ? styles[type] : "";
- const borderClass = styles[border];
- const colorClass = styles[color];
- const elementClass = component === "button" ? styles[component] : "";
- const propsClass = className;
-
- const allClasses = `
- ${styles.card}
- ${elementClass}
- ${colorClass}
- ${rounded ? styles.rounded : ""}
- ${fill ? styles.fill : ""}
- ${shimmer ? styles.shimmer : ""}
- ${borderClass}
- ${typeClass}
- ${propsClass}
- `;
-
- const CardContent = (
-
- {children}
-
- );
-
- if (shimmer)
- return (
-
- );
-
- return CardContent;
-};
-
-export default Card;
diff --git a/web/leaderboard/src/app/components/Card/index.tsx b/web/leaderboard/src/app/components/Card/index.tsx
deleted file mode 100644
index fc91b3df0..000000000
--- a/web/leaderboard/src/app/components/Card/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { default as Card } from "./Card";
diff --git a/web/leaderboard/src/app/components/ConnectWallet/ConnectedWallet/ConnectedWallet.module.scss b/web/leaderboard/src/app/components/ConnectWallet/ConnectedWallet/ConnectedWallet.module.scss
deleted file mode 100644
index e933fb67a..000000000
--- a/web/leaderboard/src/app/components/ConnectWallet/ConnectedWallet/ConnectedWallet.module.scss
+++ /dev/null
@@ -1,59 +0,0 @@
-.connected_btn {
- all: unset;
- cursor: pointer;
- font-size: 0.8em;
- display: flex;
- gap: 10px;
- align-items: center;
- border: 0.5px solid transparent;
- padding: 0.2em;
- border-radius: 2em;
-
- span {
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- color: #fff;
- font-size: 1.25em;
- }
-
- &:hover {
- border: 0.5px solid white;
- background-color: transparent;
- color: #fff;
- border-radius: 2em;
- }
-}
-
-.holo {
- background: conic-gradient(
- from 209.59deg at 50% 50%,
- #f3b8d8 0deg,
- #b793e9 50.06deg,
- #9fd4f3 85.94deg,
- #ffd2c4 134.97deg,
- #fbf3f3 172.05deg,
- #d9abdf 200.75deg,
- #af9ce3 224.67deg,
- #aae4e1 259.36deg,
- #c6ead0 298.82deg,
- #ffffff 328.72deg,
- #fdb5e4 360deg
- );
- height: 40px;
- width: 40px;
- border-radius: 50%;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.connected-btn-in-modal img {
- background: none;
-}
-
-.connected_img {
- background: none;
- border: none;
-}
diff --git a/web/leaderboard/src/app/components/ConnectWallet/ConnectedWallet/ConnectedWallet.tsx b/web/leaderboard/src/app/components/ConnectWallet/ConnectedWallet/ConnectedWallet.tsx
deleted file mode 100644
index 7f4224f16..000000000
--- a/web/leaderboard/src/app/components/ConnectWallet/ConnectedWallet/ConnectedWallet.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import Image from "next/image";
-import { Text, trimAddress, trimAddressShort } from "@fluidity-money/surfing";
-
-import styles from "./ConnectedWallet.module.scss";
-
-type IConnectedWallet = {
- address: string;
- callback: () => void;
- className?: string;
- short?: boolean;
-};
-
-const ConnectedWallet = ({
- address,
- callback,
- className,
- short = true,
-}: IConnectedWallet) => {
- return (
-
-
-
-
-
- {" "}
- {short ? trimAddressShort(address) : trimAddress(address)}
-
-
- );
-};
-
-export default ConnectedWallet;
diff --git a/web/leaderboard/src/app/components/ConnectWallet/index.ts b/web/leaderboard/src/app/components/ConnectWallet/index.ts
deleted file mode 100644
index 65f0d480f..000000000
--- a/web/leaderboard/src/app/components/ConnectWallet/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as ConnectedWallet } from "./ConnectedWallet/ConnectedWallet";
diff --git a/web/leaderboard/src/app/components/Dropdown/Dropdown.module.scss b/web/leaderboard/src/app/components/Dropdown/Dropdown.module.scss
deleted file mode 100644
index 06570e866..000000000
--- a/web/leaderboard/src/app/components/Dropdown/Dropdown.module.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-.dropdown_options {
- background: rgba(50, 50, 50, 0.75);
- box-sizing: border-box;
- padding: 5px;
- border-radius: 12px;
- position: absolute;
- top: 20px;
- right: 0px;
- width: 175px;
- display: flex;
- flex-direction: column;
-
- ul {
- margin: 0;
- padding: 0;
-
- li {
- list-style: none;
-
- .option {
- all: unset;
- font-size: 0.8rem;
- display: flex;
- justify-content: space-between;
- align-items: center;
- width: 100%;
- border-radius: 12px;
- padding: 8px 12px;
- box-sizing: border-box;
-
- &:hover {
- background: rgba(99, 99, 99, 0.75);
- }
- }
- }
- }
-}
diff --git a/web/leaderboard/src/app/components/Dropdown/dropdown.cy.tsx b/web/leaderboard/src/app/components/Dropdown/dropdown.cy.tsx
deleted file mode 100644
index c9beea82b..000000000
--- a/web/leaderboard/src/app/components/Dropdown/dropdown.cy.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import React from "react";
-import { DropdownOptions } from "./index";
-import "@fluidity-money/surfing";
-import "./Dropdown.module.scss";
-
-describe("DropdownOptions Component", () => {
- let setSortedByItem: any;
- let setOpenDropdown: any;
- let sortData: any;
-
- beforeEach(() => {
- setSortedByItem = cy.stub();
- setOpenDropdown = cy.stub();
- sortData = cy.stub();
-
- cy.mount(
-
- );
- });
-
- it("renders correctly", () => {
- cy.get("[class*='dropdown_options']").should("exist");
- cy.get("[class*='dropdown_options'] ul li").should("have.length", 3);
- });
-
- it("handles option click correctly", () => {
- const optionTitles = ["volume", "rewards", "number"];
-
- optionTitles.forEach((title, index) => {
- cy.get("[class*='dropdown_options'] ul li")
- .eq(index)
- .click()
- .then(() => {
- expect(setSortedByItem).to.be.calledWith(optionTitles[index]);
- expect(setOpenDropdown).to.be.calledWith(false);
- expect(sortData).to.be.calledWith(optionTitles[index].toLowerCase());
- });
- });
- });
-});
diff --git a/web/leaderboard/src/app/components/Dropdown/index.tsx b/web/leaderboard/src/app/components/Dropdown/index.tsx
deleted file mode 100644
index 22351af4b..000000000
--- a/web/leaderboard/src/app/components/Dropdown/index.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { Text } from "@fluidity-money/surfing";
-
-import { SORTING_INDEX } from "../../config";
-
-import styles from "./Dropdown.module.scss";
-
-const sortedBy = [
- { title: "VOLUME", name: SORTING_INDEX.VOLUME },
- { title: "REWARDS", name: SORTING_INDEX.REWARDS },
- { title: "#TX", name: SORTING_INDEX.NUMBER },
-];
-
-export const DropdownOptions = ({
- setSortedByItem,
- setOpenDropdown,
- sortData,
-}: {
- setSortedByItem: (value: SORTING_INDEX) => void;
- setOpenDropdown: (value: boolean) => void;
- sortData: (value: string) => void;
-}) => {
- return (
-
-
- {sortedBy.map((option) => (
-
- {
- setSortedByItem(option.name);
- setOpenDropdown(false);
- sortData(option.name);
- }}
- >
-
- {option.title}
-
-
-
- ))}
-
-
- );
-};
diff --git a/web/leaderboard/src/app/components/Footer/Footer.module.scss b/web/leaderboard/src/app/components/Footer/Footer.module.scss
deleted file mode 100644
index 4d30a6241..000000000
--- a/web/leaderboard/src/app/components/Footer/Footer.module.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-@import "../../../styles/breakpoints";
-
-.footer {
- font-family: "Inter";
- font-weight: 400;
- display: flex;
- justify-content: space-between;
- padding: 100px 64px 100px 64px;
- z-index: 20;
- position: relative;
-
- @include max-860px {
- flex-direction: column;
- gap: 30px;
- }
-
- @include max-560px {
- flex-direction: column;
- padding: 50px 20px 50px 20px;
- gap: 20px;
- }
-
- .btns {
- display: flex;
- gap: 30px;
- align-items: center;
-
- @include max-560px {
- flex-direction: column;
- align-items: flex-start;
- gap: 10px;
- }
-
- span {
- border-bottom: 1px solid #838281;
- }
- }
-}
diff --git a/web/leaderboard/src/app/components/Footer/footer.cy.tsx b/web/leaderboard/src/app/components/Footer/footer.cy.tsx
deleted file mode 100644
index 205efc206..000000000
--- a/web/leaderboard/src/app/components/Footer/footer.cy.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from "react";
-import Footer from "./index";
-
-describe("", () => {
- it("mounts ", () => {
- cy.mount();
- });
-});
diff --git a/web/leaderboard/src/app/components/Footer/index.tsx b/web/leaderboard/src/app/components/Footer/index.tsx
deleted file mode 100644
index 80f09b99e..000000000
--- a/web/leaderboard/src/app/components/Footer/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { Text } from "@fluidity-money/surfing";
-
-import styles from "./Footer.module.scss";
-
-const Footer = () => {
- return (
-
-
-
- Fluidity Money 2023
-
-
-
-
- );
-};
-
-export default Footer;
diff --git a/web/leaderboard/src/app/components/Modal/Modal.module.scss b/web/leaderboard/src/app/components/Modal/Modal.module.scss
deleted file mode 100644
index a3aef97e4..000000000
--- a/web/leaderboard/src/app/components/Modal/Modal.module.scss
+++ /dev/null
@@ -1,122 +0,0 @@
-.connect-wallet-outer-container {
- width: 100vw;
- height: 100vh;
- background-color: absolute;
- position: fixed;
- z-index: 88;
- top: 0;
- left: 0;
-}
-
-.connected-wallet-background {
- position: absolute;
- width: 100%;
- height: 100%;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- background-color: #030303cc;
-}
-
-.cover {
- position: fixed;
- top: 0;
- left: 0;
- background: black;
- height: 100%;
- width: 100%;
-}
-
-.connect-wallet-modal-container {
- position: fixed;
- z-index: 100;
- min-width: 300px;
- max-width: 431px;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- background-color: rgb(29, 23, 23);
- padding: 3em;
-}
-
-.connect-wallet-modal-container > ul > li {
- width: 100%;
- display: flex;
- list-style: none;
- cursor: pointer;
- justify-content: space-between;
- align-items: center;
- padding: 1em;
- box-sizing: border-box;
- border-bottom: 0.2px solid grey;
-}
-
-.connect-wallet-modal-container > ul > li:hover {
- background-color: gainsboro;
-}
-
-.connect-wallet-modal-container > ul > li > span {
- width: 100%;
- display: flex;
- align-items: center;
- margin-right: 0.25em;
-}
-
-.connect-wallet-modal-container > ul > li > span > img {
- width: 2em;
-}
-
-.modal-cancel-btn {
- cursor: pointer;
- float: right;
- margin-top: -0.5em;
- opacity: 0.6;
- padding: 6px;
- border-radius: 0.2em;
- width: 2em;
-}
-
-.modal-cancel-btn:hover {
- opacity: 1;
- background-color: #0f2339;
-}
-
-.connect-wallet-modal-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 2em;
-
- span {
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- font-size: 1.75em;
- color: #fff;
- }
-}
-
-.show_modal {
- display: block;
-}
-
-.hide_modal {
- display: none;
-}
-
-.legal {
- margin-top: 2em;
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- color: #828381;
- font-size: 0.75em;
-}
-
-.link {
- text-decoration: underline;
- color: white;
- cursor: pointer;
-}
diff --git a/web/leaderboard/src/app/components/Modal/index.tsx b/web/leaderboard/src/app/components/Modal/index.tsx
deleted file mode 100644
index 38b8cbab0..000000000
--- a/web/leaderboard/src/app/components/Modal/index.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import { useCallback, useEffect, useState } from "react";
-import { createPortal } from "react-dom";
-import Image from "next/image";
-
-import { Text } from "@fluidity-money/surfing";
-
-import styles from "./Modal.module.scss";
-
-interface IModal {
- isOpen: boolean;
- close: () => void;
- title: string;
- children: React.ReactNode;
-}
-
-const Modal = ({ isOpen, close, title, children }: IModal) => {
- const [modal, setModal] = useState(null);
-
- const closeWithEsc = useCallback(
- (event: { key: string }) => {
- event.key === "Escape" && isOpen === true && close();
- },
- [isOpen, close]
- );
-
- useEffect(() => {
- document.addEventListener("keydown", closeWithEsc);
- return () => document.removeEventListener("keydown", closeWithEsc);
- }, [isOpen, closeWithEsc]);
-
- useEffect(() => {
- isOpen
- ? setModal(
- createPortal(
-
-
-
-
- {title}
-
-
-
{children}
-
-
- By connecting a wallet, you agree to Fluidity Money's{" "}
-
- Terms of Service
- {" "}
- and acknowledge that you have read and understand the{" "}
- Disclaimer
-
-
-
-
,
- document.body
- )
- )
- : setModal(null);
- }, [isOpen, close, title, children]);
-
- return modal;
-};
-
-export default Modal;
diff --git a/web/leaderboard/src/app/components/Profile/Profile.module.scss b/web/leaderboard/src/app/components/Profile/Profile.module.scss
deleted file mode 100644
index 27b1b4405..000000000
--- a/web/leaderboard/src/app/components/Profile/Profile.module.scss
+++ /dev/null
@@ -1,326 +0,0 @@
-.connected_wallet {
- all: unset;
- cursor: pointer;
- font-size: 14px;
- font-weight: 700;
- display: flex;
- align-items: center;
- border: 0.5px solid transparent;
- border-radius: 2em;
- background-color: #fff;
- color: #000;
- padding: 16px;
- gap: 1em;
- text-transform: uppercase;
-
- div {
- font-family: "Inter";
- font-weight: 700;
- }
-
- &:hover {
- border: 0.5px solid white;
- background-color: transparent;
- color: #fff;
- border-radius: 2em;
- }
-}
-
-.cover {
- position: fixed;
- top: 0;
- left: 0;
- background: black;
- height: 100%;
- width: 100%;
-}
-
-.connect-wallet-modal-list {
- background-color: white;
- padding: 0;
- margin: 0 0 1em 0;
-}
-
-.connect-wallet-modal-names {
- margin: 10px;
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- color: #828381;
- font-size: 0.875em;
-}
-
-.connect-wallet-modal-status {
- display: flex;
- align-items: center;
- justify-content: flex-end;
-}
-
-.connect-wallet-modal-list > ul > li {
- width: 100%;
- display: flex;
- list-style: none;
- cursor: pointer;
- justify-content: space-between;
- align-items: center;
- padding: 1em;
- box-sizing: border-box;
- border-bottom: 0.2px solid grey;
-}
-
-.connect-wallet-modal-list > ul > li:hover {
- background-color: gainsboro;
-}
-
-.connect-wallet-modal-list > ul > li > span {
- width: 100%;
- display: flex;
- align-items: center;
- margin-right: 0.25em;
-}
-
-.connect-wallet-modal-list > ul > li > span > img {
- width: 2em;
-}
-
-.connected-wallet-modal-container {
- position: fixed;
- z-index: 100;
- width: 100%;
- height: 100%;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- background-color: transparent;
-}
-
-.connected-wallet-modal-container > div:last-child {
- width: 30%;
- min-width: 582px;
- background-color: rgb(29, 23, 23);
- padding: 40px 42px 40px 42px;
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
-}
-
-.connected-wallet-background {
- position: absolute;
- width: 100%;
- height: 100%;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- background-color: rgb(3, 3, 3, 0.8);
-}
-
-.connected-wallet-modal-body {
- margin-top: 30px;
- display: flex;
- flex-direction: column;
- align-items: center;
- width: 100%;
-}
-
-.connected-wallet-modal-header {
- width: 100%;
- margin: 0 auto;
-}
-
-.address-copy-box {
- width: 100%;
- display: flex;
- padding: 10px;
- justify-content: space-between;
- align-items: center;
- cursor: pointer;
- border: none !important;
- border-radius: 12px !important;
-}
-
-.card-wrapper {
- position: relative;
- width: 100%;
- display: flex;
- padding: 10px;
-}
-
-.card-wrapper::before {
- content: "";
- position: absolute;
- pointer-events: none;
- inset: 0;
- padding: 1px;
- border-radius: 12px;
- background: conic-gradient(
- from 209.59deg at 50% 50%,
- #f3b8d8 0deg,
- #b793e9 50.06deg,
- #9fd4f3 85.94deg,
- #ffd2c4 134.97deg,
- #fbf3f3 172.05deg,
- #d9abdf 200.75deg,
- #af9ce3 224.67deg,
- #aae4e1 259.36deg,
- #c6ead0 298.82deg,
- #ffffff 328.72deg,
- #fdb5e4 360deg
- );
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
- -webkit-mask-composite: xor;
- mask-composite: exclude;
-}
-
-.address-copy-box:hover {
- background-color: black;
-}
-
-.address-copy-box:active {
- background-color: transparent;
-}
-
-.address-copy-box > div {
- display: flex;
-}
-
-.legal {
- margin-top: 2em;
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- color: #828381;
- font-size: 0.75em;
-}
-
-.address-text {
- margin-left: 10px;
-}
-
-.connected-btn-in-modal {
- all: unset;
- cursor: pointer;
- font-size: 0.8em;
- display: flex;
- gap: 10px;
- align-items: center;
- border: 0.5px solid transparent;
- padding: 0.2em;
- border-radius: 2em;
-}
-
-.connected-btn-in-modal img {
- background: none;
-}
-
-.connected-btn-in-modal span {
- font-size: 1.25em;
- color: #fff;
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
-}
-
-.connected-btn-in-modal:hover {
- border: 0.5px solid transparent;
-}
-
-.disconnect-wallet-btn-in-modal {
- cursor: pointer;
- margin: 32px 0 32px 0;
- width: 100%;
- display: flex;
- padding: 16px;
- gap: 8px;
- justify-content: center;
- font-size: 14px;
- font-weight: 700;
- text-transform: uppercase;
- border: 0.5px solid rgba(255, 255, 255, 0.8);
- color: #fff;
- border-radius: 50px;
-
- background-color: transparent;
-}
-
-.disconnect-wallet-btn-in-modal:hover {
- background-color: #fff;
- color: black;
-}
-
-.disconnect-wallet-btn-in-modal:hover > div > img {
- -webkit-filter: invert(100%);
- filter: invert(100%);
-}
-
-.disconnect-wallet-btn {
- margin: 2em 0;
- display: flex;
- align-items: flex-start;
- justify-content: center;
- width: 100%;
-
- font-size: 14px;
- padding: 16px;
- gap: 8px;
-
- all: unset;
- font-weight: 700;
- cursor: pointer;
- text-align: center;
- border-radius: 50px;
- line-height: 100%;
- font-style: normal;
- flex-direction: row;
- text-transform: uppercase;
- border: 0.5px solid rgba(255, 255, 255, 0.8);
- color: #fff;
-}
-
-.disconnect-wallet-btn:hover > div > img {
- -webkit-filter: invert(100%);
- filter: invert(100%);
-}
-
-.link-text {
- text-decoration: underline;
- color: white;
- cursor: pointer;
-}
-
-.connected-wallet-title {
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- color: #828381;
- font-size: 1.75em;
-}
-
-.connected-wallet-subtitle {
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- font-size: 1em;
- color: #fff;
-}
-
-.modal-cancel-btn {
- cursor: pointer;
- float: right;
- margin-top: -0.5em;
- opacity: 0.6;
- padding: 6px;
- border-radius: 0.2em;
- width: 2em;
-}
-
-.modal-cancel-btn:hover {
- opacity: 1;
- background-color: #0f2339;
-}
diff --git a/web/leaderboard/src/app/components/Profile/Wallets/Wallets.module.scss b/web/leaderboard/src/app/components/Profile/Wallets/Wallets.module.scss
deleted file mode 100644
index df69888d4..000000000
--- a/web/leaderboard/src/app/components/Profile/Wallets/Wallets.module.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-.connect_wallets_list {
- background-color: white;
- padding: 0;
- margin: 0 0 1em 0;
-}
-
-.connect_wallet_name {
- margin: 10px;
- font-family: Aeonik, sans-serif;
- font-weight: 400;
- line-height: 1.2;
- letter-spacing: 0.01em;
- color: #828381;
- font-size: 0.875em;
-}
-
-.wallets_item {
- width: 100%;
- display: flex;
- list-style: none;
- cursor: pointer;
- align-items: center;
- padding: 1em;
- box-sizing: border-box;
- border-bottom: 0.2px solid grey;
-}
-
-.wallets_item:hover {
- background-color: gainsboro;
-}
-
-.connect-wallet-modal-list > ul > li > span {
- width: 100%;
- display: flex;
- align-items: center;
- margin-right: 0.25em;
-}
diff --git a/web/leaderboard/src/app/components/Profile/Wallets/wallets.tsx b/web/leaderboard/src/app/components/Profile/Wallets/wallets.tsx
deleted file mode 100644
index 3b33f071b..000000000
--- a/web/leaderboard/src/app/components/Profile/Wallets/wallets.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import Image from "next/image";
-import { useConnect } from "wagmi";
-
-import { Text } from "@fluidity-money/surfing";
-
-import styles from "./Wallets.module.scss";
-
-export const Wallets = () => {
- const { connect, connectors } = useConnect();
-
- return (
- <>
-
- {connectors &&
- connectors.map((connector) => (
- connect({ connector })}
- className={styles.wallets_item}
- >
- {connector.name === "MetaMask" ? (
-
- ) : (
-
- )}
-
- {connector.name}
-
-
- ))}
- window?.open("https://www.okx.com/web3", "_blank")}
- className={styles.wallets_item}
- >
-
-
- OKX Wallet
-
-
- window?.open("https://wallet.coin98.com/", "_blank")}
- className={styles.wallets_item}
- >
-
-
- Coin98
-
-
-
- >
- );
-};
diff --git a/web/leaderboard/src/app/components/Profile/index.tsx b/web/leaderboard/src/app/components/Profile/index.tsx
deleted file mode 100644
index 5dac3f8d1..000000000
--- a/web/leaderboard/src/app/components/Profile/index.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import { useState, useEffect } from "react";
-import Image from "next/image";
-import { useAccount, useDisconnect } from "wagmi";
-
-import { GeneralButton } from "@fluidity-money/surfing";
-
-import { Card } from "../Card";
-import { ConnectedWallet } from "../ConnectWallet";
-import ModalWindow from "../Modal/index";
-
-import { Wallets } from "./Wallets/wallets";
-import styles from "./Profile.module.scss";
-
-enum IconState {
- Circle = "circle",
- Checked = "checked",
-}
-
-export const Profile = () => {
- const { address, isConnected, isConnecting } = useAccount();
- const userAddress = String(address);
- const { disconnect } = useDisconnect();
-
- const [connectedWalletModalVisibility, setConnectedWalletModalVisibility] =
- useState(false);
- const [walletModalVisibility, setWalletModalVisibility] = useState(false);
-
- const [icon, setIcon] = useState(IconState.Circle);
-
- const renderIcon = () => {
- switch (icon) {
- case IconState.Circle:
- return (
-
- );
- case IconState.Checked:
- return ;
- break;
- default:
- return null;
- }
- };
-
- const copyAddress = (address: string) => {
- // Copies to clipboard
- navigator.clipboard.writeText(address);
- setIcon(IconState.Checked);
-
- setTimeout(() => {
- setIcon(IconState.Circle);
- }, 1000);
- };
-
- useEffect(() => {
- isConnected && setWalletModalVisibility(false);
- }, [isConnected]);
-
- return (
-
- {isConnected ? (
-
- setConnectedWalletModalVisibility(!connectedWalletModalVisibility)
- }
- />
- ) : (
- setWalletModalVisibility(true)}
- className={styles.connected_wallet}
- >
- Connect Wallet
-
- )}
-
- setConnectedWalletModalVisibility(false)}
- >
-
- copyAddress(userAddress)}
- >
- copyAddress(userAddress)}
- short={false}
- />
- {renderIcon()}
-
-
-
-
- }
- size={"medium"}
- handleClick={() => {
- disconnect();
- setConnectedWalletModalVisibility(false);
- }}
- className={styles["disconnect-wallet-btn-in-modal"]}
- >
- Disconnect Wallet
-
-
-
- setWalletModalVisibility(false)}
- >
-
-
-
- );
-};
diff --git a/web/leaderboard/src/app/components/Profile/profile.cy.tsx b/web/leaderboard/src/app/components/Profile/profile.cy.tsx
deleted file mode 100644
index c907d9274..000000000
--- a/web/leaderboard/src/app/components/Profile/profile.cy.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from "react";
-import { Profile } from "./index";
-
-describe(" ", () => {
- it("mounts ", () => {
- cy.mount( );
- });
-});
diff --git a/web/leaderboard/src/app/components/Socials/ContinuousCarousel.module.scss b/web/leaderboard/src/app/components/Socials/ContinuousCarousel.module.scss
deleted file mode 100644
index 15baf460c..000000000
--- a/web/leaderboard/src/app/components/Socials/ContinuousCarousel.module.scss
+++ /dev/null
@@ -1,91 +0,0 @@
-.winnersRight {
- display: flex;
- position: relative;
- width: 100%;
- height: 24px;
- font-size: 16px;
- background-color: transparent;
- overflow: hidden;
- z-index: 1;
- padding-top: 24px;
- padding-bottom: 24px;
- box-sizing: content-box;
- &Line {
- display: flex;
- position: absolute;
- font-size: 16px;
- top: 0;
- left: 0;
- align-items: center;
- justify-content: flex-start;
- width: 100%;
- height: 100%;
- white-space: nowrap;
- transform: scale(2);
- transition: all 1s ease;
- & > div {
- display: flex;
- animation: scrollRight 120s infinite linear;
- font-size: 16px;
- &:hover {
- animation-play-state: paused;
- }
- }
- }
-}
-
-@keyframes scrollRight {
- from {
- transform: translateX(0%);
- }
- to {
- transform: translateX(-50%);
- }
-}
-
-.winnersLeft {
- @extend .winnersRight;
- padding-top: 24px;
- padding-bottom: 24px;
- &Line {
- display: flex;
- position: absolute;
- top: 0;
- left: 0;
- align-items: center;
- justify-content: flex-start;
- width: 100%;
- height: 100%;
- white-space: nowrap;
- transform: scale(2);
- transition: all 1s ease;
- & > div {
- display: flex;
- animation: scrollLeft 120s infinite linear;
- &:hover {
- animation-play-state: paused;
- }
- }
- }
-}
-
-@keyframes scrollLeft {
- from {
- transform: translateX(-50%);
- }
- to {
- transform: translateX(0%);
- }
-}
-
-.backgroundLeft {
- & > div {
- animation: scrollLeft 2000s infinite linear;
- }
-}
-
-.backgroundRight {
- & > div {
- animation: scrollRight 2000s infinite linear;
- }
-}
diff --git a/web/leaderboard/src/app/components/Socials/ContinuousCarousel.tsx b/web/leaderboard/src/app/components/Socials/ContinuousCarousel.tsx
deleted file mode 100644
index ee61d19d5..000000000
--- a/web/leaderboard/src/app/components/Socials/ContinuousCarousel.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2022 Fluidity Money. All rights reserved. Use of this
-// source code is governed by a GPL-style license that can be found in the
-// LICENSE.md file.
-
-import { ReactNode } from "react";
-import styles from "./ContinuousCarousel.module.scss";
-
-interface IContinuousCarousel {
- direction: "right" | "left" | "up";
- children: ReactNode;
- background?: boolean;
-}
-
-const ContinuousCarousel = ({
- direction,
- children,
- background,
-}: IContinuousCarousel) => {
- /*
- Continuous carousel in right or left direction
- */
- return (
-
- );
-};
-
-export default ContinuousCarousel;
diff --git a/web/leaderboard/src/app/components/Socials/Socials.module.scss b/web/leaderboard/src/app/components/Socials/Socials.module.scss
deleted file mode 100644
index 6ae52ee07..000000000
--- a/web/leaderboard/src/app/components/Socials/Socials.module.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-.container {
- display: flex;
- width: 100%;
- align-self: flex-start;
- .content {
- display: flex;
- align-items: center;
- gap: 10px;
-
- .imageContainer {
- width: 11px;
- height: 19px;
-
- img {
- max-width: 100%;
- max-height: 100%;
- object-fit: contain;
- }
- }
- }
-}
-
-.social {
- display: flex;
- align-items: center;
- gap: 5px;
-}
-
-.socialText {
- // Important here because surfing keeps overriding styles
- font-size: 8px !important;
- font-family: "Aeonik Mono" !important;
-}
diff --git a/web/leaderboard/src/app/components/Socials/Socials.tsx b/web/leaderboard/src/app/components/Socials/Socials.tsx
deleted file mode 100644
index e773133fd..000000000
--- a/web/leaderboard/src/app/components/Socials/Socials.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2022 Fluidity Money. All rights reserved. Use of this
-// source code is governed by a GPL-style license that can be found in the
-// LICENSE.md file.
-
-import ContinuousCarousel from "./ContinuousCarousel";
-import styles from "./Socials.module.scss";
-import { Text } from "@fluidity-money/surfing";
-
-const Socials = () => {
- const repeatingSocials = (
- <>
-
-
-
-
-
- @FLUIDITYMONEY
-
-
-
-
-
-
-
- DISCORD
-
-
-
-
-
-
-
-
- TELEGRAM
-
-
-
-
-
-
-
- LINKEDIN
-
-
- >
- );
-
- return (
-
-
-
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
- {repeatingSocials}
-
-
-
- );
-};
-
-export default Socials;
diff --git a/web/leaderboard/src/app/components/Socials/index.tsx b/web/leaderboard/src/app/components/Socials/index.tsx
deleted file mode 100644
index 68b7b0f9c..000000000
--- a/web/leaderboard/src/app/components/Socials/index.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2022 Fluidity Money. All rights reserved. Use of this
-// source code is governed by a GPL-style license that can be found in the
-// LICENSE.md file.
-
-import Socials from "./Socials";
-
-export default Socials;
diff --git a/web/leaderboard/src/app/components/Table/Table.module.scss b/web/leaderboard/src/app/components/Table/Table.module.scss
deleted file mode 100644
index a7a8caaa1..000000000
--- a/web/leaderboard/src/app/components/Table/Table.module.scss
+++ /dev/null
@@ -1,69 +0,0 @@
-// Mono
-$black: #000000;
-$white: #ffffff;
-$gray: #999999;
-
-.table_content {
- font-family: "Inter";
- font-weight: 500;
- width: 100%;
- border-spacing: 0 0.25em;
-
- .heading {
- color: $gray;
- font-weight: 500;
- font-size: 12px;
- line-height: 21px;
- }
-}
-
-.table_content > thead > tr.highlighted_row,
-.table_content > tbody > tr.table_row.highlighted_row {
- background: linear-gradient(
- 90deg,
- #f3b8d8 0%,
- #b793e9 15.1%,
- #9fd4f3 26.04%,
- #ffd2c4 36.46%,
- #fbf3f3 46.88%,
- #d9abdf 57.29%,
- #af9ce3 72.4%,
- #aae4e1 85.42%,
- #c6ead0 93.23%,
- #fdb5e4 100%
- );
- opacity: 20%;
-}
-
-.table_content > tbody > tr > td {
- background-color: #ffffff0d;
- padding: 1em 0.5em;
-}
-
-.table_content > thead > tr th:first-child,
-.table_content > thead > tr td:first-child,
-.table_content > tbody > tr.table_row th:first-child,
-.table_content > tbody > tr.table_row td:first-child {
- padding-left: 4em;
- text-align: left;
-}
-
-.table_content > thead > tr td,
-.table_content > tbody > tr.table_row td {
- background-color: transparent !important;
- border-bottom: 1px solid $white;
-}
-
-.table_content > thead > tr th,
-.table_content > thead > tr td,
-.table_content > tbody > tr.table_row th,
-.table_content > tbody > tr.table_row td {
- padding-left: 2em;
- padding-right: 2em;
- text-align: left;
-}
-
-.table_content > thead > tr:last-of-type td,
-.table_content > tbody > tr.table_row:last-of-type td {
- border-bottom: none !important;
-}
diff --git a/web/leaderboard/src/app/components/Table/index.tsx b/web/leaderboard/src/app/components/Table/index.tsx
deleted file mode 100644
index f812ba188..000000000
--- a/web/leaderboard/src/app/components/Table/index.tsx
+++ /dev/null
@@ -1,140 +0,0 @@
-import React, { useMemo } from "react";
-import { AnimatePresence, motion } from "framer-motion";
-
-import { LoadingDots, Text } from "@fluidity-money/surfing";
-
-import { IRow } from "../../types";
-
-import styles from "../../page.module.scss";
-
-type ColumnProps = {
- name: string;
- show?: boolean;
- alignRight?: boolean;
-};
-
-type ITable = {
- className?: string;
- headings: ColumnProps[];
-
- data: T[];
-
- // Render data into row
- renderRow: (data: T) => IRow;
-
- loaded?: boolean;
-
- showLoadingAnimation?: boolean;
-
- // Freeze a given row to the top of the table according to a boolean function
- freezeRow?: (data: T) => boolean;
-};
-
-const Table = (props: ITable) => {
- const { data, renderRow, headings, loaded, showLoadingAnimation, freezeRow } =
- props;
-
- const frozenRows = useMemo(() => {
- return data.filter((row) => freezeRow?.(row));
- }, [data, freezeRow]);
-
- const filteredHeadings = headings.filter(
- ({ show }) => show === undefined || show
- );
-
- const Row = ({ RowElement, index, className }: IRow & { index: number }) => {
- return (
-
- {filteredHeadings.map(({ name }) => (
-
- ))}
-
- );
- };
-
- return (
-
- {/* Table */}
- {data.length === 0 ? (
- !loaded ? (
- <>
- Fetching table data...
-
- {showLoadingAnimation && }
-
- >
- ) : (
- <>
-
- No records found!
-
- >
- )
- ) : (
-
- {/* Table Headings */}
-
-
- {filteredHeadings.map((heading) => {
- return (
-
- {heading.name}
-
- );
- })}
-
-
-
- {/* Table Body */}
-
-
- {/**/}
- {/* Frozen Rows */}
- {frozenRows.map((row, i) => (
-
- ))}
- {/* Unfrozen Rows */}
- {data
- .filter((row) => !freezeRow?.(row))
- .map((row, i) => (
-
- ))}
-
-
-
- )}
-
- );
-};
-
-export default Table;
diff --git a/web/leaderboard/src/app/config.ts b/web/leaderboard/src/app/config.ts
deleted file mode 100644
index b52d65f7e..000000000
--- a/web/leaderboard/src/app/config.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export enum SORTED_ITEM {
- volume = "VOLUME",
- rewards = "REWARDS",
- number = "#TX",
-}
-
-export enum SORTING_INDEX {
- NUMBER = "number",
- VOLUME = "volume",
- REWARDS = "rewards",
-}
diff --git a/web/leaderboard/src/app/ensName.tsx b/web/leaderboard/src/app/ensName.tsx
deleted file mode 100644
index cccbe8068..000000000
--- a/web/leaderboard/src/app/ensName.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from "react";
-import { useEnsName, Address } from "wagmi";
-//
-import { trimAddress } from "@fluidity-money/surfing";
-
-const defaultChain = 1; // taken from wagmi documentation
-
-const UseEnsName = ({ address }: { address: string }) => {
- const userAddress = address as Address;
-
- const ensName = useEnsName({
- address: userAddress,
- chainId: defaultChain,
- });
-
- return (
- {ensName.data === null ? trimAddress(address) : ensName.data}
- );
-};
-
-export default UseEnsName;
diff --git a/web/leaderboard/src/app/ensNameUseEnsName.cy.tsx b/web/leaderboard/src/app/ensNameUseEnsName.cy.tsx
deleted file mode 100644
index 66bc0467e..000000000
--- a/web/leaderboard/src/app/ensNameUseEnsName.cy.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from "react";
-import UseEnsName from "./ensName";
-
-describe(" ", () => {
- it("renders", () => {
- cy.mount( );
- });
-});
diff --git a/web/leaderboard/src/app/global-error.jsx b/web/leaderboard/src/app/global-error.jsx
deleted file mode 100644
index 2e6130a15..000000000
--- a/web/leaderboard/src/app/global-error.jsx
+++ /dev/null
@@ -1,19 +0,0 @@
-"use client";
-
-import * as Sentry from "@sentry/nextjs";
-import Error from "next/error";
-import { useEffect } from "react";
-
-export default function GlobalError({ error }) {
- useEffect(() => {
- Sentry.captureException(error);
- }, [error]);
-
- return (
-
-
-
-
-
- );
-}
diff --git a/web/leaderboard/src/app/globals.css b/web/leaderboard/src/app/globals.css
deleted file mode 100644
index 14f414292..000000000
--- a/web/leaderboard/src/app/globals.css
+++ /dev/null
@@ -1,111 +0,0 @@
-@import url("https://static.fluidity.money/fonts/aeonik/stylesheet-family-support.css");
-@import url("https://static.fluidity.money/fonts/spline/stylesheet-family-support.css");
-@import url("https://static.fluidity.money/fonts/inter/stylesheet-family-support.css");
-
-:root {
- --max-width: 1100px;
- --border-radius: 12px;
- --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono",
- "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro",
- "Fira Mono", "Droid Sans Mono", "Courier New", monospace;
-
- --foreground-rgb: 0, 0, 0;
- --background-start-rgb: 214, 219, 220;
- --background-end-rgb: 255, 255, 255;
-
- --primary-glow: conic-gradient(
- from 180deg at 50% 50%,
- #16abff33 0deg,
- #0885ff33 55deg,
- #54d6ff33 120deg,
- #0071ff33 160deg,
- transparent 360deg
- );
- --secondary-glow: radial-gradient(
- rgba(255, 255, 255, 1),
- rgba(255, 255, 255, 0)
- );
-
- --tile-start-rgb: 239, 245, 249;
- --tile-end-rgb: 228, 232, 233;
- --tile-border: conic-gradient(
- #00000080,
- #00000040,
- #00000030,
- #00000020,
- #00000010,
- #00000010,
- #00000080
- );
-
- --callout-rgb: 238, 240, 241;
- --callout-border-rgb: 172, 175, 176;
- --card-rgb: 180, 185, 188;
- --card-border-rgb: 131, 134, 135;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --foreground-rgb: 255, 255, 255;
- --background-start-rgb: 0, 0, 0;
- --background-end-rgb: 0, 0, 0;
-
- --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0));
- --secondary-glow: linear-gradient(
- to bottom right,
- rgba(1, 65, 255, 0),
- rgba(1, 65, 255, 0),
- rgba(1, 65, 255, 0.3)
- );
-
- --tile-start-rgb: 2, 13, 46;
- --tile-end-rgb: 2, 5, 19;
- --tile-border: conic-gradient(
- #ffffff80,
- #ffffff40,
- #ffffff30,
- #ffffff20,
- #ffffff10,
- #ffffff10,
- #ffffff80
- );
-
- --callout-rgb: 20, 20, 20;
- --callout-border-rgb: 108, 108, 108;
- --card-rgb: 100, 100, 100;
- --card-border-rgb: 200, 200, 200;
- }
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: rgb(var(--foreground-rgb));
- background: linear-gradient(
- to bottom,
- transparent,
- rgb(var(--background-end-rgb))
- )
- rgb(var(--background-start-rgb));
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
-
-@media (prefers-color-scheme: dark) {
- html {
- color-scheme: dark;
- }
-}
diff --git a/web/leaderboard/src/app/layout.tsx b/web/leaderboard/src/app/layout.tsx
deleted file mode 100644
index c06190c95..000000000
--- a/web/leaderboard/src/app/layout.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import type { Metadata } from "next";
-import { Providers } from "./providers";
-import "./globals.css";
-
-export const metadata: Metadata = {
- title: "Leaderboard",
- description: "Fluidity Leaderbord page",
-};
-
-function RootLayout({ children }: { children: React.ReactNode }) {
- return (
-
-
- {children}
-
-
- );
-}
-
-export default RootLayout;
diff --git a/web/leaderboard/src/app/page.module.scss b/web/leaderboard/src/app/page.module.scss
deleted file mode 100644
index c3b1d2262..000000000
--- a/web/leaderboard/src/app/page.module.scss
+++ /dev/null
@@ -1,431 +0,0 @@
-@import "../styles/breakpoints";
-
-// Mono
-$black: #000000;
-$white: #ffffff;
-$gray: #999999;
-
-.main {
- position: relative;
- overflow: hidden;
- min-height: 100vh;
- background-color: $black;
- color: $gray;
-}
-
-.red_spot {
- width: 914px;
- height: 450px;
- background-color: #f04338;
- opacity: 20%;
- border-radius: 50%;
- filter: blur(50px);
- position: absolute;
- left: 700px;
- top: -185px;
-
- @include max-860px {
- display: none;
- }
-}
-
-.blue_spot {
- width: 1034px;
- height: 602px;
- background-color: #083b7d;
- opacity: 20%;
- border-radius: 50%;
- filter: blur(50px);
- position: absolute;
- left: -189px;
- top: 498px;
-
- @include max-860px {
- display: none;
- }
-}
-
-.white_spot {
- width: 402px;
- height: 784px;
- background-color: #ffffff;
- opacity: 20%;
- border-radius: 80%;
- filter: blur(100px);
- position: absolute;
- left: 1199px;
- top: 400px;
-
- @include max-860px {
- display: none;
- }
-}
-
-.header {
- font-family: "Inter";
- font-weight: 400;
- width: 100%;
- padding-top: 100px;
- display: flex;
- flex-direction: column;
- align-items: center;
- z-index: 20;
- position: relative;
-
- .logo {
- margin-bottom: 28px;
- }
-
- .title {
- font-weight: 700;
- font-size: 70px;
- color: $white;
- margin-bottom: 13px;
- text-align: center;
-
- @include max-560px {
- font-size: 40px;
- }
- }
-
- .light {
- color: #fde0de;
- }
-
- .description {
- max-width: 968px;
- line-height: 21.28px;
- font-size: 14px;
- text-align: center;
- letter-spacing: -2%;
-
- @include max-860px {
- max-width: 700px;
- }
-
- @include max-560px {
- max-width: 350px;
- }
-
- &_highlited {
- color: $white;
- font-weight: 700;
- }
-
- &_learn {
- color: $white;
- text-decoration: underline;
- cursor: pointer;
- }
-
- svg {
- stroke: $white;
- }
- }
-}
-
-.banner {
- font-family: "Inter";
- font-weight: 400;
- margin: 0 auto;
- margin-top: 60px;
- max-width: 767px;
- padding: 10px 0 10px 0;
- opacity: 50%;
- background: #211c1c;
- cursor: pointer;
- z-index: 20;
- position: relative;
- color: $white;
-
- border-radius: 64px;
- border: 1px solid $white;
-
- display: flex;
- justify-content: center;
- align-items: center;
-
- @include max-860px {
- max-width: 600px;
- }
-
- @include max-560px {
- margin-top: 40px;
- max-width: 350px;
- padding: 10px 10px 10px 35px;
- }
-
- &_text {
- font-weight: 700;
- }
-
- img {
- margin-right: 5px;
- }
-
- &_arrow {
- visibility: hidden;
- stroke: $white;
- }
-
- &:hover {
- border-color: #e6c5e3;
- opacity: 100%;
- background-color: transparent;
-
- .banner_arrow {
- visibility: visible;
- }
- }
-}
-
-.wallet_connection {
- position: relative;
- z-index: 87;
- display: inline-flex;
- width: 100%;
- justify-content: center;
- padding-top: 20px;
-}
-
-.table {
- max-width: 1069px;
- border: 1px solid $white;
- border-radius: 15px;
- margin: 0 auto;
- margin-top: 30px;
- z-index: 20;
- position: relative;
- color: $white;
- margin-bottom: 52px;
-
- @include max-560px {
- max-width: 360px;
- }
-
- &_header {
- font-family: "Inter";
- font-weight: 400;
- padding: 35px 47px 0px 47px;
- margin-bottom: 20px;
- display: flex;
- justify-content: space-between;
-
- @include max-560px {
- flex-direction: column;
- padding: 30px 30px 0px 30px;
- }
-
- .title {
- font-weight: 700;
- padding-bottom: 10px;
- }
-
- .time_filter {
- font-weight: 500;
- text-decoration: underline;
- }
-
- .filters {
- display: flex;
- flex-direction: column;
- flex-grow: 0.4;
- align-items: flex-end;
- justify-content: space-between;
- font-size: 14px;
-
- .btns {
- display: flex;
- justify-content: space-between;
- width: 75%;
-
- @include max-860px {
- gap: 20px;
- }
-
- @include max-560px {
- width: 100%;
- }
-
- .btn {
- font-family: "Spline Sans Mono";
- font-weight: 400;
- border: 1px solid $gray;
- border-radius: 46px;
- background-color: transparent;
- color: $gray;
- width: 108px;
- padding: 7px 0 7px 0;
- text-align: center;
- cursor: pointer;
- }
-
- .btn_highlited {
- font-family: "Spline Sans Mono";
- font-weight: 700;
- color: $white;
- border: 2px solid $white;
- }
- }
-
- &_sorting {
- display: flex;
- justify-content: space-between;
- width: 50%;
- padding-top: 40px;
-
- @include max-860px {
- width: 65%;
- }
-
- @include max-560px {
- padding-top: 30px;
- width: 65%;
- }
-
- .sorted_by {
- color: $gray;
- font-family: "Spline Sans Mono";
- }
-
- .sorted_list {
- position: relative;
- z-index: 50;
- }
-
- .btn {
- cursor: pointer;
- display: inline-flex;
- align-items: center;
- gap: 0.2em;
- background-color: transparent;
- border: none;
- color: $white;
- border-bottom: 1px solid $white;
- }
- }
-
- @include max-560px {
- margin-top: 20px;
- align-items: flex-start;
- width: 80%;
- }
- }
- }
-}
-.fetching {
- font-family: "Inter";
- font-weight: 400;
- padding: 20px 50px;
-}
-
-.table_content {
- font-family: "Inter";
- font-weight: 500;
- width: 100%;
- border-spacing: 0 0.25em;
- border-collapse: collapse;
- width: 100%;
- display: table;
- table-layout: fixed;
-
- .heading {
- color: $gray;
- font-weight: 500;
- font-size: 12px;
- line-height: 21px;
- }
-
- thead {
- display: table;
- width: 100%;
- table-layout: fixed;
- }
-
- tbody {
- display: block;
- width: 100%;
- overflow-y: auto;
- height: 700px;
- }
-
- tbody tr {
- display: table;
- width: 100%;
- table-layout: fixed;
- }
-}
-
-.table_content > thead > tr.highlighted_row,
-.table_content > tbody > tr.table_row.highlighted_row {
- background: linear-gradient(
- 90deg,
- rgba(243, 184, 216, 20%) 0%,
- rgba(183, 147, 233, 20%) 15.1%,
- rgba(159, 212, 243, 20%) 26.04%,
- rgba(255, 210, 196, 20%) 36.46%,
- rgba(251, 243, 243, 20%) 46.88%,
- rgba(217, 171, 223, 20%) 57.29%,
- rgba(175, 156, 227, 20%) 72.4%,
- rgba(170, 228, 225, 20%) 85.42%,
- rgba(198, 234, 208, 20%) 93.23%,
- rgba(253, 181, 228, 20%) 100%
- );
-}
-
-.table_content > tbody > tr > td {
- background-color: #ffffff0d;
- padding: 1em 0.5em;
-}
-
-.table_content > thead > tr th:first-child,
-.table_content > thead > tr td:first-child,
-.table_content > tbody > tr.table_row th:first-child,
-.table_content > tbody > tr.table_row td:first-child {
- padding-left: 4em;
- text-align: left;
- @include max-560px {
- padding-left: 2em;
- }
-}
-
-.table_content > thead > tr td,
-.table_content > tbody > tr.table_row td {
- background-color: transparent !important;
- border-bottom: 1px solid $white;
-}
-
-.table_content > thead > tr th,
-.table_content > thead > tr td,
-.table_content > tbody > tr.table_row th,
-.table_content > tbody > tr.table_row td {
- padding-left: 2em;
- padding-right: 2em;
- text-align: left;
-
- @include max-560px {
- padding-left: 0.5em;
- }
-}
-
-.table_content > thead > tr:last-of-type td,
-.table_content > tbody > tr.table_row:last-of-type td {
- border-bottom: none !important;
-}
-
-.table_content > thead > tr th:nth-child(3),
-.table_content > tbody > tr.table_row td:nth-child(3) {
- @include max-560px {
- padding-left: 2em;
- }
-}
-
-.chosen_sorting {
- font-family: "Aeonik";
- font-weight: 400;
-}
-
-.arrowDown {
- height: 10px;
- stroke: white;
-}
diff --git a/web/leaderboard/src/app/page.tsx b/web/leaderboard/src/app/page.tsx
deleted file mode 100644
index 9930f627a..000000000
--- a/web/leaderboard/src/app/page.tsx
+++ /dev/null
@@ -1,394 +0,0 @@
-"use client";
-
-import { useState, useEffect, useRef, useCallback } from "react";
-import { useQuery } from "@apollo/client";
-import { useAccount } from "wagmi";
-import Image from "next/image";
-
-import { useChainContext } from "./queries/ChainContext";
-
-import {
- Text,
- GeneralButton,
- Heading,
- ArrowTopRight,
- useClickOutside,
- toSignificantDecimals,
- ArrowDown,
-} from "@fluidity-money/surfing";
-import Socials from "./components/Socials";
-import Table from "./components/Table";
-import Footer from "./components/Footer";
-import { DropdownOptions } from "./components/Dropdown";
-import { Data, IRow } from "./types";
-import { SORTED_ITEM, SORTING_INDEX } from "./config";
-import {
- queryLeaderboardRanking24Hours,
- queryLeaderboardRankingAllTime,
-} from "./queries/useLeaderboardRanking";
-import UseEnsName from "./ensName";
-import { Profile } from "./components/Profile";
-
-import styles from "./page.module.scss";
-
-export default function Home() {
- const [filterIndex, setFilterIndex] = useState<"allTime" | "24hour">(
- "24hour"
- );
- const [loaded, setLoaded] = useState();
-
- const { apiState, network, userAddress } = useChainContext();
- const { address: addressUser, isConnected } = useAccount();
-
- const {
- loading: loading24Hours,
- error: error24Hours,
- data: data24Hours,
- } = useQuery(queryLeaderboardRanking24Hours);
-
- const {
- loading: loadingAllTime,
- error: errorAllTime,
- data: dataAllTime,
- } = useQuery(queryLeaderboardRankingAllTime);
-
- const [sortedData, setSortedData] = useState([]);
- const [sortedByItem, setSortedByItem] = useState(
- SORTING_INDEX.NUMBER
- );
-
- const user = {
- address: String(addressUser),
- rank: -1,
- number_of_transactions: 0,
- volume: 0,
- yield_earned: "0",
- } satisfies Data;
-
- const receiveData = useCallback(
- (
- leaderboardRankingKey: string,
- dataUserKey: string,
- loadingState: boolean
- ) => {
- const array = apiState[leaderboardRankingKey as keyof typeof apiState];
- const arr = apiState[dataUserKey as keyof typeof apiState];
-
- const leaderboard = array.map((leaderboardRow: Data, i: number) => ({
- ...leaderboardRow,
- rank: i + 1,
- }));
- if (isConnected) {
- if (arr.length === 0) {
- setSortedData([...leaderboard, user]);
- } else {
- setSortedData([...leaderboard, ...arr]);
- }
- } else if (!loadingState) {
- setSortedData([...leaderboard]);
- }
- },
- [apiState, isConnected, user]
- );
-
- useEffect(() => {
- if (filterIndex === "24hour") {
- receiveData(
- "leaderboardRanking24Hours",
- "dataUser24Hours",
- loading24Hours
- );
- } else {
- receiveData(
- "leaderboardRankingAllTime",
- "dataUserAllTime",
- loadingAllTime
- );
- }
- }, [filterIndex, loading24Hours, loadingAllTime, isConnected]);
-
- const [openDropdown, setOpenDropdown] = useState(false);
-
- const dropdownRef = useRef(null);
- useClickOutside(dropdownRef, () => {
- setTimeout(() => setOpenDropdown(false), 200);
- });
-
- const sortData = useCallback(
- (sortBy: string) => {
- const frozenRow = sortedData.find((row) => row.rank === -1);
- const dataToSort = sortedData.filter((row) => row.rank !== -1);
-
- let newSortedData = [];
-
- switch (sortBy) {
- case SORTING_INDEX.VOLUME:
- newSortedData = [...dataToSort].sort(
- (a, b) => Number(b.volume) - Number(a.volume)
- );
- break;
- case SORTING_INDEX.REWARDS:
- newSortedData = [...dataToSort].sort(
- (a, b) => Number(b.yield_earned) - Number(a.yield_earned)
- );
- break;
- default:
- newSortedData = [...dataToSort].sort(
- (a, b) => b.number_of_transactions - a.number_of_transactions
- );
- }
-
- newSortedData.forEach((item, index) => {
- item.rank = index + 1; // Assign ranks starting from 1
- });
-
- if (frozenRow) {
- newSortedData.unshift(frozenRow);
- }
-
- setSortedData(newSortedData);
- },
- [sortedData]
- );
-
- const leaderboardRankRow = useCallback(
- (data: {
- address: string;
- rank?: number;
- number_of_transactions: number;
- volume: number | string;
- yield_earned: string;
- }): IRow => {
- const { address, rank, number_of_transactions, volume, yield_earned } =
- data;
-
- return {
- className: `${styles.table_row} ${
- addressUser === address ? styles.highlighted_row : ""
- }`,
- RowElement: ({ heading }: { heading: string }) => {
- switch (heading) {
- case "RANK":
- return (
-
- {rank === -1 ? "???" : rank}
-
- );
- case "USER":
- return (
-
-
-
- {addressUser === address ? (
- "ME"
- ) : (
-
- )}
-
-
-
- );
- case "#TX":
- return (
-
- {number_of_transactions}
-
- );
- case "VOLUME (USD)":
- return (
-
-
- {toSignificantDecimals(Number(volume), 1)}
-
-
- );
- case "YIELD EARNED (USD)":
- return (
-
-
- {toSignificantDecimals(Number(yield_earned), 3)}
-
-
- );
- default:
- return <>>;
- }
- },
- };
- },
- [addressUser]
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- Fluidity Leaderboard{" "}
- Competition
-
-
-
-
- Step into the Fluidity Arena!{" "}
- {" "}
-
- Compete in our Leaderboard Challenge by transacting with ƒluid
- Assets on-chain. Rise in ranks, earn your bragging rights, and claim
- exclusive rewards. Each week brings a new opportunity — Dive in,
- explore, and may the best ƒluider win!{" "}
-
-
- LEARN MORE {" "}
-
-
-
-
-
-
-
-
-
- Weekly Challenge:{" "}
-
- Top Volume Contributors Win Extra Rewards!{" "}
-
-
-
-
-
- {Profile()}
-
-
-
-
-
-
- Leaderboard
-
-
-
- This leaderboard shows your rank among other users
- {filterIndex === "24hour" ? " per" : " for"}
-
- {filterIndex === "24hour" ? (
- 24 HOURS
- ) : (
- ALL TIME
- )}
- .
-
-
-
-
- {
- setFilterIndex("24hour");
- setSortedByItem(SORTING_INDEX.NUMBER);
- }}
- className={
- filterIndex === "24hour"
- ? `${styles.btn} ${styles.btn_highlited}`
- : `${styles.btn}`
- }
- >
- 24 HOURS
-
- {
- setFilterIndex("allTime");
- setSortedByItem(SORTING_INDEX.NUMBER);
- }}
- className={
- filterIndex === "24hour"
- ? `${styles.btn}`
- : `${styles.btn} ${styles.btn_highlited}`
- }
- >
-
- ALL TIME
-
-
-
-
-
SORT BY:
-
-
{
- setOpenDropdown(!openDropdown);
- }}
- className={styles.btn}
- >
-
- {SORTED_ITEM[sortedByItem as keyof typeof SORTED_ITEM]}{" "}
-
-
-
- {openDropdown && (
-
- )}
-
-
-
-
-
-
- {sortedData.length === 0 ? (
- !loaded ? (
-
Fetching table data...
- ) : (
- <>
-
- No records found!
-
- >
- )
- ) : (
-
leaderboardRankRow(data)}
- freezeRow={(data) => {
- return data.address === addressUser;
- }}
- loaded={loaded}
- />
- )}
-
-
-
-
-
-
-
- );
-}
diff --git a/web/leaderboard/src/app/providers.tsx b/web/leaderboard/src/app/providers.tsx
deleted file mode 100644
index 063c0d3b7..000000000
--- a/web/leaderboard/src/app/providers.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-"use client";
-
-import * as React from "react";
-import { WagmiConfig, configureChains, createConfig } from "wagmi";
-import { mainnet } from "wagmi/chains";
-import { MetaMaskConnector } from "wagmi/connectors/metaMask";
-import { WalletConnectConnector } from "wagmi/connectors/walletConnect";
-import { publicProvider } from "wagmi/providers/public";
-import { ApolloProvider } from "@apollo/client";
-
-import { client } from "./utils/client";
-import { ChainContextProvider } from "./queries/ChainContext";
-
-const { chains, publicClient, webSocketPublicClient } = configureChains(
- [mainnet],
- [publicProvider()]
-);
-
-export const FLU_WALLETCONNECT_ID = "60cd988a2683be6b1787c53081016310";
-
-const config = createConfig({
- autoConnect: true,
- connectors: [
- new MetaMaskConnector({ chains }),
- new WalletConnectConnector({
- chains,
- options: {
- projectId: FLU_WALLETCONNECT_ID,
- },
- }),
- ],
- publicClient,
- webSocketPublicClient,
-});
-
-export function Providers({ children }: { children: React.ReactNode }) {
- const [mounted, setMounted] = React.useState(false);
- React.useEffect(() => setMounted(true), []);
- return (
-
- {mounted && (
-
- {children}
-
- )}
-
- );
-}
diff --git a/web/leaderboard/src/app/queries/ChainContext.tsx b/web/leaderboard/src/app/queries/ChainContext.tsx
deleted file mode 100644
index b90d0b0d4..000000000
--- a/web/leaderboard/src/app/queries/ChainContext.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import { createContext, useContext, useState, useEffect } from "react";
-import { useAccount } from "wagmi";
-
-import {
- useLeaderboardRanking24Hours,
- useByUserLeaderboardRanking24Hours,
- LeaderboardRanking,
- LeaderboardRankingRes,
- useLeaderboardRankingAllTime,
- useByUserLeaderboardRankingAllTime,
-} from "./useLeaderboardRanking";
-
-export type Network = "arbitrum" | "ethereum" | "solana";
-
-type ChainData = {
- data?: string;
- loading: boolean;
-};
-
-interface ApiState {
- leaderboardRanking24Hours: LeaderboardRanking[];
- leaderboardRankingAllTime: LeaderboardRanking[];
- dataUser24Hours: LeaderboardRanking[];
- dataUserAllTime: LeaderboardRanking[];
-}
-
-interface ChainState {
- network: Network;
- userAddress?: string;
- apiState: ApiState;
-}
-
-const initChainState = (): ChainState => {
- return {
- network: "arbitrum",
- userAddress: " ",
- apiState: {
- leaderboardRanking24Hours: [],
- leaderboardRankingAllTime: [],
- dataUser24Hours: [],
- dataUserAllTime: [],
- },
- };
-};
-
-const ChainContext = createContext(initChainState());
-
-const ChainContextProvider = ({ children }: { children: React.ReactNode }) => {
- const network: Network = "arbitrum";
-
- const [leaderboardRanking24Hours, setLeaderboardRanking24Hours] = useState<
- LeaderboardRanking[]
- >([]);
- const [leaderboardRankingAllTime, setLeaderboardRankingAllTime] = useState<
- LeaderboardRanking[]
- >([]);
-
- const [dataUser24Hours, setDataUser24Hours] = useState(
- []
- );
-
- const [dataUserAllTime, setDataUserAllTime] = useState(
- []
- );
-
- const { address: userAddress, connector, isConnected } = useAccount();
-
- const [onChainData, setOnChainData] = useState({
- data: undefined,
- loading: false,
- });
-
- const apiState = {
- leaderboardRanking24Hours,
- leaderboardRankingAllTime,
- dataUser24Hours,
- dataUserAllTime,
- onChainData,
- };
-
- useLeaderboardRanking24Hours(
- ({ leaderboard_ranking }: LeaderboardRankingRes) =>
- setLeaderboardRanking24Hours(leaderboard_ranking),
- network
- );
-
- useByUserLeaderboardRanking24Hours(
- ({ leaderboard_ranking }: LeaderboardRankingRes) =>
- setDataUser24Hours(leaderboard_ranking),
- network,
- String(userAddress)
- );
-
- useLeaderboardRankingAllTime(
- ({ leaderboard_ranking }: LeaderboardRankingRes) =>
- setLeaderboardRankingAllTime(leaderboard_ranking),
- network
- );
-
- useByUserLeaderboardRankingAllTime(
- ({ leaderboard_ranking }: LeaderboardRankingRes) =>
- setDataUserAllTime(leaderboard_ranking),
- network,
- String(userAddress)
- );
-
- useEffect(() => {
- setOnChainData({ data: undefined, loading: true });
- }, []);
-
- return (
-
- {children}
-
- );
-};
-
-const useChainContext = () => {
- return useContext(ChainContext);
-};
-
-export { ChainContextProvider, useChainContext };
diff --git a/web/leaderboard/src/app/queries/useLeaderboardRanking.ts b/web/leaderboard/src/app/queries/useLeaderboardRanking.ts
deleted file mode 100644
index 3710f27f4..000000000
--- a/web/leaderboard/src/app/queries/useLeaderboardRanking.ts
+++ /dev/null
@@ -1,185 +0,0 @@
-import { useMemo } from "react";
-import { gql, useQuery } from "@apollo/client";
-
-export const queryByUserLeaderboardRanking24Hours = gql`
- query LeaderboardRanking($address: String!) {
- leaderboard_ranking(
- args: { i: "1 day", network_: "arbitrum" }
- limit: 1
- where: { address: { _eq: $address } }
- ) {
- address
- number_of_transactions
- rank
- volume
- yield_earned
- }
- }
-`;
-
-export const queryLeaderboardRanking24Hours = gql`
- query LeaderboardRanking($limit: Int = 40) {
- leaderboard_ranking(
- args: { i: "1 day", network_: "arbitrum" }
- limit: $limit
- order_by: { number_of_transactions: desc }
- ) {
- address
- number_of_transactions
- rank
- volume
- yield_earned
- }
- }
-`;
-
-export const queryLeaderboardRankingAllTime = gql`
- query LeaderboardRanking($limit: Int = 40) {
- leaderboard_ranking(
- args: { network_: "arbitrum" }
- limit: $limit
- order_by: { number_of_transactions: desc }
- ) {
- address
- number_of_transactions
- rank
- volume
- yield_earned
- }
- }
-`;
-
-export const queryByUserLeaderboardRankingAllTime = gql`
- query LeaderboardRanking($address: String!) {
- leaderboard_ranking(
- args: { network_: "arbitrum" }
- limit: 1
- where: { address: { _eq: $address } }
- ) {
- address
- number_of_transactions
- rank
- volume
- yield_earned
- }
- }
-`;
-
-export const queryLeaderboardRanking24Hour = gql`
- query LeaderboardRanking($limit: Int = 40) {
- leaderboard_ranking(
- args: { i: "1 day", network_: $network }
- limit: $limit
- order_by: { number_of_transactions: desc }
- ) {
- address
- number_of_transactions
- rank
- volume
- yield_earned
- }
- }
-`;
-
-export type LeaderboardRanking = {
- rank?: number;
- address: string;
- volume: string | number;
- number_of_transactions: number;
- yield_earned: string;
-};
-
-export type LeaderboardRankingRes = {
- leaderboard_ranking: LeaderboardRanking[];
-};
-
-const useLeaderboardRanking24Hours = (
- onNext: (ranking: LeaderboardRankingRes) => void,
- network: string
-) => {
- const { query, options } = useMemo(
- () => ({
- query: queryLeaderboardRanking24Hour,
- options: {
- variables: {
- network,
- },
- onCompleted: onNext,
- },
- }),
- [network, onNext]
- );
-
- return useQuery(query, options);
-};
-
-const useByUserLeaderboardRanking24Hours = (
- onNext: (ranking: LeaderboardRankingRes) => void,
- network: string,
- address: string
-) => {
- const { query, options } = useMemo(
- () => ({
- query: queryByUserLeaderboardRanking24Hours,
- options: {
- variables: {
- network,
- address,
- },
- onCompleted: onNext,
- },
- }),
- [network, onNext, address]
- );
-
- return useQuery(query, options);
-};
-
-const useLeaderboardRankingAllTime = (
- onNext: (ranking: LeaderboardRankingRes) => void,
- network: string
-) => {
- const { query, options } = useMemo(
- () => ({
- query: queryLeaderboardRankingAllTime,
- options: {
- variables: {
- network,
- },
- onCompleted: onNext,
- },
- }),
- [network, onNext]
- );
-
- return useQuery(query, options);
-};
-
-const useByUserLeaderboardRankingAllTime = (
- onNext: (ranking: LeaderboardRankingRes) => void,
- network: string,
- address: string
-) => {
- const { query, options } = useMemo(
- () => ({
- query: queryByUserLeaderboardRankingAllTime,
- options: {
- variables: {
- network,
- address,
- },
- onCompleted: onNext,
- },
- }),
- [network, onNext, address]
- );
-
- return useQuery(query, options);
-};
-
-export {
- useLeaderboardRanking24Hours,
- useByUserLeaderboardRanking24Hours,
- useLeaderboardRankingAllTime,
- useByUserLeaderboardRankingAllTime,
-};
diff --git a/web/leaderboard/src/app/types.ts b/web/leaderboard/src/app/types.ts
deleted file mode 100644
index 967752fff..000000000
--- a/web/leaderboard/src/app/types.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export interface AggregatedData {
- [from: string]: {
- rank?: number;
- user: string;
- volume: number;
- tx: number;
- earned: number;
- };
-}
-
-export interface Data {
- rank?: number;
- address: string;
- volume: string | number;
- number_of_transactions: number;
- yield_earned: string;
-}
-
-export type IRow = React.HTMLAttributes & {
- RowElement: React.FC<{ heading: string }>;
-};
diff --git a/web/leaderboard/src/app/utils/client.ts b/web/leaderboard/src/app/utils/client.ts
deleted file mode 100644
index c0f1863fc..000000000
--- a/web/leaderboard/src/app/utils/client.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { ApolloClient, InMemoryCache } from "@apollo/client";
-
-export const client = new ApolloClient({
- uri: "https://fluidity.hasura.app/v1/graphql",
- cache: new InMemoryCache(),
-});
diff --git a/web/leaderboard/src/pages/_error.jsx b/web/leaderboard/src/pages/_error.jsx
deleted file mode 100644
index 46a61d690..000000000
--- a/web/leaderboard/src/pages/_error.jsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as Sentry from "@sentry/nextjs";
-import Error from "next/error";
-
-const CustomErrorComponent = (props) => {
- return ;
-};
-
-CustomErrorComponent.getInitialProps = async (contextData) => {
- // In case this is running in a serverless function, await this in order to give Sentry
- // time to send the error before the lambda exits
- await Sentry.captureUnderscoreErrorException(contextData);
-
- // This will contain the status code of the response
- return Error.getInitialProps(contextData);
-};
-
-export default CustomErrorComponent;
diff --git a/web/leaderboard/src/styles/_breakpoints.scss b/web/leaderboard/src/styles/_breakpoints.scss
deleted file mode 100644
index 282dbcc64..000000000
--- a/web/leaderboard/src/styles/_breakpoints.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-@mixin max-560px {
- @media (max-width: 560px) {
- @content;
- }
-}
-
-@mixin max-620px {
- @media (max-width: 620px) {
- @content;
- }
-}
-
-@mixin max-760px {
- @media (max-width: 760px) {
- @content;
- }
-}
-
-@mixin max-860px {
- @media (max-width: 860px) {
- @content;
- }
-}
-
-@mixin max-900px {
- @media (max-width: 900px) {
- @content;
- }
-}
-
-@mixin min-861px {
- @media (min-width: 861px) {
- @content;
- }
-}
-
-@mixin max-1080px {
- @media (max-width: 1080px) {
- @content;
- }
-}
-
-@mixin max-1205px {
- @media (max-width: 1205px) {
- @content;
- }
-}
diff --git a/web/leaderboard/src/styles/_colours.scss b/web/leaderboard/src/styles/_colours.scss
deleted file mode 100644
index 366899cbe..000000000
--- a/web/leaderboard/src/styles/_colours.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-$fluidBlack: #000000;
-$backgroundBlack: #151516;
-$backgroundGrey: #2c2c2d;
-$fluidWhite: #fffefe;
-$textGrey: #838281;
-$fluidDenimBlue: #01101c;
diff --git a/web/leaderboard/src/styles/_fonts.scss b/web/leaderboard/src/styles/_fonts.scss
deleted file mode 100644
index f40b026f2..000000000
--- a/web/leaderboard/src/styles/_fonts.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-@import url("https://static.fluidity.money/fonts/aeonik/stylesheet-family-support.css");
-@import url("https://static.fluidity.money/fonts/spline/stylesheet-family-support.css");
-@import url("https://static.fluidity.money/fonts/inter/stylesheet-family-support.css");
diff --git a/web/leaderboard/src/styles/config.scss b/web/leaderboard/src/styles/config.scss
deleted file mode 100644
index 86fca62a8..000000000
--- a/web/leaderboard/src/styles/config.scss
+++ /dev/null
@@ -1,2 +0,0 @@
-@import "./colours";
-@import "./breakpoints";
diff --git a/web/leaderboard/tsconfig.json b/web/leaderboard/tsconfig.json
deleted file mode 100644
index 4a70b8806..000000000
--- a/web/leaderboard/tsconfig.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "compilerOptions": {
- "target": "es5",
- "lib": ["dom", "dom.iterable", "esnext"],
- "types": ["cypress"],
- "allowJs": true,
- "skipLibCheck": true,
- "strict": true,
- "noEmit": true,
- "esModuleInterop": true,
- "module": "esnext",
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "jsx": "preserve",
- "incremental": true,
- "plugins": [
- {
- "name": "next"
- }
- ],
- "paths": {
- "@/*": ["./src/*"],
- "react": ["./node_modules/@types/react"]
- }
- },
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
-}