From f6a1732d40cb450c060e2c1f1ff95c184040fd10 Mon Sep 17 00:00:00 2001
From: Adam Domurad
Date: Tue, 25 Aug 2026 14:32:59 -0400
Subject: [PATCH 1/6] explorer-ui-v2: remove operator-specific content for
Foundation operation
The explorer is now operated by the Aztec Foundation rather than the
original sequencer-operator entity. Strip the content that only made
sense for that operator:
- Remove the /staking page (sequencer provider pitch, delegation links,
incident post-mortems) and its nav entry and about-us CTA.
- Rewrite the privacy notice: controlling entity, contact address,
hosting location (AWS London + CDN), no third-party analytics, no
user accounts.
- Drop the Plausible loader that shipped visitor page views to a
third-party analytics host outside the Foundation's control.
- Note Foundation operation on the about page.
Co-Authored-By: Claude Fable 5
Claude-Session: https://claude.ai/code/session_015mXnawSBPUySPtPwjLp5g1
---
services/explorer-ui-v2/index.html | 8 -
.../src/components/layout/top-bar.tsx | 2 -
.../src/pages/staking/incidents.ts | 188 --------------
.../src/pages/staking/index.tsx | 231 ------------------
.../src/pages/static/about-us.tsx | 12 +-
.../src/pages/static/privacy-policy.tsx | 40 ++-
services/explorer-ui-v2/src/routeTree.gen.ts | 18 --
.../src/routes/staking.lazy.tsx | 6 -
8 files changed, 21 insertions(+), 484 deletions(-)
delete mode 100644 services/explorer-ui-v2/src/pages/staking/incidents.ts
delete mode 100644 services/explorer-ui-v2/src/pages/staking/index.tsx
delete mode 100644 services/explorer-ui-v2/src/routes/staking.lazy.tsx
diff --git a/services/explorer-ui-v2/index.html b/services/explorer-ui-v2/index.html
index a4f914db7..7362a453c 100644
--- a/services/explorer-ui-v2/index.html
+++ b/services/explorer-ui-v2/index.html
@@ -33,14 +33,6 @@
name="keywords"
content="aztec, block explorer, blockchain, chicmoz, aztecscan, aztec scan"
/>
-
Aztec-Scan
diff --git a/services/explorer-ui-v2/src/components/layout/top-bar.tsx b/services/explorer-ui-v2/src/components/layout/top-bar.tsx
index 21fce3e86..a598e4411 100644
--- a/services/explorer-ui-v2/src/components/layout/top-bar.tsx
+++ b/services/explorer-ui-v2/src/components/layout/top-bar.tsx
@@ -27,7 +27,6 @@ export type TopBarActive =
| "ecosystem"
| "l1events"
| "governance"
- | "staking"
| "health";
interface Props {
@@ -70,7 +69,6 @@ const MORE_NAV_ITEMS: NavItem[] = [
to: "/governance",
group: "aztec",
},
- { key: "staking", label: "Staking", to: "/staking", group: "dev" },
{
key: "fee-recipients",
label: "Fee Recipients",
diff --git a/services/explorer-ui-v2/src/pages/staking/incidents.ts b/services/explorer-ui-v2/src/pages/staking/incidents.ts
deleted file mode 100644
index 70d034b50..000000000
--- a/services/explorer-ui-v2/src/pages/staking/incidents.ts
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- * Static incident log for the aztec-scan sequencer. Curated post-mortems;
- * update this file when a new incident is recorded.
- */
-
-export type IncidentStatus =
- | "postmortem"
- | "resolved"
- | "ongoing"
- | "monitoring";
-export type IncidentSeverity = "critical" | "major" | "minor";
-export type IncidentTimelineTag = "detect" | "mitig" | "resolve" | "";
-
-export interface IncidentTimelineRow {
- t: string;
- tag: IncidentTimelineTag;
- label: string;
- text: string;
-}
-
-export interface IncidentImpact {
- label: string;
- value: string;
- tone: "red" | "amber" | "";
-}
-
-export interface IncidentSection {
- heading: string;
- body: string;
- hash?: string;
- hashHref?: string;
- links?: { label: string; href: string }[];
-}
-
-export interface Incident {
- id: string;
- title: string;
- dateLabel: string;
- startedAt: string;
- resolvedAt: string | null;
- durationLabel: string;
- status: IncidentStatus;
- severity: IncidentSeverity;
- tldr: string;
- impact: IncidentImpact[];
- timeline: IncidentTimelineRow[];
- sections: IncidentSection[];
-}
-
-export const INCIDENTS: Incident[] = [
- {
- id: "2026-06-20-postgres-ha-misconfiguration",
- title: "Sequencer disruption · Postgres HA misconfiguration",
- dateLabel: "Jun 20-22, 2026",
- startedAt: "2026-06-20 21:30 CEST",
- resolvedAt: "2026-06-22 12:11 CEST",
- durationLabel: "1d 14h 41m",
- status: "postmortem",
- severity: "major",
- tldr: "A Postgres HA misconfiguration broke HA writer availability and temporarily stopped our sequencers from posting attestations. We mitigated by disabling HA, keeping validation running through a reduced setup, then tightened access rules and added direct HA failure alerting. Two sequencers were affected for 2,000 AZTEC each.",
- impact: [
- { label: "Sequencers affected", value: "2", tone: "red" },
- { label: "AZTEC slashed", value: "4,000", tone: "red" },
- ],
- timeline: [
- {
- t: "20-06 21:30",
- tag: "detect",
- label: "DETECT",
- text: "Dashtec showed missed blocks while the Aztec node itself stayed synced; the HA writer path was failing and attestations could not be posted.",
- },
- {
- t: "21-06 02:34",
- tag: "mitig",
- label: "MITIGATE",
- text: "HA disabled and a reduced validator setup kept online while the misconfiguration was investigated and fixed.",
- },
- {
- t: "21-06 21:10",
- tag: "resolve",
- label: "FIX",
- text: "Postgres HA access rules hardened so etcd, Patroni REST, direct Postgres, and HAProxy access are only reachable by intended infrastructure.",
- },
- {
- t: "22-06 12:11",
- tag: "resolve",
- label: "RESOLVE",
- text: "HA monitoring and alerting expanded with direct coverage for no-primary, writer-backend, etcd quorum, and HAProxy failure modes.",
- },
- ],
- sections: [
- {
- heading: "Observed issue",
- body: "A Postgres HA misconfiguration left internal management ports more exposed than intended: etcd client/peer ports 2379/2380, Patroni REST API port 8008, and direct Postgres port 5432. This caused Patroni state to change unexpectedly, demoted the real primary, and broke HA writer availability.",
- },
- {
- heading: "Impact",
- body: "The Aztec nodes remained up and synced, so existing node-diff alerts did not fire, but they could not post transactions or attestations through the broken HA writer path. Two sequencer addresses were affected for 2,000 AZTEC each:",
- links: [
- {
- label: "0x901933e29e4be91125965282b0a25c08efb3541a",
- href: "https://dashtec.xyz/sequencers/0x901933e29e4be91125965282b0a25c08efb3541a",
- },
- {
- label: "0x9b91b873e775884b00c6906d2e8af3b3a141fec0",
- href: "https://dashtec.xyz/sequencers/0x9b91b873e775884b00c6906d2e8af3b3a141fec0",
- },
- ],
- },
- {
- heading: "Fixes and counter measures",
- body: "We hardened the Postgres HA firewall by removing legacy open rules, allowlisting internal HA management ports to HA nodes only, and preserving HAProxy access only for intended Aztec nodes. We also added native etcd and HAProxy metrics plus direct alerts for no-primary, no-active-writer, quorum, leader-change, and writer-error conditions.",
- },
- {
- heading: "Next steps",
- body: "We will keep HA management ports private by default, keep Postgres HA and etcd alerts routed directly, rotate affected credentials, and review payout/slash handling using the actual payout flow rather than a separate monitoring spreadsheet. We pledge to pay out the slashed amount to affected delegators.",
- },
- ],
- },
- {
- id: "2025-01-03-sequencer-downtime",
- title: "Sequencer downtime · web3signer misconfiguration",
- dateLabel: "Jan 3-4, 2025",
- startedAt: "2025-01-03 12:30 UTC",
- resolvedAt: "2025-01-04 21:00 UTC",
- durationLabel: "32h 30m",
- status: "postmortem",
- severity: "major",
- tldr: "Our signing-service was down 3/1 12:30 to 4/1 21:00 which resulted in one attester-address being slashed 2,000 AZTEC. Administrative errors from our side — counter-measures have been taken and the attester will be re-paid once the token unlocks.",
- impact: [
- { label: "Attesters slashed", value: "1", tone: "red" },
- { label: "AZTEC slashed", value: "2,000", tone: "red" },
- ],
- timeline: [
- {
- t: "12:30",
- tag: "detect",
- label: "DETECT",
- text: "Web3signer + monitoring stack go offline due to server misconfig. Alerts silent.",
- },
- {
- t: "04-01 21:00",
- tag: "resolve",
- label: "RESOLVE",
- text: "Attestations resume. Attester-key 0x8d28… confirmed slashed for 2,000 AZTEC.",
- },
- ],
- sections: [
- {
- heading: "Observed issue",
- body: "Some of our core infrastructure running in the cloud, namely the web3signing service and our monitoring stack, went offline due to a misconfiguration in our servers. This resulted in nodes not being able to sign attestations and block proposals, and our monitoring stack also being impacted made it so warnings were not appropriately sent out.",
- },
- {
- heading: "Impact",
- body: "Besides the obvious fact of us losing trust from the people staking their AZTEC to us, and us not performing the duties as a sequencer in the network, we also had one of our attester-keys slashed:",
- hash: "0x8d28ee3293d02a7be59b06549185e8a4835df5e5",
- hashHref:
- "https://dashtec.xyz/sequencers/0x8d28ee3293d02a7be59b06549185e8a4835df5e5",
- },
- {
- heading: "Fixes and counter measures",
- body: "On the bright side, our recent infrastructure changes made it extremely easy for us to add two new VPSes and set-up both monitoring and signing in no time.",
- },
- {
- heading: "Next steps",
- body: "As for the trust, we now pledge to pay back the slashed AZTEC to the address once tokens are unlocked. Going forward, we are working on setting up an external monitoring system in the near future — and looking into distributing our signing-service.",
- },
- ],
- },
-];
-
-export const PROVIDER = {
- name: "aztec-scan",
- id: "provider #4",
- sequencerAddr: "0x8d28ee3293d02a7be59b06549185e8a4835df5e5",
- withdrawer: "0xf7b2b9c5ae113d8cbb4a72d6a5c82d90e3e6e4e7",
- region: "eu-west / infra-redundant",
- nodeVersion: "aztec-nargo 0.87.4",
- online: true,
- feeBps: 2500,
-} as const;
-
-export const STAKE_URL = "https://stake.aztec.network/providers/4";
-export const DASHTEC_URL = "https://dashtec.xyz/providers/4";
-export const COMMISSION_FORUM_URL =
- "https://forum.aztec.network/t/operator-commission-adjustments/8588";
-export const PAYOUT_AUDIT_URL =
- "https://github.com/aztec-scan/aztec-payout-audit";
diff --git a/services/explorer-ui-v2/src/pages/staking/index.tsx b/services/explorer-ui-v2/src/pages/staking/index.tsx
deleted file mode 100644
index cf97a233c..000000000
--- a/services/explorer-ui-v2/src/pages/staking/index.tsx
+++ /dev/null
@@ -1,231 +0,0 @@
-import { type FC, useMemo, useState } from "react";
-import { ConsoleHead, Shell } from "~/components/layout";
-import {
- COMMISSION_FORUM_URL,
- DASHTEC_URL,
- INCIDENTS,
- PAYOUT_AUDIT_URL,
- PROVIDER,
- STAKE_URL,
- type Incident,
-} from "./incidents";
-
-const statusLabel = (status: Incident["status"]): string =>
- status === "postmortem" ? "post-mortem" : status;
-
-export const StakingPage: FC = () => {
- const [selectedId, setSelectedId] = useState(INCIDENTS[0].id);
- const selected = useMemo(
- () => INCIDENTS.find((i) => i.id === selectedId) ?? INCIDENTS[0],
- [selectedId],
- );
-
- return (
-
-
-
-
-
-
Stake to Aztec-Scan
-
- We provide Aztec-Scan services free of charge and open source. Our
- mission is to benefit the entire Aztec ecosystem by building tools
- that everyone can use and contribute to.
-
-
- The best way you can support us is by delegating your{" "}
- $AZTEC to our
- Sequencer. This helps us maintain and improve Aztec-Scan while
- contributing to the security and decentralization of the Aztec
- network.
-
-
-
-
-
-
- Current commission: {(PROVIDER.feeBps / 100).toFixed(0)}%
-
- off-chain audited payouts
-
-
-
- As per 16/6 we have moved to off-chain payouts. Aztec staking
- commissions are locked into each delegation when the stake is
- created, while operator costs such as Ethereum base fees, blob
- fees, signalling overhead, and infrastructure change over time.
- We are moving our effective commission to the community baseline
- of 25% so operating the aztec-scan sequencer remains
- sustainable.
-
-
- Rewards will be paid through the off-chain audited payout flow
- described in the Aztec forum post. Rewards route to an
- operator-controlled coinbase wallet, then we publish audit
- artifacts so delegators can independently verify weekly payouts
- against on-chain data.
-
-
-
-
-
-
-
-
-
-
- Incidents
- {INCIDENTS.length}
-
- {INCIDENTS.map((inc) => (
- setSelectedId(inc.id)}
- >
- {inc.dateLabel.toUpperCase()}
- {inc.title}
-
-
-
- {statusLabel(inc.status)}
-
- {inc.severity}
-
-
- ))}
-
-
-
-
-
- incident
-
- {selected.id}
-
-
- {selected.severity}
-
-
-
-
- {statusLabel(selected.status)}
-
-
- {selected.title}
-
- started {selected.startedAt}
- {selected.resolvedAt ? (
- <>
- {" "}
- · resolved {selected.resolvedAt} ·{" "}
-
- {selected.durationLabel}
-
- >
- ) : (
- <>
- {" "}
- · ongoing
- >
- )}
-
-
-
-
-
-
TL;DR
- {selected.tldr}
-
-
-
- {selected.impact.map((im, i) => (
-
-
{im.label}
-
{im.value}
-
- ))}
-
-
-
Timeline
-
- {selected.timeline.map((row, i) => (
-
- {row.t}
-
- {row.tag && (
- {row.label}
- )}
- {row.text}
-
-
- ))}
-
-
- {selected.sections.map((s, i) => (
-
-
{s.heading}
-
- {s.body}
- {s.hash && (
- <>
- {" "}
-
-
-
- {s.hash}
-
- >
- )}
-
- {s.links && (
-
- )}
-
- ))}
-
-
-
-
- );
-};
diff --git a/services/explorer-ui-v2/src/pages/static/about-us.tsx b/services/explorer-ui-v2/src/pages/static/about-us.tsx
index b70ab4dba..c6a6630ca 100644
--- a/services/explorer-ui-v2/src/pages/static/about-us.tsx
+++ b/services/explorer-ui-v2/src/pages/static/about-us.tsx
@@ -1,4 +1,3 @@
-import { Link } from "@tanstack/react-router";
import { type FC } from "react";
import { StaticPage } from "./static-page";
@@ -52,11 +51,10 @@ export const AboutUsPage: FC = () => (
on the ground. Because Web3 is simply too valuable to be used carelessly.
This is the future we are forging, after all.
-
+ Aztec-Scan was created by its original builders and is now operated by
+ the Aztec Foundation as a public good for the Aztec ecosystem. The
+ source remains open under the same licence.
+
);
diff --git a/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx b/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx
index 8973f2550..54543e99a 100644
--- a/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx
+++ b/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx
@@ -1,17 +1,17 @@
import { type FC } from "react";
import { StaticPage } from "./static-page";
-const CONTACT_EMAIL = "info@obscura.network";
+const CONTACT_EMAIL = "privacy@aztec.foundation";
export const PrivacyPolicyPage: FC = () => (
- This privacy notice for Send Return B.V. (“we,” “us,”
+ This privacy notice for the Aztec Foundation (“we,” “us,”
or “our”), describes how and why we might collect, store, use,
and/or share (“process”) your information when you use our
services (“Services”), such as when you:
@@ -64,23 +64,13 @@ export const PrivacyPolicyPage: FC = () => (
-
Analytics
+ Analytics and cookies
- We use a self-hosted instance of Plausible Analytics to collect anonymous
- usage statistics about our website. Because we self-host, your data is
- not shared with any third-party analytics provider and remains under our
- control on our servers located in the EU.
+ We do not run third-party analytics or advertising scripts, and the
+ Services do not set tracking cookies. Aggregate request metrics (such as
+ request counts, error rates, and latency) are derived from our own
+ infrastructure logs and are not used to identify individual visitors.
- Plausible Analytics is privacy-focused and:
-
- Does not use cookies
- Does not collect personal information
- Does not track users across websites
-
- Collects only minimal, aggregated usage data (page views, referrer
- sources, and anonymous device information)
-
-
2. How do we process your information?
@@ -163,10 +153,12 @@ export const PrivacyPolicyPage: FC = () => (
6. International transfers
- Our servers are located in France. If you are accessing our Services
- from outside France, please be aware that your information may be
- transferred to, stored, and processed by us and our third parties in
- France and other countries. We will take all necessary measures to
+ Our servers are hosted by Amazon Web Services in the United Kingdom
+ (London), and static content is delivered through a global content
+ delivery network. If you are accessing our Services from elsewhere,
+ please be aware that your information may be transferred to, stored, and
+ processed by us and our service providers in the United Kingdom and other
+ countries. We will take all necessary measures to
protect your personal information in accordance with this notice and
applicable law.
@@ -176,7 +168,7 @@ export const PrivacyPolicyPage: FC = () => (
We keep your information for as long as necessary to fulfil the purposes
outlined in this notice unless otherwise required by law. No purpose in
this notice will require us to keep your personal information for longer
- than 6 months past the termination of the user's account.
+ than 6 months. The Services do not offer user accounts.
8. How do we keep your information safe?
@@ -252,7 +244,7 @@ export const PrivacyPolicyPage: FC = () => (
If you have questions or comments about this notice, email us at{" "}
{CONTACT_EMAIL} or write to:
- Send Return B.V.
+ Aztec Foundation
15. Review, update, or delete your data
diff --git a/services/explorer-ui-v2/src/routeTree.gen.ts b/services/explorer-ui-v2/src/routeTree.gen.ts
index a17e9ff94..dc2d8dad2 100644
--- a/services/explorer-ui-v2/src/routeTree.gen.ts
+++ b/services/explorer-ui-v2/src/routeTree.gen.ts
@@ -17,7 +17,6 @@ import { Route as rootRoute } from './routes/__root'
// Create Virtual Routes
const TermsAndConditionsLazyImport = createFileRoute('/terms-and-conditions')()
-const StakingLazyImport = createFileRoute('/staking')()
const SearchLazyImport = createFileRoute('/search')()
const PrivacyPolicyLazyImport = createFileRoute('/privacy-policy')()
const FeeRecipientsLazyImport = createFileRoute('/fee-recipients')()
@@ -63,11 +62,6 @@ const TermsAndConditionsLazyRoute = TermsAndConditionsLazyImport.update({
import('./routes/terms-and-conditions.lazy').then((d) => d.Route),
)
-const StakingLazyRoute = StakingLazyImport.update({
- path: '/staking',
- getParentRoute: () => rootRoute,
-} as any).lazy(() => import('./routes/staking.lazy').then((d) => d.Route))
-
const SearchLazyRoute = SearchLazyImport.update({
path: '/search',
getParentRoute: () => rootRoute,
@@ -286,13 +280,6 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof SearchLazyImport
parentRoute: typeof rootRoute
}
- '/staking': {
- id: '/staking'
- path: '/staking'
- fullPath: '/staking'
- preLoaderRoute: typeof StakingLazyImport
- parentRoute: typeof rootRoute
- }
'/terms-and-conditions': {
id: '/terms-and-conditions'
path: '/terms-and-conditions'
@@ -432,7 +419,6 @@ export const routeTree = rootRoute.addChildren({
FeeRecipientsLazyRoute,
PrivacyPolicyLazyRoute,
SearchLazyRoute,
- StakingLazyRoute,
TermsAndConditionsLazyRoute,
AddressAddressLazyRoute,
BlocksBlockNumberLazyRoute,
@@ -470,7 +456,6 @@ export const routeTree = rootRoute.addChildren({
"/fee-recipients",
"/privacy-policy",
"/search",
- "/staking",
"/terms-and-conditions",
"/address/$address",
"/blocks/$blockNumber",
@@ -511,9 +496,6 @@ export const routeTree = rootRoute.addChildren({
"/search": {
"filePath": "search.lazy.tsx"
},
- "/staking": {
- "filePath": "staking.lazy.tsx"
- },
"/terms-and-conditions": {
"filePath": "terms-and-conditions.lazy.tsx"
},
diff --git a/services/explorer-ui-v2/src/routes/staking.lazy.tsx b/services/explorer-ui-v2/src/routes/staking.lazy.tsx
deleted file mode 100644
index fcc977fc9..000000000
--- a/services/explorer-ui-v2/src/routes/staking.lazy.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { createLazyFileRoute } from "@tanstack/react-router";
-import { StakingPage } from "~/pages/staking";
-
-export const Route = createLazyFileRoute("/staking")({
- component: StakingPage,
-});
From 78a3c12feb8758c7db791b81d6f83fb53d3c51a2 Mon Sep 17 00:00:00 2001
From: Adam Domurad
Date: Tue, 25 Aug 2026 14:36:44 -0400
Subject: [PATCH 2/6] privacy notice: use hello@aztec.foundation contact
---
services/explorer-ui-v2/src/pages/static/privacy-policy.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx b/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx
index 54543e99a..c726d2bcc 100644
--- a/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx
+++ b/services/explorer-ui-v2/src/pages/static/privacy-policy.tsx
@@ -1,7 +1,7 @@
import { type FC } from "react";
import { StaticPage } from "./static-page";
-const CONTACT_EMAIL = "privacy@aztec.foundation";
+const CONTACT_EMAIL = "hello@aztec.foundation";
export const PrivacyPolicyPage: FC = () => (
Date: Tue, 25 Aug 2026 14:48:38 -0400
Subject: [PATCH 3/6] remove legacy explorer-ui (v1)
explorer-ui-v2 has been the shipped frontend for production and CI;
the v1 service only remained wired into local/staging skaffold configs.
It also carried the previous operator's privacy notice, staking page,
and third-party analytics loader. Delete the service, its k8s
manifests, and the skaffold entries that pointed at it.
Co-Authored-By: Claude Fable 5
Claude-Session: https://claude.ai/code/session_015mXnawSBPUySPtPwjLp5g1
---
k8s/local/explorer-ui/mainnet/deployment.yaml | 28 -
k8s/local/explorer-ui/mainnet/httproute.yaml | 22 -
k8s/local/explorer-ui/mainnet/service.yaml | 13 -
.../explorer-ui/remote_devnet/deployment.yaml | 28 -
.../explorer-ui/remote_devnet/httproute.yaml | 22 -
.../explorer-ui/remote_devnet/service.yaml | 13 -
k8s/local/explorer-ui/sandbox/deployment.yaml | 28 -
k8s/local/explorer-ui/sandbox/httproute.yaml | 22 -
k8s/local/explorer-ui/sandbox/service.yaml | 13 -
k8s/local/explorer-ui/skaffold.mainnet.yaml | 32 -
.../explorer-ui/skaffold.remote_devnet.yaml | 32 -
k8s/local/explorer-ui/skaffold.sandbox.yaml | 32 -
k8s/local/explorer-ui/skaffold.testnet.yaml | 32 -
k8s/local/explorer-ui/testnet/deployment.yaml | 28 -
k8s/local/explorer-ui/testnet/httproute.yaml | 22 -
k8s/local/explorer-ui/testnet/service.yaml | 13 -
k8s/local/skaffold.mainnet.yaml | 1 -
k8s/local/skaffold.multi_network.yaml | 1 -
k8s/local/skaffold.only_explorer-ui.yaml | 4 -
k8s/local/skaffold.remote_devnet.yaml | 1 -
k8s/local/skaffold.testnet.yaml | 1 -
k8s/staging/explorer-ui/skaffold.testnet.yaml | 32 -
.../explorer-ui/testnet/deployment.yaml | 30 -
k8s/staging/explorer-ui/testnet/ingress.yaml | 37 -
k8s/staging/explorer-ui/testnet/nodeport.yaml | 14 -
k8s/staging/explorer-ui/testnet/service.yaml | 13 -
k8s/staging/skaffold.testnet.yaml | 1 -
services/explorer-ui/.env.development | 7 -
services/explorer-ui/.eslintrc.cjs | 54 -
services/explorer-ui/.gitignore | 24 -
services/explorer-ui/Dockerfile | 55 -
services/explorer-ui/Dockerfile.prod | 58 -
services/explorer-ui/README.md | 30 -
services/explorer-ui/components.json | 17 -
services/explorer-ui/index.html | 50 -
services/explorer-ui/k8s/base/deployment.yaml | 32 -
.../explorer-ui/k8s/base/kustomization.yaml | 6 -
services/explorer-ui/k8s/base/service.yaml | 15 -
.../k8s/overlays/devnet/httproute.yaml | 24 -
.../k8s/overlays/devnet/kustomization.yaml | 40 -
.../k8s/overlays/mainnet/httproute.yaml | 29 -
.../k8s/overlays/mainnet/kustomization.yaml | 40 -
.../k8s/overlays/testnet/httproute.yaml | 24 -
.../k8s/overlays/testnet/kustomization.yaml | 40 -
services/explorer-ui/package.json | 81 --
services/explorer-ui/postcss.config.js | 6 -
services/explorer-ui/src/api/block.ts | 92 --
services/explorer-ui/src/api/chain-info.ts | 23 -
services/explorer-ui/src/api/client.ts | 100 --
services/explorer-ui/src/api/contract.ts | 289 -----
services/explorer-ui/src/api/dropped-tx.ts | 20 -
services/explorer-ui/src/api/fee-recipient.ts | 14 -
services/explorer-ui/src/api/index.ts | 7 -
.../explorer-ui/src/api/l1-l2-validator.ts | 48 -
.../explorer-ui/src/api/l1/contract-events.ts | 14 -
.../src/api/l1/fee-juice-portal-deposits.ts | 21 -
services/explorer-ui/src/api/rpc-node.ts | 25 -
services/explorer-ui/src/api/search.ts | 17 -
services/explorer-ui/src/api/stats.ts | 36 -
services/explorer-ui/src/api/tx-effect.ts | 91 --
services/explorer-ui/src/api/tx.ts | 64 -
.../src/api/verified-contract-instance.ts | 29 -
.../aztec-scan-brandkit/AS banner black.svg | 16 -
.../AS banner deep purple.svg | 23 -
.../AS banner light gray.svg | 23 -
.../AS banner light purple.svg | 23 -
.../aztec-scan-brandkit/AS banner purple.svg | 23 -
.../aztec-scan-brandkit/AS banner white.svg | 23 -
.../aztec-scan-brandkit/AS logo black.svg | 5 -
.../AS logo deep purple.svg | 12 -
.../AS logo light gray.svg | 12 -
.../AS logo light purple.svg | 12 -
.../aztec-scan-brandkit/AS logo purple.svg | 12 -
.../aztec-scan-brandkit/AS logo white.svg | 12 -
.../src/assets/aztecscout-preview.png | Bin 15351 -> 0 bytes
services/explorer-ui/src/assets/copy-icon.svg | 1 -
.../explorer-ui/src/assets/cross-icon.svg | 3 -
.../explorer-ui/src/assets/discord-icon.svg | 3 -
.../explorer-ui/src/assets/github-icon.svg | 3 -
services/explorer-ui/src/assets/index.ts | 21 -
.../explorer-ui/src/assets/loading-icon.svg | 25 -
.../explorer-ui/src/assets/search-icon.svg | 4 -
.../explorer-ui/src/assets/success-icon.svg | 7 -
.../components/block-countdown-progress.tsx | 127 --
.../src/components/block-status-badge.tsx | 93 --
.../blocks/block-range-selector.tsx | 142 ---
.../components/blocks/block-table-columns.tsx | 114 --
.../src/components/blocks/blocks-table.tsx | 76 --
.../components/charts/balance-area-chart.tsx | 115 --
.../contract-events-columns.tsx | 126 --
.../contract-events/contract-events-schema.ts | 11 -
.../contract-events/contract-events-table.tsx | 50 -
.../components/contracts/classes/columns.tsx | 148 ---
.../components/contracts/classes/schema.ts | 12 -
.../components/contracts/classes/table.tsx | 56 -
.../contracts/instances/columns.tsx | 125 --
.../components/contracts/instances/schema.ts | 28 -
.../components/contracts/instances/table.tsx | 55 -
.../src/components/contracts/utils.tsx | 21 -
.../explorer-ui/src/components/copy-text.tsx | 49 -
.../src/components/copyable-amount.tsx | 39 -
.../src/components/copyable-json.tsx | 32 -
.../src/components/custom-tooltip.tsx | 40 -
.../data-table/data-table-column-header.tsx | 72 --
.../data-table/data-table-faceted-filter.tsx | 167 ---
.../data-table/data-table-pagination.tsx | 188 ---
.../data-table/data-table-toolbar.tsx | 64 -
.../data-table/data-table-view-options.tsx | 46 -
.../src/components/data-table/data-table.tsx | 257 ----
.../src/components/data-table/index.ts | 6 -
.../data-table/react-query-pagination.tsx | 118 --
.../components/deterministic-status-badge.tsx | 111 --
.../src/components/dropped-banner.tsx | 20 -
.../src/components/etherscan-address-link.tsx | 51 -
.../fee-juice-portal-deposits-columns.tsx | 116 --
.../components/fee-payment-method-badge.tsx | 13 -
.../fee-recipient/fee-recipient-columns.tsx | 129 --
.../fee-recipient/fee-recipient-table.tsx | 63 -
.../explorer-ui/src/components/footer.tsx | 91 --
.../src/components/formated-time-cell.tsx | 23 -
.../components/header/desktop-burger-menu.tsx | 97 --
.../src/components/header/desktop-header.tsx | 84 --
.../src/components/header/header.tsx | 192 ---
.../src/components/header/index.ts | 1 -
.../src/components/header/mobile-header.tsx | 172 ---
.../components/header/network-selector.tsx | 54 -
.../src/components/header/types.ts | 8 -
services/explorer-ui/src/components/index.ts | 2 -
.../explorer-ui/src/components/info-badge.tsx | 32 -
.../explorer-ui/src/components/info-card.tsx | 119 --
.../info-display/generic-list-display.tsx | 17 -
.../components/info-display/info-display.tsx | 18 -
.../info-display/key-value-display.tsx | 34 -
.../components/info-display/key-value-row.tsx | 167 ---
.../info-display/value-list-display.tsx | 35 -
.../explorer-ui/src/components/info-pil.tsx | 28 -
.../json-viewer/collapsible-section.tsx | 63 -
.../src/components/json-viewer/filter-bar.tsx | 83 --
.../json-viewer/hooks/useJsonParser.ts | 196 ---
.../src/components/json-viewer/index.tsx | 57 -
.../components/json-viewer/json-display.tsx | 255 ----
.../l2-to-l1-msgs/l2-to-l1-msgs-columns.tsx | 125 --
.../explorer-ui/src/components/loader.tsx | 15 -
.../components/loading/loading-details.tsx | 31 -
.../src/components/loading/util.ts | 104 --
.../src/components/magic-dev-link.tsx | 41 -
.../src/components/older-version-banner.tsx | 27 -
.../src/components/option-buttons/index.tsx | 99 --
.../src/components/orphaned-banner.tsx | 56 -
.../pending-txs/pending-txs-columns.tsx | 48 -
.../pending-txs/pending-txs-schema.ts | 9 -
.../pending-txs/pending-txs-table.tsx | 47 -
.../public-call-requests-columns.tsx | 149 ---
.../src/components/rpc-node-errors/index.ts | 3 -
.../rpc-node-errors-columns.tsx | 180 ---
.../rpc-node-errors/rpc-node-errors-schema.ts | 5 -
.../rpc-node-errors/rpc-node-errors-table.tsx | 50 -
.../source-code-viewer/code-display.tsx | 84 --
.../source-code-viewer/file-tree.tsx | 171 ---
.../components/source-code-viewer/index.tsx | 103 --
.../components/source-code-viewer/types.ts | 26 -
.../src/components/staking-banner.tsx | 57 -
.../src/components/table-badge.tsx | 28 -
.../src/components/theme-toggle.tsx | 72 --
.../tx-effect-details-display/index.ts | 1 -
.../tx-effect-details-display.tsx | 14 -
.../tx-effects/tx-effects-columns.tsx | 153 ---
.../tx-effects/tx-effects-table.tsx | 63 -
.../explorer-ui/src/components/ui/badge.tsx | 55 -
.../explorer-ui/src/components/ui/button.tsx | 57 -
.../src/components/ui/checkbox.tsx | 29 -
.../src/components/ui/chicmoz-home-link.tsx | 23 -
.../explorer-ui/src/components/ui/command.tsx | 149 ---
.../explorer-ui/src/components/ui/dialog.tsx | 120 --
.../src/components/ui/dropdown-menu.tsx | 199 ---
.../src/components/ui/flex-box.tsx | 13 -
.../explorer-ui/src/components/ui/index.ts | 11 -
.../explorer-ui/src/components/ui/input.tsx | 57 -
.../explorer-ui/src/components/ui/popover.tsx | 31 -
.../explorer-ui/src/components/ui/select.tsx | 157 ---
.../src/components/ui/separator.tsx | 20 -
.../src/components/ui/skeleton.tsx | 18 -
.../explorer-ui/src/components/ui/sonner.tsx | 31 -
.../explorer-ui/src/components/ui/table.tsx | 116 --
.../src/components/ui/tailwind-indicator.tsx | 14 -
.../src/components/ui/textarea.tsx | 23 -
.../explorer-ui/src/components/ui/tooltip.tsx | 32 -
.../validator-history-key-badge.tsx | 65 -
.../src/components/validator-status-badge.tsx | 75 --
.../validator-history-table-columns.tsx | 75 --
.../validators/validator-history-table.tsx | 76 --
.../validators/validators-columns.tsx | 196 ---
.../validators/validators-schema.ts | 11 -
.../validators/validators-table.tsx | 87 --
.../components/verify-source-form/index.tsx | 196 ---
.../verify-source-form/job-status.tsx | 322 -----
services/explorer-ui/src/hooks/api/block.ts | 98 --
services/explorer-ui/src/hooks/api/blocks.ts | 68 -
.../explorer-ui/src/hooks/api/chain-info.ts | 29 -
.../explorer-ui/src/hooks/api/contract.ts | 230 ----
.../explorer-ui/src/hooks/api/dropped-tx.ts | 13 -
.../src/hooks/api/fee-recipient.ts | 14 -
services/explorer-ui/src/hooks/api/index.ts | 12 -
.../src/hooks/api/l1-l2-validator.ts | 64 -
.../src/hooks/api/l1/contract-events.ts | 14 -
.../hooks/api/l1/fee-juice-portal-deposits.ts | 14 -
.../explorer-ui/src/hooks/api/rpc-node.ts | 28 -
services/explorer-ui/src/hooks/api/search.ts | 14 -
services/explorer-ui/src/hooks/api/stats.ts | 54 -
.../explorer-ui/src/hooks/api/tx-effect.ts | 119 --
services/explorer-ui/src/hooks/api/tx.ts | 69 -
services/explorer-ui/src/hooks/api/utils.ts | 136 --
.../hooks/api/verified-contract-instance.ts | 14 -
services/explorer-ui/src/hooks/index.ts | 6 -
services/explorer-ui/src/hooks/sub-title.ts | 10 -
.../explorer-ui/src/hooks/system-health.ts | 192 ---
.../src/hooks/use-reactive-time.ts | 15 -
.../explorer-ui/src/hooks/useClickOutside.ts | 19 -
.../explorer-ui/src/hooks/useTabVisibility.ts | 23 -
services/explorer-ui/src/hooks/useTimeTick.ts | 15 -
.../explorer-ui/src/hooks/websocket/index.ts | 165 ---
.../src/hooks/websocket/message-callbacks.ts | 179 ---
.../explorer-ui/src/layout/base-layout.tsx | 15 -
.../explorer-ui/src/lib/create-hash-string.ts | 12 -
services/explorer-ui/src/lib/utils.ts | 206 ---
services/explorer-ui/src/main.tsx | 36 -
services/explorer-ui/src/pages/about-us.tsx | 75 --
.../address-activity-columns.tsx | 4 -
.../src/pages/address-details/index.tsx | 112 --
.../src/pages/aztecscan-health/index.tsx | 29 -
.../aztecscan-health/rpc-node-health-card.tsx | 120 --
.../rpc-node-health-section.tsx | 226 ----
.../system-health-overview.tsx | 75 --
.../block-details/adjacent-block-buttons.tsx | 37 -
.../src/pages/block-details/constants.ts | 17 -
.../src/pages/block-details/index.tsx | 137 --
.../src/pages/block-details/util.ts | 118 --
.../explorer-ui/src/pages/block/index.tsx | 149 ---
.../contract-class-details/artifact-parser.ts | 81 --
.../pages/contract-class-details/constants.ts | 42 -
.../contract-class-details/display-utils.ts | 12 -
.../pages/contract-class-details/index.tsx | 99 --
.../key-value-helpers.tsx | 109 --
.../contract-class-details/tabs-section.tsx | 131 --
.../tabs/artifact-explorer-tab.tsx | 10 -
.../tabs/artifact-json-tab.tsx | 36 -
.../tabs/contract-instances.tsx | 24 -
.../tabs/contract-versions.tsx | 28 -
.../contract-class-details/tabs/json-tab.tsx | 10 -
.../tabs/source-code-tab.tsx | 80 --
.../src/pages/contract-class-details/util.ts | 9 -
.../components/balance-header.tsx | 32 -
.../components/balance-stats.tsx | 43 -
.../components/date-range-filter.tsx | 72 --
.../components/filter-button.tsx | 30 -
.../feejuice-balance.tsx | 135 --
.../hooks/use-balance-chart-data.ts | 152 ---
.../pages/contract-instance-details/index.tsx | 95 --
.../tabs-section.tsx | 167 ---
.../tabs/fee-juice-portal-deposits-tab.tsx | 27 -
.../tabs/l2-to-l1-msgs-tab.tsx | 23 -
.../tabs/public-call-requests-tab.tsx | 23 -
.../pages/contract-instance-details/types.ts | 56 -
.../pages/contract-instance-details/util.tsx | 199 ---
.../explorer-ui/src/pages/contract/index.tsx | 85 --
.../explorer-ui/src/pages/contract/util.ts | 38 -
services/explorer-ui/src/pages/dev.tsx | 208 ---
.../explorer-ui/src/pages/ecosystem/index.tsx | 353 ------
.../explorer-ui/src/pages/fee-recipients.tsx | 64 -
services/explorer-ui/src/pages/incidents.tsx | 119 --
.../src/pages/l1/address-details/index.tsx | 97 --
.../src/pages/l1/contract-events.tsx | 37 -
.../src/pages/l1/validator-details.tsx | 171 ---
.../explorer-ui/src/pages/l1/validators.tsx | 104 --
.../explorer-ui/src/pages/landing/index.tsx | 256 ----
.../block-production-section.tsx | 25 -
.../src/pages/network-health/index.tsx | 160 ---
.../network-health/native-status-section.tsx | 127 --
.../orphaned-blocks-section.tsx | 94 --
.../pages/network-health/reorg-section.tsx | 100 --
.../src/pages/network-health/types.ts | 10 -
.../validator-status-section.tsx | 87 --
.../explorer-ui/src/pages/privacy-policy.tsx | 1129 -----------------
services/explorer-ui/src/pages/staking.tsx | 50 -
.../pages/submit-standard-contract/index.tsx | 197 ---
.../src/pages/terms-and-conditions.tsx | 20 -
.../src/pages/tx-effect-details/index.tsx | 126 --
.../tx-effect-details/pending-tx-details.tsx | 139 --
.../pages/tx-effect-details/tabs-section.tsx | 86 --
.../tx-effect-details/tabs/nullifiers.tsx | 13 -
.../tx-effect-details/tabs/private-logs.tsx | 31 -
.../tabs/public-data-write.tsx | 23 -
.../tx-effect-details/tabs/public-logs.tsx | 33 -
.../src/pages/tx-effect-details/types.ts | 32 -
.../src/pages/tx-effect-details/utils.ts | 180 ---
.../explorer-ui/src/pages/tx-effect/index.tsx | 99 --
services/explorer-ui/src/providers/index.ts | 3 -
.../src/providers/query-provider.tsx | 16 -
.../src/providers/router-provider.tsx | 23 -
.../src/providers/theme-provider.tsx | 14 -
services/explorer-ui/src/routeTree.gen.ts | 530 --------
services/explorer-ui/src/routes/__root.tsx | 193 ---
.../explorer-ui/src/routes/about-us.lazy.tsx | 6 -
.../src/routes/address.$address.lazy.tsx | 6 -
.../src/routes/aztecscan-health.lazy.tsx | 6 -
.../src/routes/blocks/$blockNumber.lazy.tsx | 6 -
.../src/routes/blocks/index.lazy.tsx | 6 -
.../classes.$id.versions.$version.lazy.tsx | 6 -
...$version.submit-standard-contract.lazy.tsx | 8 -
.../src/routes/contracts/index.lazy.tsx | 6 -
.../contracts/instances.$address.lazy.tsx | 6 -
services/explorer-ui/src/routes/dev.lazy.tsx | 6 -
.../explorer-ui/src/routes/ecosystem.lazy.tsx | 6 -
.../src/routes/fee-recipients.lazy.tsx | 6 -
.../explorer-ui/src/routes/incidents.lazy.tsx | 6 -
.../explorer-ui/src/routes/index.lazy.tsx | 6 -
.../src/routes/l1/address.$address.lazy.tsx | 6 -
.../src/routes/l1/contract-events.lazy.tsx | 6 -
.../l1/validators/$attesterAddress.lazy.tsx | 6 -
.../src/routes/l1/validators/index.lazy.tsx | 6 -
.../explorer-ui/src/routes/network-health.tsx | 6 -
.../src/routes/privacy-policy.lazy.tsx | 6 -
.../explorer-ui/src/routes/staking.lazy.tsx | 6 -
.../src/routes/terms-and-conditions.tsx | 6 -
.../src/routes/tx-effects/$hash.lazy.tsx | 6 -
.../src/routes/tx-effects/index.lazy.tsx | 6 -
services/explorer-ui/src/service/constants.ts | 141 --
services/explorer-ui/src/styles/global.css | 192 ---
services/explorer-ui/src/styles/reset.css | 83 --
services/explorer-ui/src/types.ts | 4 -
services/explorer-ui/src/vite-env.d.ts | 2 -
services/explorer-ui/tailwind.config.js | 100 --
services/explorer-ui/tsconfig.app.json | 28 -
services/explorer-ui/tsconfig.json | 17 -
services/explorer-ui/tsconfig.node.json | 13 -
services/explorer-ui/vite.config.ts | 13 -
yarn.lock | 165 ---
337 files changed, 21710 deletions(-)
delete mode 100644 k8s/local/explorer-ui/mainnet/deployment.yaml
delete mode 100644 k8s/local/explorer-ui/mainnet/httproute.yaml
delete mode 100644 k8s/local/explorer-ui/mainnet/service.yaml
delete mode 100644 k8s/local/explorer-ui/remote_devnet/deployment.yaml
delete mode 100644 k8s/local/explorer-ui/remote_devnet/httproute.yaml
delete mode 100644 k8s/local/explorer-ui/remote_devnet/service.yaml
delete mode 100644 k8s/local/explorer-ui/sandbox/deployment.yaml
delete mode 100644 k8s/local/explorer-ui/sandbox/httproute.yaml
delete mode 100644 k8s/local/explorer-ui/sandbox/service.yaml
delete mode 100644 k8s/local/explorer-ui/skaffold.mainnet.yaml
delete mode 100644 k8s/local/explorer-ui/skaffold.remote_devnet.yaml
delete mode 100644 k8s/local/explorer-ui/skaffold.sandbox.yaml
delete mode 100644 k8s/local/explorer-ui/skaffold.testnet.yaml
delete mode 100644 k8s/local/explorer-ui/testnet/deployment.yaml
delete mode 100644 k8s/local/explorer-ui/testnet/httproute.yaml
delete mode 100644 k8s/local/explorer-ui/testnet/service.yaml
delete mode 100644 k8s/local/skaffold.only_explorer-ui.yaml
delete mode 100644 k8s/staging/explorer-ui/skaffold.testnet.yaml
delete mode 100644 k8s/staging/explorer-ui/testnet/deployment.yaml
delete mode 100644 k8s/staging/explorer-ui/testnet/ingress.yaml
delete mode 100644 k8s/staging/explorer-ui/testnet/nodeport.yaml
delete mode 100644 k8s/staging/explorer-ui/testnet/service.yaml
delete mode 100644 services/explorer-ui/.env.development
delete mode 100644 services/explorer-ui/.eslintrc.cjs
delete mode 100644 services/explorer-ui/.gitignore
delete mode 100644 services/explorer-ui/Dockerfile
delete mode 100644 services/explorer-ui/Dockerfile.prod
delete mode 100644 services/explorer-ui/README.md
delete mode 100644 services/explorer-ui/components.json
delete mode 100644 services/explorer-ui/index.html
delete mode 100644 services/explorer-ui/k8s/base/deployment.yaml
delete mode 100644 services/explorer-ui/k8s/base/kustomization.yaml
delete mode 100644 services/explorer-ui/k8s/base/service.yaml
delete mode 100644 services/explorer-ui/k8s/overlays/devnet/httproute.yaml
delete mode 100644 services/explorer-ui/k8s/overlays/devnet/kustomization.yaml
delete mode 100644 services/explorer-ui/k8s/overlays/mainnet/httproute.yaml
delete mode 100644 services/explorer-ui/k8s/overlays/mainnet/kustomization.yaml
delete mode 100644 services/explorer-ui/k8s/overlays/testnet/httproute.yaml
delete mode 100644 services/explorer-ui/k8s/overlays/testnet/kustomization.yaml
delete mode 100644 services/explorer-ui/package.json
delete mode 100644 services/explorer-ui/postcss.config.js
delete mode 100644 services/explorer-ui/src/api/block.ts
delete mode 100644 services/explorer-ui/src/api/chain-info.ts
delete mode 100644 services/explorer-ui/src/api/client.ts
delete mode 100644 services/explorer-ui/src/api/contract.ts
delete mode 100644 services/explorer-ui/src/api/dropped-tx.ts
delete mode 100644 services/explorer-ui/src/api/fee-recipient.ts
delete mode 100644 services/explorer-ui/src/api/index.ts
delete mode 100644 services/explorer-ui/src/api/l1-l2-validator.ts
delete mode 100644 services/explorer-ui/src/api/l1/contract-events.ts
delete mode 100644 services/explorer-ui/src/api/l1/fee-juice-portal-deposits.ts
delete mode 100644 services/explorer-ui/src/api/rpc-node.ts
delete mode 100644 services/explorer-ui/src/api/search.ts
delete mode 100644 services/explorer-ui/src/api/stats.ts
delete mode 100644 services/explorer-ui/src/api/tx-effect.ts
delete mode 100644 services/explorer-ui/src/api/tx.ts
delete mode 100644 services/explorer-ui/src/api/verified-contract-instance.ts
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner black.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner deep purple.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light gray.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light purple.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner purple.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner white.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo black.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo deep purple.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light gray.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light purple.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo purple.svg
delete mode 100644 services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo white.svg
delete mode 100644 services/explorer-ui/src/assets/aztecscout-preview.png
delete mode 100644 services/explorer-ui/src/assets/copy-icon.svg
delete mode 100644 services/explorer-ui/src/assets/cross-icon.svg
delete mode 100644 services/explorer-ui/src/assets/discord-icon.svg
delete mode 100644 services/explorer-ui/src/assets/github-icon.svg
delete mode 100644 services/explorer-ui/src/assets/index.ts
delete mode 100644 services/explorer-ui/src/assets/loading-icon.svg
delete mode 100644 services/explorer-ui/src/assets/search-icon.svg
delete mode 100644 services/explorer-ui/src/assets/success-icon.svg
delete mode 100644 services/explorer-ui/src/components/block-countdown-progress.tsx
delete mode 100644 services/explorer-ui/src/components/block-status-badge.tsx
delete mode 100644 services/explorer-ui/src/components/blocks/block-range-selector.tsx
delete mode 100644 services/explorer-ui/src/components/blocks/block-table-columns.tsx
delete mode 100644 services/explorer-ui/src/components/blocks/blocks-table.tsx
delete mode 100644 services/explorer-ui/src/components/charts/balance-area-chart.tsx
delete mode 100644 services/explorer-ui/src/components/contract-events/contract-events-columns.tsx
delete mode 100644 services/explorer-ui/src/components/contract-events/contract-events-schema.ts
delete mode 100644 services/explorer-ui/src/components/contract-events/contract-events-table.tsx
delete mode 100644 services/explorer-ui/src/components/contracts/classes/columns.tsx
delete mode 100644 services/explorer-ui/src/components/contracts/classes/schema.ts
delete mode 100644 services/explorer-ui/src/components/contracts/classes/table.tsx
delete mode 100644 services/explorer-ui/src/components/contracts/instances/columns.tsx
delete mode 100644 services/explorer-ui/src/components/contracts/instances/schema.ts
delete mode 100644 services/explorer-ui/src/components/contracts/instances/table.tsx
delete mode 100644 services/explorer-ui/src/components/contracts/utils.tsx
delete mode 100644 services/explorer-ui/src/components/copy-text.tsx
delete mode 100644 services/explorer-ui/src/components/copyable-amount.tsx
delete mode 100644 services/explorer-ui/src/components/copyable-json.tsx
delete mode 100644 services/explorer-ui/src/components/custom-tooltip.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/data-table-column-header.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/data-table-faceted-filter.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/data-table-pagination.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/data-table-toolbar.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/data-table-view-options.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/data-table.tsx
delete mode 100644 services/explorer-ui/src/components/data-table/index.ts
delete mode 100644 services/explorer-ui/src/components/data-table/react-query-pagination.tsx
delete mode 100644 services/explorer-ui/src/components/deterministic-status-badge.tsx
delete mode 100644 services/explorer-ui/src/components/dropped-banner.tsx
delete mode 100644 services/explorer-ui/src/components/etherscan-address-link.tsx
delete mode 100644 services/explorer-ui/src/components/fee-juice-portal-deposits/fee-juice-portal-deposits-columns.tsx
delete mode 100644 services/explorer-ui/src/components/fee-payment-method-badge.tsx
delete mode 100644 services/explorer-ui/src/components/fee-recipient/fee-recipient-columns.tsx
delete mode 100644 services/explorer-ui/src/components/fee-recipient/fee-recipient-table.tsx
delete mode 100644 services/explorer-ui/src/components/footer.tsx
delete mode 100644 services/explorer-ui/src/components/formated-time-cell.tsx
delete mode 100644 services/explorer-ui/src/components/header/desktop-burger-menu.tsx
delete mode 100644 services/explorer-ui/src/components/header/desktop-header.tsx
delete mode 100644 services/explorer-ui/src/components/header/header.tsx
delete mode 100644 services/explorer-ui/src/components/header/index.ts
delete mode 100644 services/explorer-ui/src/components/header/mobile-header.tsx
delete mode 100644 services/explorer-ui/src/components/header/network-selector.tsx
delete mode 100644 services/explorer-ui/src/components/header/types.ts
delete mode 100644 services/explorer-ui/src/components/index.ts
delete mode 100644 services/explorer-ui/src/components/info-badge.tsx
delete mode 100644 services/explorer-ui/src/components/info-card.tsx
delete mode 100644 services/explorer-ui/src/components/info-display/generic-list-display.tsx
delete mode 100644 services/explorer-ui/src/components/info-display/info-display.tsx
delete mode 100644 services/explorer-ui/src/components/info-display/key-value-display.tsx
delete mode 100644 services/explorer-ui/src/components/info-display/key-value-row.tsx
delete mode 100644 services/explorer-ui/src/components/info-display/value-list-display.tsx
delete mode 100644 services/explorer-ui/src/components/info-pil.tsx
delete mode 100644 services/explorer-ui/src/components/json-viewer/collapsible-section.tsx
delete mode 100644 services/explorer-ui/src/components/json-viewer/filter-bar.tsx
delete mode 100644 services/explorer-ui/src/components/json-viewer/hooks/useJsonParser.ts
delete mode 100644 services/explorer-ui/src/components/json-viewer/index.tsx
delete mode 100644 services/explorer-ui/src/components/json-viewer/json-display.tsx
delete mode 100644 services/explorer-ui/src/components/l2-to-l1-msgs/l2-to-l1-msgs-columns.tsx
delete mode 100644 services/explorer-ui/src/components/loader.tsx
delete mode 100644 services/explorer-ui/src/components/loading/loading-details.tsx
delete mode 100644 services/explorer-ui/src/components/loading/util.ts
delete mode 100644 services/explorer-ui/src/components/magic-dev-link.tsx
delete mode 100644 services/explorer-ui/src/components/older-version-banner.tsx
delete mode 100644 services/explorer-ui/src/components/option-buttons/index.tsx
delete mode 100644 services/explorer-ui/src/components/orphaned-banner.tsx
delete mode 100644 services/explorer-ui/src/components/pending-txs/pending-txs-columns.tsx
delete mode 100644 services/explorer-ui/src/components/pending-txs/pending-txs-schema.ts
delete mode 100644 services/explorer-ui/src/components/pending-txs/pending-txs-table.tsx
delete mode 100644 services/explorer-ui/src/components/public-call-requests/public-call-requests-columns.tsx
delete mode 100644 services/explorer-ui/src/components/rpc-node-errors/index.ts
delete mode 100644 services/explorer-ui/src/components/rpc-node-errors/rpc-node-errors-columns.tsx
delete mode 100644 services/explorer-ui/src/components/rpc-node-errors/rpc-node-errors-schema.ts
delete mode 100644 services/explorer-ui/src/components/rpc-node-errors/rpc-node-errors-table.tsx
delete mode 100644 services/explorer-ui/src/components/source-code-viewer/code-display.tsx
delete mode 100644 services/explorer-ui/src/components/source-code-viewer/file-tree.tsx
delete mode 100644 services/explorer-ui/src/components/source-code-viewer/index.tsx
delete mode 100644 services/explorer-ui/src/components/source-code-viewer/types.ts
delete mode 100644 services/explorer-ui/src/components/staking-banner.tsx
delete mode 100644 services/explorer-ui/src/components/table-badge.tsx
delete mode 100644 services/explorer-ui/src/components/theme-toggle.tsx
delete mode 100644 services/explorer-ui/src/components/tx-effect-details-display/index.ts
delete mode 100644 services/explorer-ui/src/components/tx-effect-details-display/tx-effect-details-display.tsx
delete mode 100644 services/explorer-ui/src/components/tx-effects/tx-effects-columns.tsx
delete mode 100644 services/explorer-ui/src/components/tx-effects/tx-effects-table.tsx
delete mode 100644 services/explorer-ui/src/components/ui/badge.tsx
delete mode 100644 services/explorer-ui/src/components/ui/button.tsx
delete mode 100644 services/explorer-ui/src/components/ui/checkbox.tsx
delete mode 100644 services/explorer-ui/src/components/ui/chicmoz-home-link.tsx
delete mode 100644 services/explorer-ui/src/components/ui/command.tsx
delete mode 100644 services/explorer-ui/src/components/ui/dialog.tsx
delete mode 100644 services/explorer-ui/src/components/ui/dropdown-menu.tsx
delete mode 100644 services/explorer-ui/src/components/ui/flex-box.tsx
delete mode 100644 services/explorer-ui/src/components/ui/index.ts
delete mode 100644 services/explorer-ui/src/components/ui/input.tsx
delete mode 100644 services/explorer-ui/src/components/ui/popover.tsx
delete mode 100644 services/explorer-ui/src/components/ui/select.tsx
delete mode 100644 services/explorer-ui/src/components/ui/separator.tsx
delete mode 100644 services/explorer-ui/src/components/ui/skeleton.tsx
delete mode 100644 services/explorer-ui/src/components/ui/sonner.tsx
delete mode 100644 services/explorer-ui/src/components/ui/table.tsx
delete mode 100644 services/explorer-ui/src/components/ui/tailwind-indicator.tsx
delete mode 100644 services/explorer-ui/src/components/ui/textarea.tsx
delete mode 100644 services/explorer-ui/src/components/ui/tooltip.tsx
delete mode 100644 services/explorer-ui/src/components/validator-history-key-badge.tsx
delete mode 100644 services/explorer-ui/src/components/validator-status-badge.tsx
delete mode 100644 services/explorer-ui/src/components/validators/validator-history-table-columns.tsx
delete mode 100644 services/explorer-ui/src/components/validators/validator-history-table.tsx
delete mode 100644 services/explorer-ui/src/components/validators/validators-columns.tsx
delete mode 100644 services/explorer-ui/src/components/validators/validators-schema.ts
delete mode 100644 services/explorer-ui/src/components/validators/validators-table.tsx
delete mode 100644 services/explorer-ui/src/components/verify-source-form/index.tsx
delete mode 100644 services/explorer-ui/src/components/verify-source-form/job-status.tsx
delete mode 100644 services/explorer-ui/src/hooks/api/block.ts
delete mode 100644 services/explorer-ui/src/hooks/api/blocks.ts
delete mode 100644 services/explorer-ui/src/hooks/api/chain-info.ts
delete mode 100644 services/explorer-ui/src/hooks/api/contract.ts
delete mode 100644 services/explorer-ui/src/hooks/api/dropped-tx.ts
delete mode 100644 services/explorer-ui/src/hooks/api/fee-recipient.ts
delete mode 100644 services/explorer-ui/src/hooks/api/index.ts
delete mode 100644 services/explorer-ui/src/hooks/api/l1-l2-validator.ts
delete mode 100644 services/explorer-ui/src/hooks/api/l1/contract-events.ts
delete mode 100644 services/explorer-ui/src/hooks/api/l1/fee-juice-portal-deposits.ts
delete mode 100644 services/explorer-ui/src/hooks/api/rpc-node.ts
delete mode 100644 services/explorer-ui/src/hooks/api/search.ts
delete mode 100644 services/explorer-ui/src/hooks/api/stats.ts
delete mode 100644 services/explorer-ui/src/hooks/api/tx-effect.ts
delete mode 100644 services/explorer-ui/src/hooks/api/tx.ts
delete mode 100644 services/explorer-ui/src/hooks/api/utils.ts
delete mode 100644 services/explorer-ui/src/hooks/api/verified-contract-instance.ts
delete mode 100644 services/explorer-ui/src/hooks/index.ts
delete mode 100644 services/explorer-ui/src/hooks/sub-title.ts
delete mode 100644 services/explorer-ui/src/hooks/system-health.ts
delete mode 100644 services/explorer-ui/src/hooks/use-reactive-time.ts
delete mode 100644 services/explorer-ui/src/hooks/useClickOutside.ts
delete mode 100644 services/explorer-ui/src/hooks/useTabVisibility.ts
delete mode 100644 services/explorer-ui/src/hooks/useTimeTick.ts
delete mode 100644 services/explorer-ui/src/hooks/websocket/index.ts
delete mode 100644 services/explorer-ui/src/hooks/websocket/message-callbacks.ts
delete mode 100644 services/explorer-ui/src/layout/base-layout.tsx
delete mode 100644 services/explorer-ui/src/lib/create-hash-string.ts
delete mode 100644 services/explorer-ui/src/lib/utils.ts
delete mode 100644 services/explorer-ui/src/main.tsx
delete mode 100644 services/explorer-ui/src/pages/about-us.tsx
delete mode 100644 services/explorer-ui/src/pages/address-details/address-activity-columns.tsx
delete mode 100644 services/explorer-ui/src/pages/address-details/index.tsx
delete mode 100644 services/explorer-ui/src/pages/aztecscan-health/index.tsx
delete mode 100644 services/explorer-ui/src/pages/aztecscan-health/rpc-node-health-card.tsx
delete mode 100644 services/explorer-ui/src/pages/aztecscan-health/rpc-node-health-section.tsx
delete mode 100644 services/explorer-ui/src/pages/aztecscan-health/system-health-overview.tsx
delete mode 100644 services/explorer-ui/src/pages/block-details/adjacent-block-buttons.tsx
delete mode 100644 services/explorer-ui/src/pages/block-details/constants.ts
delete mode 100644 services/explorer-ui/src/pages/block-details/index.tsx
delete mode 100644 services/explorer-ui/src/pages/block-details/util.ts
delete mode 100644 services/explorer-ui/src/pages/block/index.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/artifact-parser.ts
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/constants.ts
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/display-utils.ts
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/index.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/key-value-helpers.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs-section.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs/artifact-explorer-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs/artifact-json-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs/contract-instances.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs/contract-versions.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs/json-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/tabs/source-code-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-class-details/util.ts
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/components/balance-header.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/components/balance-stats.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/components/date-range-filter.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/components/filter-button.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/feejuice-balance.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/hooks/use-balance-chart-data.ts
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/index.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/tabs-section.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/tabs/fee-juice-portal-deposits-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/tabs/l2-to-l1-msgs-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/tabs/public-call-requests-tab.tsx
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/types.ts
delete mode 100644 services/explorer-ui/src/pages/contract-instance-details/util.tsx
delete mode 100644 services/explorer-ui/src/pages/contract/index.tsx
delete mode 100644 services/explorer-ui/src/pages/contract/util.ts
delete mode 100644 services/explorer-ui/src/pages/dev.tsx
delete mode 100644 services/explorer-ui/src/pages/ecosystem/index.tsx
delete mode 100644 services/explorer-ui/src/pages/fee-recipients.tsx
delete mode 100644 services/explorer-ui/src/pages/incidents.tsx
delete mode 100644 services/explorer-ui/src/pages/l1/address-details/index.tsx
delete mode 100644 services/explorer-ui/src/pages/l1/contract-events.tsx
delete mode 100644 services/explorer-ui/src/pages/l1/validator-details.tsx
delete mode 100644 services/explorer-ui/src/pages/l1/validators.tsx
delete mode 100644 services/explorer-ui/src/pages/landing/index.tsx
delete mode 100644 services/explorer-ui/src/pages/network-health/block-production-section.tsx
delete mode 100644 services/explorer-ui/src/pages/network-health/index.tsx
delete mode 100644 services/explorer-ui/src/pages/network-health/native-status-section.tsx
delete mode 100644 services/explorer-ui/src/pages/network-health/orphaned-blocks-section.tsx
delete mode 100644 services/explorer-ui/src/pages/network-health/reorg-section.tsx
delete mode 100644 services/explorer-ui/src/pages/network-health/types.ts
delete mode 100644 services/explorer-ui/src/pages/network-health/validator-status-section.tsx
delete mode 100644 services/explorer-ui/src/pages/privacy-policy.tsx
delete mode 100644 services/explorer-ui/src/pages/staking.tsx
delete mode 100644 services/explorer-ui/src/pages/submit-standard-contract/index.tsx
delete mode 100644 services/explorer-ui/src/pages/terms-and-conditions.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/index.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/pending-tx-details.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/tabs-section.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/tabs/nullifiers.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/tabs/private-logs.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/tabs/public-data-write.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/tabs/public-logs.tsx
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/types.ts
delete mode 100644 services/explorer-ui/src/pages/tx-effect-details/utils.ts
delete mode 100644 services/explorer-ui/src/pages/tx-effect/index.tsx
delete mode 100644 services/explorer-ui/src/providers/index.ts
delete mode 100644 services/explorer-ui/src/providers/query-provider.tsx
delete mode 100644 services/explorer-ui/src/providers/router-provider.tsx
delete mode 100644 services/explorer-ui/src/providers/theme-provider.tsx
delete mode 100644 services/explorer-ui/src/routeTree.gen.ts
delete mode 100644 services/explorer-ui/src/routes/__root.tsx
delete mode 100644 services/explorer-ui/src/routes/about-us.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/address.$address.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/aztecscan-health.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/blocks/$blockNumber.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/blocks/index.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/contracts/classes.$id.versions.$version.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/contracts/classes.$id.versions.$version.submit-standard-contract.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/contracts/index.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/contracts/instances.$address.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/dev.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/ecosystem.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/fee-recipients.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/incidents.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/index.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/l1/address.$address.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/l1/contract-events.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/l1/validators/$attesterAddress.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/l1/validators/index.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/network-health.tsx
delete mode 100644 services/explorer-ui/src/routes/privacy-policy.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/staking.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/terms-and-conditions.tsx
delete mode 100644 services/explorer-ui/src/routes/tx-effects/$hash.lazy.tsx
delete mode 100644 services/explorer-ui/src/routes/tx-effects/index.lazy.tsx
delete mode 100644 services/explorer-ui/src/service/constants.ts
delete mode 100644 services/explorer-ui/src/styles/global.css
delete mode 100644 services/explorer-ui/src/styles/reset.css
delete mode 100644 services/explorer-ui/src/types.ts
delete mode 100644 services/explorer-ui/src/vite-env.d.ts
delete mode 100644 services/explorer-ui/tailwind.config.js
delete mode 100644 services/explorer-ui/tsconfig.app.json
delete mode 100644 services/explorer-ui/tsconfig.json
delete mode 100644 services/explorer-ui/tsconfig.node.json
delete mode 100644 services/explorer-ui/vite.config.ts
diff --git a/k8s/local/explorer-ui/mainnet/deployment.yaml b/k8s/local/explorer-ui/mainnet/deployment.yaml
deleted file mode 100644
index b39fe26b1..000000000
--- a/k8s/local/explorer-ui/mainnet/deployment.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app: explorer-ui-mainnet-label
- name: explorer-ui-mainnet-deployment
- namespace: chicmoz
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: explorer-ui-mainnet-label
- template:
- metadata:
- labels:
- app: explorer-ui-mainnet-label
- spec:
- containers:
- - image: explorer-ui-mainnet:latest
- name: explorer-ui-mainnet
- resources:
- limits:
- memory: 300Mi
- cpu: 500m
- ports:
- - name: http-app-port
- containerPort: 80
- protocol: TCP
diff --git a/k8s/local/explorer-ui/mainnet/httproute.yaml b/k8s/local/explorer-ui/mainnet/httproute.yaml
deleted file mode 100644
index ce1b1b9d4..000000000
--- a/k8s/local/explorer-ui/mainnet/httproute.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui-mainnet
- namespace: chicmoz
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-local
-spec:
- parentRefs:
- - name: chicmoz-gateway
- sectionName: ui-mainnet
- hostnames:
- - mainnet.chicmoz.localhost
- rules:
- - matches:
- - path:
- type: PathPrefix
- value: /
- backendRefs:
- - name: explorer-ui-mainnet-service
- port: 80
diff --git a/k8s/local/explorer-ui/mainnet/service.yaml b/k8s/local/explorer-ui/mainnet/service.yaml
deleted file mode 100644
index b5a730a5a..000000000
--- a/k8s/local/explorer-ui/mainnet/service.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui-mainnet-service
- namespace: chicmoz
-spec:
- selector:
- app: explorer-ui-mainnet-label
- ports:
- - name: http-app
- protocol: TCP
- port: 80
- targetPort: http-app-port
diff --git a/k8s/local/explorer-ui/remote_devnet/deployment.yaml b/k8s/local/explorer-ui/remote_devnet/deployment.yaml
deleted file mode 100644
index e2715e634..000000000
--- a/k8s/local/explorer-ui/remote_devnet/deployment.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app: explorer-ui-remote-devnet-label
- name: explorer-ui-remote-devnet-deployment
- namespace: chicmoz
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: explorer-ui-remote-devnet-label
- template:
- metadata:
- labels:
- app: explorer-ui-remote-devnet-label
- spec:
- containers:
- - image: explorer-ui-remote-devnet:latest
- name: explorer-ui-remote-devnet
- resources:
- limits:
- memory: 300Mi
- cpu: 500m
- ports:
- - name: http-app-port
- containerPort: 80
- protocol: TCP
diff --git a/k8s/local/explorer-ui/remote_devnet/httproute.yaml b/k8s/local/explorer-ui/remote_devnet/httproute.yaml
deleted file mode 100644
index 96714b082..000000000
--- a/k8s/local/explorer-ui/remote_devnet/httproute.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui-remote-devnet
- namespace: chicmoz
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-local
-spec:
- parentRefs:
- - name: chicmoz-gateway
- sectionName: ui-remote-devnet
- hostnames:
- - remote-devnet.chicmoz.localhost
- rules:
- - matches:
- - path:
- type: PathPrefix
- value: /
- backendRefs:
- - name: explorer-ui-remote-devnet-service
- port: 80
diff --git a/k8s/local/explorer-ui/remote_devnet/service.yaml b/k8s/local/explorer-ui/remote_devnet/service.yaml
deleted file mode 100644
index 50343f1ba..000000000
--- a/k8s/local/explorer-ui/remote_devnet/service.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui-remote-devnet-service
- namespace: chicmoz
-spec:
- selector:
- app: explorer-ui-remote-devnet-label
- ports:
- - name: http-app
- protocol: TCP
- port: 80
- targetPort: http-app-port
diff --git a/k8s/local/explorer-ui/sandbox/deployment.yaml b/k8s/local/explorer-ui/sandbox/deployment.yaml
deleted file mode 100644
index c6c3771ad..000000000
--- a/k8s/local/explorer-ui/sandbox/deployment.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app: explorer-ui-sandbox-label
- name: explorer-ui-sandbox-deployment
- namespace: chicmoz
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: explorer-ui-sandbox-label
- template:
- metadata:
- labels:
- app: explorer-ui-sandbox-label
- spec:
- containers:
- - image: explorer-ui-sandbox:latest
- name: explorer-ui-sandbox
- resources:
- limits:
- memory: 300Mi
- cpu: 500m
- ports:
- - name: http-app-port
- containerPort: 80
- protocol: TCP
diff --git a/k8s/local/explorer-ui/sandbox/httproute.yaml b/k8s/local/explorer-ui/sandbox/httproute.yaml
deleted file mode 100644
index c992159b7..000000000
--- a/k8s/local/explorer-ui/sandbox/httproute.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui-sandbox
- namespace: chicmoz
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-local
-spec:
- parentRefs:
- - name: chicmoz-gateway
- sectionName: ui-sandbox
- hostnames:
- - sandbox.chicmoz.localhost
- rules:
- - matches:
- - path:
- type: PathPrefix
- value: /
- backendRefs:
- - name: explorer-ui-sandbox-service
- port: 80
diff --git a/k8s/local/explorer-ui/sandbox/service.yaml b/k8s/local/explorer-ui/sandbox/service.yaml
deleted file mode 100644
index 1e3b09b8d..000000000
--- a/k8s/local/explorer-ui/sandbox/service.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui-sandbox-service
- namespace: chicmoz
-spec:
- selector:
- app: explorer-ui-sandbox-label
- ports:
- - name: http-app
- protocol: TCP
- port: 80
- targetPort: http-app-port
diff --git a/k8s/local/explorer-ui/skaffold.mainnet.yaml b/k8s/local/explorer-ui/skaffold.mainnet.yaml
deleted file mode 100644
index c998884a8..000000000
--- a/k8s/local/explorer-ui/skaffold.mainnet.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: skaffold/v4beta6
-kind: Config
-requires:
- - path: ../common/skaffold.chicmoz-base-image.yaml
-build:
- artifacts:
- - image: explorer-ui-mainnet
- context: ../../../services/explorer-ui
- docker:
- dockerfile: Dockerfile
- buildArgs:
- NODE_ENV: "development"
- VITE_L2_NETWORK_ID: "MAINNET"
- VITE_CHICMOZ_ALL_UI_URLS: "Sandbox|http://sandbox.chicmoz.localhost,Mainnet|http://mainnet.chicmoz.localhost"
- VITE_API_URL: "http://api.mainnet.chicmoz.localhost:80/v1"
- VITE_API_KEY: "dev-api-key"
- VITE_WS_URL: "ws://ws.mainnet.chicmoz.localhost:80"
- VITE_DISCORD_URL: "https://discord.gg/xnw7fVXB7m"
- VITE_GITHUB_URL: "https://github.com/aztec-scan/chicmoz"
- VITE_VERSION_STRING: "development-mainnet"
- requires:
- - image: chicmoz-base
- alias: BASE
-deploy:
- kubectl:
- flags:
- apply: ["--force"]
-manifests:
- rawYaml:
- - ./mainnet/service.yaml
- - ./mainnet/httproute.yaml
- - ./mainnet/deployment.yaml
diff --git a/k8s/local/explorer-ui/skaffold.remote_devnet.yaml b/k8s/local/explorer-ui/skaffold.remote_devnet.yaml
deleted file mode 100644
index 9367f9240..000000000
--- a/k8s/local/explorer-ui/skaffold.remote_devnet.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: skaffold/v4beta6
-kind: Config
-requires:
- - path: ../common/skaffold.chicmoz-base-image.yaml
-build:
- artifacts:
- - image: explorer-ui-remote-devnet
- context: ../../../services/explorer-ui
- docker:
- dockerfile: Dockerfile
- buildArgs:
- NODE_ENV: "development"
- VITE_L2_NETWORK_ID: "DEVNET"
- VITE_CHICMOZ_ALL_UI_URLS: "Sandbox|http://sandbox.chicmoz.localhost,Remote Devnet|http://remote-devnet.chicmoz.localhost"
- VITE_API_URL: "http://api.remote-devnet.chicmoz.localhost:80/v1"
- VITE_API_KEY: "dev-api-key"
- VITE_WS_URL: "ws://ws.remote-devnet.chicmoz.localhost:80"
- VITE_DISCORD_URL: "https://discord.gg/xnw7fVXB7m"
- VITE_GITHUB_URL: "https://github.com/aztec-scan/chicmoz"
- VITE_VERSION_STRING: "development-remote-devnet"
- requires:
- - image: chicmoz-base
- alias: BASE
-deploy:
- kubectl:
- flags:
- apply: ["--force"]
-manifests:
- rawYaml:
- - ./remote_devnet/service.yaml
- - ./remote_devnet/httproute.yaml
- - ./remote_devnet/deployment.yaml
diff --git a/k8s/local/explorer-ui/skaffold.sandbox.yaml b/k8s/local/explorer-ui/skaffold.sandbox.yaml
deleted file mode 100644
index 140645062..000000000
--- a/k8s/local/explorer-ui/skaffold.sandbox.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: skaffold/v4beta6
-kind: Config
-requires:
- - path: ../common/skaffold.chicmoz-base-image.yaml
-build:
- artifacts:
- - image: explorer-ui-sandbox
- context: ../../../services/explorer-ui
- docker:
- dockerfile: Dockerfile
- buildArgs:
- NODE_ENV: "development"
- VITE_L2_NETWORK_ID: "SANDBOX"
- VITE_CHICMOZ_ALL_UI_URLS: "Sandbox|http://sandbox.chicmoz.localhost,Testnet|http://testnet.chicmoz.localhost"
- VITE_API_URL: "http://api.sandbox.chicmoz.localhost:80/v1"
- VITE_API_KEY: "dev-api-key"
- VITE_WS_URL: "ws://ws.sandbox.chicmoz.localhost:80"
- VITE_DISCORD_URL: "https://discord.gg/xnw7fVXB7m"
- VITE_GITHUB_URL: "https://github.com/aztec-scan/chicmoz"
- VITE_VERSION_STRING: "developement-sandbox"
- requires:
- - image: chicmoz-base
- alias: BASE
-deploy:
- kubectl:
- flags:
- apply: ["--force"]
-manifests:
- rawYaml:
- - ./sandbox/service.yaml
- - ./sandbox/httproute.yaml
- - ./sandbox/deployment.yaml
diff --git a/k8s/local/explorer-ui/skaffold.testnet.yaml b/k8s/local/explorer-ui/skaffold.testnet.yaml
deleted file mode 100644
index 504a3c4f2..000000000
--- a/k8s/local/explorer-ui/skaffold.testnet.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: skaffold/v4beta6
-kind: Config
-requires:
- - path: ../common/skaffold.chicmoz-base-image.yaml
-build:
- artifacts:
- - image: explorer-ui-testnet
- context: ../../../services/explorer-ui
- docker:
- dockerfile: Dockerfile
- buildArgs:
- NODE_ENV: "development"
- VITE_L2_NETWORK_ID: "TESTNET"
- VITE_CHICMOZ_ALL_UI_URLS: "Sandbox|http://sandbox.chicmoz.localhost,Testnet|http://testnet.chicmoz.localhost"
- VITE_API_URL: "http://api.testnet.chicmoz.localhost:80/v1"
- VITE_API_KEY: "dev-api-key"
- VITE_WS_URL: "ws://ws.testnet.chicmoz.localhost:80"
- VITE_DISCORD_URL: "https://discord.gg/xnw7fVXB7m"
- VITE_GITHUB_URL: "https://github.com/aztec-scan/chicmoz"
- VITE_VERSION_STRING: "development-testnet"
- requires:
- - image: chicmoz-base
- alias: BASE
-deploy:
- kubectl:
- flags:
- apply: ["--force"]
-manifests:
- rawYaml:
- - ./testnet/service.yaml
- - ./testnet/httproute.yaml
- - ./testnet/deployment.yaml
diff --git a/k8s/local/explorer-ui/testnet/deployment.yaml b/k8s/local/explorer-ui/testnet/deployment.yaml
deleted file mode 100644
index ad8001eb8..000000000
--- a/k8s/local/explorer-ui/testnet/deployment.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app: explorer-ui-testnet-label
- name: explorer-ui-testnet-deployment
- namespace: chicmoz
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: explorer-ui-testnet-label
- template:
- metadata:
- labels:
- app: explorer-ui-testnet-label
- spec:
- containers:
- - image: explorer-ui-testnet:latest
- name: explorer-ui-testnet
- resources:
- limits:
- memory: 300Mi
- cpu: 500m
- ports:
- - name: http-app-port
- containerPort: 80
- protocol: TCP
diff --git a/k8s/local/explorer-ui/testnet/httproute.yaml b/k8s/local/explorer-ui/testnet/httproute.yaml
deleted file mode 100644
index 779ca208e..000000000
--- a/k8s/local/explorer-ui/testnet/httproute.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui-testnet
- namespace: chicmoz
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-local
-spec:
- parentRefs:
- - name: chicmoz-gateway
- sectionName: ui-testnet
- hostnames:
- - testnet.chicmoz.localhost
- rules:
- - matches:
- - path:
- type: PathPrefix
- value: /
- backendRefs:
- - name: explorer-ui-testnet-service
- port: 80
diff --git a/k8s/local/explorer-ui/testnet/service.yaml b/k8s/local/explorer-ui/testnet/service.yaml
deleted file mode 100644
index 209f264cb..000000000
--- a/k8s/local/explorer-ui/testnet/service.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui-testnet-service
- namespace: chicmoz
-spec:
- selector:
- app: explorer-ui-testnet-label
- ports:
- - name: http-app
- protocol: TCP
- port: 80
- targetPort: http-app-port
diff --git a/k8s/local/skaffold.mainnet.yaml b/k8s/local/skaffold.mainnet.yaml
index bd61e1c02..64bdafa79 100644
--- a/k8s/local/skaffold.mainnet.yaml
+++ b/k8s/local/skaffold.mainnet.yaml
@@ -7,7 +7,6 @@ requires:
# - path: ./common/skaffold.infra.yaml
# - path: ./gateways/skaffold.mainnet.yaml
# - path: ./monitoring/skaffold.l2-tips-canary.mainnet.yaml
- # - path: ./explorer-ui/skaffold.mainnet.yaml
- path: ./ethereum-listener/skaffold.mainnet.yaml
- path: ./explorer-api/skaffold.mainnet.yaml
- path: ./auth/skaffold.yaml
diff --git a/k8s/local/skaffold.multi_network.yaml b/k8s/local/skaffold.multi_network.yaml
index 2d3f803d4..cd13f5a4d 100644
--- a/k8s/local/skaffold.multi_network.yaml
+++ b/k8s/local/skaffold.multi_network.yaml
@@ -4,6 +4,5 @@ metadata:
name: multi_network
requires:
- path: ./skaffold.sandbox_no_ui.components.yaml
- - path: ./explorer-ui/skaffold.sandbox.yaml
- path: ./skaffold.testnet.components.yaml
- path: ./gateways/skaffold.sandbox-testnet.yaml
diff --git a/k8s/local/skaffold.only_explorer-ui.yaml b/k8s/local/skaffold.only_explorer-ui.yaml
deleted file mode 100644
index c436f0808..000000000
--- a/k8s/local/skaffold.only_explorer-ui.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-apiVersion: skaffold/v4beta6
-kind: Config
-requires:
- - path: ./explorer-ui/skaffold.sandbox.yaml
diff --git a/k8s/local/skaffold.remote_devnet.yaml b/k8s/local/skaffold.remote_devnet.yaml
index b03b3e5a5..01652abe5 100644
--- a/k8s/local/skaffold.remote_devnet.yaml
+++ b/k8s/local/skaffold.remote_devnet.yaml
@@ -5,7 +5,6 @@ metadata:
requires:
- path: ./common/skaffold.infra.yaml
- path: ./gateways/skaffold.remote_devnet.yaml
- - path: ./explorer-ui/skaffold.remote_devnet.yaml
- path: ./ethereum-listener/skaffold.remote_devnet.yaml
- path: ./explorer-api/skaffold.remote_devnet.yaml
- path: ./auth/skaffold.yaml
diff --git a/k8s/local/skaffold.testnet.yaml b/k8s/local/skaffold.testnet.yaml
index 19333636f..b3898f66a 100644
--- a/k8s/local/skaffold.testnet.yaml
+++ b/k8s/local/skaffold.testnet.yaml
@@ -7,7 +7,6 @@ requires:
- path: ./common/skaffold.infra.yaml
- path: ./gateways/skaffold.testnet.yaml
- path: ./monitoring/skaffold.l2-tips-canary.yaml
- # - path: ./explorer-ui/skaffold.testnet.yaml
- path: ./ethereum-listener/skaffold.testnet.yaml
- path: ./explorer-api/skaffold.testnet.yaml
- path: ./auth/skaffold.yaml
diff --git a/k8s/staging/explorer-ui/skaffold.testnet.yaml b/k8s/staging/explorer-ui/skaffold.testnet.yaml
deleted file mode 100644
index 02a72b278..000000000
--- a/k8s/staging/explorer-ui/skaffold.testnet.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: skaffold/v4beta6
-kind: Config
-requires:
- - path: ../common/skaffold.chicmoz-base-image.yaml
-build:
- artifacts:
- - image: localhost:30500/aztlan-containers/explorer-ui-testnet
- context: ../../../services/explorer-ui
- docker:
- dockerfile: Dockerfile
- buildArgs:
- NODE_ENV: "staging"
- VITE_L2_NETWORK_ID: "TESTNET"
- VITE_CHICMOZ_ALL_UI_URLS: "Testnet|https://testnet.staging.aztecscan.xyz"
- VITE_API_URL: "https://api.testnet.staging.aztecscan.xyz/v1"
- VITE_API_KEY: "temporary-api-key"
- VITE_WS_URL: "wss://ws.testnet.staging.aztecscan.xyz"
- VITE_DISCORD_URL: "https://discord.gg/xnw7fVXB7m"
- VITE_GITHUB_URL: "https://github.com/aztec-scan/chicmoz"
- VITE_VERSION_STRING: "{{.VERSION_STRING}}"
- requires:
- - image: localhost:30500/aztlan-containers/chicmoz-base
- alias: BASE
-deploy:
- kubectl:
- flags:
- apply: ["--force"]
-manifests:
- rawYaml:
- - ./testnet/service.yaml
- - ./testnet/nodeport.yaml
- - ./testnet/deployment.yaml
diff --git a/k8s/staging/explorer-ui/testnet/deployment.yaml b/k8s/staging/explorer-ui/testnet/deployment.yaml
deleted file mode 100644
index 4f1f08628..000000000
--- a/k8s/staging/explorer-ui/testnet/deployment.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app: explorer-ui-testnet-label
- name: explorer-ui-testnet-deployment
- namespace: chicmoz-staging
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: explorer-ui-testnet-label
- template:
- metadata:
- labels:
- app: explorer-ui-testnet-label
- spec:
- imagePullSecrets:
- - name: registry-aztlan-containers
- containers:
- - image: localhost:30500/aztlan-containers/explorer-ui-testnet:latest
- name: explorer-ui-testnet
- resources:
- limits:
- memory: 300Mi
- cpu: 200m
- ports:
- - name: http-app-port
- containerPort: 80
- protocol: TCP
diff --git a/k8s/staging/explorer-ui/testnet/ingress.yaml b/k8s/staging/explorer-ui/testnet/ingress.yaml
deleted file mode 100644
index 5c6d145da..000000000
--- a/k8s/staging/explorer-ui/testnet/ingress.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
- name: ingress-explorer-ui-testnet
- namespace: chicmoz-staging
- annotations:
- cert-manager.io/cluster-issuer: "aztecscan-issuer-staging"
-spec:
- ingressClassName: nginx
- tls:
- - secretName: aztecscan-ui-tls-testnet
- hosts:
- - staging.aztecscan.xyz
- - staging-testnet.aztecscan.xyz
- rules:
- - host: staging.aztecscan.xyz
- http:
- paths:
- - backend:
- service:
- name: explorer-ui-testnet-service
- port:
- name: http-app
- path: /
- pathType: Prefix
- - host: staging-testnet.aztecscan.xyz
- http:
- paths:
- - backend:
- service:
- name: explorer-ui-testnet-service
- port:
- name: http-app
- path: /
- pathType: Prefix
-status:
- loadBalancer: {}
diff --git a/k8s/staging/explorer-ui/testnet/nodeport.yaml b/k8s/staging/explorer-ui/testnet/nodeport.yaml
deleted file mode 100644
index 33a532c47..000000000
--- a/k8s/staging/explorer-ui/testnet/nodeport.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui-testnet-service-external
- namespace: chicmoz-staging
-spec:
- type: NodePort
- selector:
- app: explorer-ui-testnet-label
- ports:
- - protocol: TCP
- port: 80
- targetPort: 80
- nodePort: 30880
diff --git a/k8s/staging/explorer-ui/testnet/service.yaml b/k8s/staging/explorer-ui/testnet/service.yaml
deleted file mode 100644
index 4c3b408a3..000000000
--- a/k8s/staging/explorer-ui/testnet/service.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui-testnet-service
- namespace: chicmoz-staging
-spec:
- selector:
- app: explorer-ui-testnet-label
- ports:
- - name: http-app
- protocol: TCP
- port: 80
- targetPort: http-app-port
diff --git a/k8s/staging/skaffold.testnet.yaml b/k8s/staging/skaffold.testnet.yaml
index d352a4e83..37073496a 100644
--- a/k8s/staging/skaffold.testnet.yaml
+++ b/k8s/staging/skaffold.testnet.yaml
@@ -4,7 +4,6 @@ metadata:
name: chicmoz-staging-sp
requires:
- path: ./common/skaffold.manifests.yaml
- - path: ./explorer-ui/skaffold.testnet.yaml
- path: ./explorer-api/skaffold.testnet.yaml
- path: ./auth/skaffold.yaml
- path: ./aztec-listener/skaffold.testnet.yaml
diff --git a/services/explorer-ui/.env.development b/services/explorer-ui/.env.development
deleted file mode 100644
index 93bcc7052..000000000
--- a/services/explorer-ui/.env.development
+++ /dev/null
@@ -1,7 +0,0 @@
-VITE_L2_NETWORK_ID=TESTNET
-VITE_API_URL=http://api.testnet.chicmoz.localhost/v1
-VITE_CHICMOZ_ALL_UI_URLS=Sandbox|http:/sandbox.chicmoz.localhost,Testnet|http://testnet.chicmoz.localhost
-VITE_API_KEY=dev-api-key
-VITE_WS_URL=ws://ws.testnet.chicmoz.localhost:80
-VITE_DISCORD_URL=https://discord.gg/xnw7fVXB7m
-VITE_GITHUB_URL=https://github.com/aztec-scan/chicmoz
diff --git a/services/explorer-ui/.eslintrc.cjs b/services/explorer-ui/.eslintrc.cjs
deleted file mode 100644
index 8f9128415..000000000
--- a/services/explorer-ui/.eslintrc.cjs
+++ /dev/null
@@ -1,54 +0,0 @@
-/** @type {import("eslint").Linter.Config} */
-const config = {
- root: true,
- parser: "@typescript-eslint/parser",
- env: { browser: true, es2020: true },
- parserOptions: {
- ecmaVersion: "latest",
- sourceType: "module",
- project: ["./tsconfig.json", "./tsconfig.node.json", "./tsconfig.app.json"],
- tsconfigRootDir: __dirname,
- },
- extends: [
- "eslint:recommended",
- "plugin:@typescript-eslint/recommended",
- "plugin:import/errors",
- "plugin:import/warnings",
- "plugin:import/typescript",
- "plugin:@typescript-eslint/recommended-type-checked",
- "plugin:@typescript-eslint/stylistic-type-checked",
- "plugin:react-hooks/recommended",
- "prettier",
- ],
- settings: {
- "import/resolver": {
- typescript: {}, // this loads /tsconfig.json to eslint
- },
- },
- ignorePatterns: ["dist", ".eslintrc.cjs"],
- plugins: ["@typescript-eslint", "react-refresh", "tailwindcss"],
- rules: {
- // These opinionated rules are enabled in stylistic-type-checked above.
- // Feel free to reconfigure them to your own preference.
- "@typescript-eslint/array-type": "off",
- "@typescript-eslint/consistent-type-definitions": "off",
- "@typescript-eslint/no-misused-promises": "warn",
- curly: ["warn", "all"],
- "import/no-cycle": "off",
- "import/no-default-export": "off",
- "react-refresh/only-export-components": [
- "warn",
- { allowConstantExport: true },
- ],
- "@typescript-eslint/consistent-type-imports": [
- "warn",
- {
- prefer: "type-imports",
- fixStyle: "inline-type-imports",
- },
- ],
- "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
- },
-};
-
-module.exports = config;
diff --git a/services/explorer-ui/.gitignore b/services/explorer-ui/.gitignore
deleted file mode 100644
index a547bf36d..000000000
--- a/services/explorer-ui/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/services/explorer-ui/Dockerfile b/services/explorer-ui/Dockerfile
deleted file mode 100644
index 0940db263..000000000
--- a/services/explorer-ui/Dockerfile
+++ /dev/null
@@ -1,55 +0,0 @@
-ARG BASE
-FROM $BASE as deps
-
-WORKDIR /usr/main/services/explorer-ui
-
-ENV SKIP_ENV_VALIDATION true
-
-ARG NODE_ENV
-ENV NODE_ENV $NODE_ENV
-
-ARG VITE_L2_NETWORK_ID
-ENV VITE_L2_NETWORK_ID $VITE_L2_NETWORK_ID
-
-ARG VITE_CHICMOZ_ALL_UI_URLS
-ENV VITE_CHICMOZ_ALL_UI_URLS $VITE_CHICMOZ_ALL_UI_URLS
-
-ARG VITE_API_URL
-ENV VITE_API_URL $VITE_API_URL
-
-ARG VITE_API_KEY
-ENV VITE_API_KEY $VITE_API_KEY
-
-ARG VITE_WS_URL
-ENV VITE_WS_URL $VITE_WS_URL
-
-ARG VITE_DISCORD_URL
-ENV VITE_DISCORD_URL $VITE_DISCORD_URL
-
-ARG VITE_GITHUB_URL
-ENV VITE_GITHUB_URL $VITE_GITHUB_URL
-
-ARG VITE_X_URL
-ENV VITE_X_URL $VITE_X_URL
-
-ARG VITE_VERSION_STRING
-ENV VITE_VERSION_STRING $VITE_VERSION_STRING
-
-RUN yarn workspaces focus @chicmoz/explorer-ui
-
-FROM deps as build
-
-ENV GENERATE_SOURCEMAP false
-
-WORKDIR /usr/main/services/explorer-ui
-
-COPY . .
-COPY --from=deps /usr/main /usr/main
-RUN yarn build
-
-FROM nginx:1.21-alpine as runner
-
-RUN sed -i '/location \//a try_files $uri $uri/ /index.html;' /etc/nginx/conf.d/default.conf
-COPY --from=build /usr/main/services/explorer-ui/dist /usr/share/nginx/html
-
-CMD ["nginx", "-g", "daemon off;"]
diff --git a/services/explorer-ui/Dockerfile.prod b/services/explorer-ui/Dockerfile.prod
deleted file mode 100644
index 0704d93f9..000000000
--- a/services/explorer-ui/Dockerfile.prod
+++ /dev/null
@@ -1,58 +0,0 @@
-FROM node:20-alpine AS build
-
-RUN apk update && apk add jq python3 make g++
-
-WORKDIR /usr/main
-
-COPY .yarn .yarn
-COPY .yarnrc.yml .yarnrc.yml
-COPY package.json package.json
-COPY yarn.lock yarn.lock
-COPY services services
-COPY packages packages
-
-ENV SKIP_ENV_VALIDATION true
-ENV GENERATE_SOURCEMAP false
-
-ARG NODE_ENV
-ENV NODE_ENV $NODE_ENV
-
-ARG VITE_L2_NETWORK_ID
-ENV VITE_L2_NETWORK_ID $VITE_L2_NETWORK_ID
-
-ARG VITE_CHICMOZ_ALL_UI_URLS
-ENV VITE_CHICMOZ_ALL_UI_URLS $VITE_CHICMOZ_ALL_UI_URLS
-
-ARG VITE_API_URL
-ENV VITE_API_URL $VITE_API_URL
-
-ARG VITE_API_KEY
-ENV VITE_API_KEY $VITE_API_KEY
-
-ARG VITE_WS_URL
-ENV VITE_WS_URL $VITE_WS_URL
-
-ARG VITE_DISCORD_URL
-ENV VITE_DISCORD_URL $VITE_DISCORD_URL
-
-ARG VITE_GITHUB_URL
-ENV VITE_GITHUB_URL $VITE_GITHUB_URL
-
-ARG VITE_X_URL
-ENV VITE_X_URL $VITE_X_URL
-
-ARG VITE_VERSION_STRING
-ENV VITE_VERSION_STRING $VITE_VERSION_STRING
-
-RUN yarn install
-RUN yarn run build:packages
-
-WORKDIR /usr/main/services/explorer-ui
-RUN yarn build
-
-FROM nginx:1.21-alpine AS runner
-
-RUN sed -i '/location \//a try_files $uri $uri/ /index.html;' /etc/nginx/conf.d/default.conf
-COPY --from=build /usr/main/services/explorer-ui/dist /usr/share/nginx/html
-
-CMD ["nginx", "-g", "daemon off;"]
diff --git a/services/explorer-ui/README.md b/services/explorer-ui/README.md
deleted file mode 100644
index 85a6989e1..000000000
--- a/services/explorer-ui/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# React + TypeScript + Vite
-
-This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
-
-Currently, two official plugins are available:
-
-- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
-- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
-
-## Expanding the ESLint configuration
-
-If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
-
-- Configure the top-level `parserOptions` property like this:
-
-```js
-export default {
- // other rules...
- parserOptions: {
- ecmaVersion: "latest",
- sourceType: "module",
- project: ["./tsconfig.json", "./tsconfig.node.json", "./tsconfig.app.json"],
- tsconfigRootDir: __dirname,
- },
-};
-```
-
-- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
-- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
-- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
diff --git a/services/explorer-ui/components.json b/services/explorer-ui/components.json
deleted file mode 100644
index 4e412086c..000000000
--- a/services/explorer-ui/components.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "$schema": "https://ui.shadcn.com/schema.json",
- "aliases": {
- "components": "~/components/",
- "utils": "~/lib/utils"
- },
- "rsc": true,
- "style": "new-york",
- "tailwind": {
- "baseColor": "slate",
- "config": "tailwind.config.ts",
- "css": "src/styles/global.css",
- "cssVariables": true,
- "prefix": ""
- },
- "tsx": true
-}
diff --git a/services/explorer-ui/index.html b/services/explorer-ui/index.html
deleted file mode 100644
index a4f914db7..000000000
--- a/services/explorer-ui/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Aztec-Scan
-
-
-
-
-
-
diff --git a/services/explorer-ui/k8s/base/deployment.yaml b/services/explorer-ui/k8s/base/deployment.yaml
deleted file mode 100644
index cba7468f4..000000000
--- a/services/explorer-ui/k8s/base/deployment.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: explorer-ui
- labels:
- app: explorer-ui
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-prod
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: explorer-ui
- template:
- metadata:
- labels:
- app: explorer-ui
- spec:
- imagePullSecrets:
- - name: registry-aztlan-containers
- containers:
- - name: explorer-ui
- image: registry.digitalocean.com/aztlan-containers/explorer-ui
- imagePullPolicy: Always
- resources:
- limits:
- memory: 300Mi
- cpu: 200m
- ports:
- - name: http-app-port
- containerPort: 80
- protocol: TCP
diff --git a/services/explorer-ui/k8s/base/kustomization.yaml b/services/explorer-ui/k8s/base/kustomization.yaml
deleted file mode 100644
index 5b98e9449..000000000
--- a/services/explorer-ui/k8s/base/kustomization.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-resources:
- - deployment.yaml
- - service.yaml
diff --git a/services/explorer-ui/k8s/base/service.yaml b/services/explorer-ui/k8s/base/service.yaml
deleted file mode 100644
index 9a36a88a5..000000000
--- a/services/explorer-ui/k8s/base/service.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- name: explorer-ui
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-prod
-spec:
- selector:
- app: explorer-ui
- ports:
- - name: http-app
- protocol: TCP
- port: 80
- targetPort: http-app-port
diff --git a/services/explorer-ui/k8s/overlays/devnet/httproute.yaml b/services/explorer-ui/k8s/overlays/devnet/httproute.yaml
deleted file mode 100644
index 6c29947bb..000000000
--- a/services/explorer-ui/k8s/overlays/devnet/httproute.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui # nameSuffix appends -devnet → explorer-ui-devnet
- namespace: chicmoz-prod
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-prod
-spec:
- parentRefs:
- - name: aztecscan-gateway
- sectionName: ui-devnet-http
- - name: aztecscan-gateway
- sectionName: ui-devnet-https
- hostnames:
- - devnet.aztecscan.xyz
- rules:
- - backendRefs:
- - name: explorer-ui-devnet # hardcoded — nameSuffix does NOT transform backendRefs
- port: 80
- matches:
- - path:
- type: PathPrefix
- value: /
diff --git a/services/explorer-ui/k8s/overlays/devnet/kustomization.yaml b/services/explorer-ui/k8s/overlays/devnet/kustomization.yaml
deleted file mode 100644
index 1de0ad1fe..000000000
--- a/services/explorer-ui/k8s/overlays/devnet/kustomization.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-namespace: chicmoz-prod
-nameSuffix: -devnet
-
-resources:
- - ../../base
- - httproute.yaml
-
-images:
- - name: registry.digitalocean.com/aztlan-containers/explorer-ui
- newName: registry.digitalocean.com/aztlan-containers/explorer-ui-devnet
- newTag: latest
-
-patches:
- - patch: |-
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: explorer-ui
- spec:
- selector:
- matchLabels:
- app: explorer-ui
- network: devnet
- template:
- metadata:
- labels:
- app: explorer-ui
- network: devnet
- - patch: |-
- apiVersion: v1
- kind: Service
- metadata:
- name: explorer-ui
- spec:
- selector:
- app: explorer-ui
- network: devnet
diff --git a/services/explorer-ui/k8s/overlays/mainnet/httproute.yaml b/services/explorer-ui/k8s/overlays/mainnet/httproute.yaml
deleted file mode 100644
index fbea89147..000000000
--- a/services/explorer-ui/k8s/overlays/mainnet/httproute.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui # nameSuffix appends -mainnet → explorer-ui-mainnet
- namespace: chicmoz-prod
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-prod
-spec:
- parentRefs:
- - name: aztecscan-gateway
- sectionName: ui-v1-http
- - name: aztecscan-gateway
- sectionName: ui-v1-https
- - name: aztecscan-gateway
- sectionName: ui-v1-mainnet-http
- - name: aztecscan-gateway
- sectionName: ui-v1-mainnet-https
- hostnames:
- - aztecscan.xyz
- - mainnet.aztecscan.xyz
- rules:
- - backendRefs:
- - name: explorer-ui-mainnet # hardcoded — nameSuffix does NOT transform backendRefs
- port: 80
- matches:
- - path:
- type: PathPrefix
- value: /
diff --git a/services/explorer-ui/k8s/overlays/mainnet/kustomization.yaml b/services/explorer-ui/k8s/overlays/mainnet/kustomization.yaml
deleted file mode 100644
index 78c8971e3..000000000
--- a/services/explorer-ui/k8s/overlays/mainnet/kustomization.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-namespace: chicmoz-prod
-nameSuffix: -mainnet
-
-resources:
- - ../../base
- - httproute.yaml
-
-images:
- - name: registry.digitalocean.com/aztlan-containers/explorer-ui
- newName: registry.digitalocean.com/aztlan-containers/explorer-ui-mainnet
- newTag: latest
-
-patches:
- - patch: |-
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: explorer-ui
- spec:
- selector:
- matchLabels:
- app: explorer-ui
- network: mainnet
- template:
- metadata:
- labels:
- app: explorer-ui
- network: mainnet
- - patch: |-
- apiVersion: v1
- kind: Service
- metadata:
- name: explorer-ui
- spec:
- selector:
- app: explorer-ui
- network: mainnet
diff --git a/services/explorer-ui/k8s/overlays/testnet/httproute.yaml b/services/explorer-ui/k8s/overlays/testnet/httproute.yaml
deleted file mode 100644
index 8a2ab61a8..000000000
--- a/services/explorer-ui/k8s/overlays/testnet/httproute.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
- name: explorer-ui # nameSuffix appends -testnet → explorer-ui-testnet
- namespace: chicmoz-prod
- labels:
- app.kubernetes.io/name: explorer-ui
- app.kubernetes.io/part-of: chicmoz-prod
-spec:
- parentRefs:
- - name: aztecscan-gateway
- sectionName: ui-v1-testnet-http
- - name: aztecscan-gateway
- sectionName: ui-v1-testnet-https
- hostnames:
- - testnet.aztecscan.xyz
- rules:
- - backendRefs:
- - name: explorer-ui-testnet # hardcoded — nameSuffix does NOT transform backendRefs
- port: 80
- matches:
- - path:
- type: PathPrefix
- value: /
diff --git a/services/explorer-ui/k8s/overlays/testnet/kustomization.yaml b/services/explorer-ui/k8s/overlays/testnet/kustomization.yaml
deleted file mode 100644
index 6c5a2a761..000000000
--- a/services/explorer-ui/k8s/overlays/testnet/kustomization.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-namespace: chicmoz-prod
-nameSuffix: -testnet
-
-resources:
- - ../../base
- - httproute.yaml
-
-images:
- - name: registry.digitalocean.com/aztlan-containers/explorer-ui
- newName: registry.digitalocean.com/aztlan-containers/explorer-ui-testnet
- newTag: latest
-
-patches:
- - patch: |-
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: explorer-ui
- spec:
- selector:
- matchLabels:
- app: explorer-ui
- network: testnet
- template:
- metadata:
- labels:
- app: explorer-ui
- network: testnet
- - patch: |-
- apiVersion: v1
- kind: Service
- metadata:
- name: explorer-ui
- spec:
- selector:
- app: explorer-ui
- network: testnet
diff --git a/services/explorer-ui/package.json b/services/explorer-ui/package.json
deleted file mode 100644
index 44059144e..000000000
--- a/services/explorer-ui/package.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "name": "@chicmoz/explorer-ui",
- "private": true,
- "version": "0.0.1",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc -b && vite build",
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
- "preview": "vite preview"
- },
- "dependencies": {
- "@chicmoz-pkg/types": "workspace:^",
- "@radix-ui/react-accordion": "1.1.2",
- "@radix-ui/react-alert-dialog": "1.1.1",
- "@radix-ui/react-checkbox": "1.1.4",
- "@radix-ui/react-dialog": "1.1.1",
- "@radix-ui/react-dropdown-menu": "2.1.1",
- "@radix-ui/react-icons": "1.3.0",
- "@radix-ui/react-label": "2.0.2",
- "@radix-ui/react-navigation-menu": "1.1.4",
- "@radix-ui/react-popover": "1.1.1",
- "@radix-ui/react-select": "2.1.1",
- "@radix-ui/react-separator": "1.1.0",
- "@radix-ui/react-slot": "1.1.0",
- "@radix-ui/react-tabs": "1.0.4",
- "@radix-ui/react-toast": "1.1.5",
- "@radix-ui/react-tooltip": "1.1.3",
- "@tanstack/react-query": "5.56.2",
- "@tanstack/react-router": "1.45.2",
- "@tanstack/react-table": "8.16.0",
- "axios": "1.7.7",
- "buffer": "6.0.3",
- "class-variance-authority": "0.7.0",
- "clsx": "2.1.1",
- "cmdk": "1.0.0",
- "lucide-react": "0.356.0",
- "next-themes": "0.3.0",
- "react": "18.3.1",
- "react-dom": "18.3.1",
- "react-syntax-highlighter": "^16.1.1",
- "recharts": "^2.15.3",
- "sonner": "1.5.0",
- "vaul": "0.9.1",
- "zod": "^3.23.8"
- },
- "devDependencies": {
- "@tailwindcss/typography": "0.5.10",
- "@tanstack/react-query-devtools": "5.32.0",
- "@tanstack/router-devtools": "1.45.2",
- "@tanstack/router-plugin": "1.45.2",
- "@tanstack/router-vite-plugin": "1.45.2",
- "@types/node": "20.14.12",
- "@types/react": "18.3.3",
- "@types/react-dom": "18.3.0",
- "@types/react-syntax-highlighter": "^15.5.13",
- "@typescript-eslint/eslint-plugin": "7.15.0",
- "@typescript-eslint/parser": "7.15.0",
- "@vitejs/plugin-react": "4.5.2",
- "autoprefixer": "10.4.19",
- "esbuild": "0.21.5",
- "eslint": "8.57.0",
- "eslint-config-prettier": "9.0.0",
- "eslint-import-resolver-typescript": "3.6.3",
- "eslint-plugin-import": "2.29.0",
- "eslint-plugin-promise": "6.0.0",
- "eslint-plugin-react-hooks": "4.6.2",
- "eslint-plugin-react-refresh": "0.4.7",
- "eslint-plugin-tailwindcss": "3.13.0",
- "postcss": "8.4.39",
- "prettier": "3.1.0",
- "prettier-plugin-organize-imports": "3.2.4",
- "prettier-plugin-sort-json": "3.1.0",
- "tailwind-merge": "2.4.0",
- "tailwindcss": "3.4.6",
- "tailwindcss-animate": "1.0.7",
- "typescript": "5.8.3",
- "vite": "5.3.4",
- "vite-plugin-svgr": "4.2.0"
- }
-}
diff --git a/services/explorer-ui/postcss.config.js b/services/explorer-ui/postcss.config.js
deleted file mode 100644
index 2e7af2b7f..000000000
--- a/services/explorer-ui/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-}
diff --git a/services/explorer-ui/src/api/block.ts b/services/explorer-ui/src/api/block.ts
deleted file mode 100644
index 322906f4b..000000000
--- a/services/explorer-ui/src/api/block.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import {
- type ChicmozL2BlockLight,
- type ChicmozReorg,
- type UiBlockTable,
- chicmozL2BlockLightSchema,
- chicmozReorgSchema,
- uiBlockTableSchema,
-} from "@chicmoz-pkg/types";
-import client, { validateResponse } from "./client";
-import { aztecExplorer } from "~/service/constants";
-import { z } from "zod";
-
-export const BlockAPI = {
- getLatestBlock: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2LatestBlock);
-
- return validateResponse(chicmozL2BlockLightSchema, response.data);
- },
- getLatestTableBlocks: async (): Promise => {
- const response = await client.get(aztecExplorer.getTableBlocks);
-
- return validateResponse(z.array(uiBlockTableSchema), response.data);
- },
- getLatestTableBlocksByHeightRange: async (
- start?: number,
- end?: number,
- ): Promise => {
- const params: { from?: number; to?: number } = {};
- if (start) {
- params.from = start;
- }
- if (end) {
- params.to = end;
- }
- const response = await client.get(aztecExplorer.getTableBlocks, {
- params,
- });
-
- return validateResponse(z.array(uiBlockTableSchema), response.data);
- },
- getBlocksByNativeStatus: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2BlocksByNativeStatus);
- return validateResponse(z.array(chicmozL2BlockLightSchema), response.data);
- },
- getOrphanedBlocks: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2OrphanedBlocks);
- return validateResponse(z.array(chicmozL2BlockLightSchema), response.data);
- },
- getOrphanedBlocksLimited: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2OrphanedBlocksLimited);
- return validateResponse(z.array(chicmozL2BlockLightSchema), response.data);
- },
- getReorgs: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2Reorgs);
- return validateResponse(z.array(chicmozReorgSchema), response.data);
- },
- getLatestHeight: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2LatestHeight);
- return validateResponse(z.number(), response.data);
- },
- getBlockByHeight: async (height: string): Promise => {
- const response = await client.get(
- `${aztecExplorer.getL2BlockByHeight}${height}`,
- );
- return validateResponse(chicmozL2BlockLightSchema, response.data);
- },
- getBlocksByHeightRange: async (
- start?: number,
- end?: number,
- ): Promise => {
- const params: { from?: number; to?: number } = {};
- if (start) {
- params.from = start;
- }
- if (end) {
- params.to = end;
- }
- const response = await client.get(
- `${aztecExplorer.getL2BlocksByHeightRange}`,
- {
- params,
- },
- );
- return validateResponse(z.array(chicmozL2BlockLightSchema), response.data);
- },
- getBlockByHash: async (hash: string): Promise => {
- const response = await client.get(
- `${aztecExplorer.getL2BlockByHash}${hash}`,
- );
- return validateResponse(chicmozL2BlockLightSchema, response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/chain-info.ts b/services/explorer-ui/src/api/chain-info.ts
deleted file mode 100644
index d1247f582..000000000
--- a/services/explorer-ui/src/api/chain-info.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import {
- chicmozChainInfoSchema,
- chicmozL2RpcNodeErrorSchema,
- type ChicmozChainInfo,
- type ChicmozL2RpcNodeError,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const ChainInfoAPI = {
- getChainInfo: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2ChainInfo);
- return validateResponse(chicmozChainInfoSchema, response.data);
- },
- getChainErrors: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2ChainErrors);
- return validateResponse(
- z.array(chicmozL2RpcNodeErrorSchema),
- response.data
- );
- },
-};
diff --git a/services/explorer-ui/src/api/client.ts b/services/explorer-ui/src/api/client.ts
deleted file mode 100644
index ecffbf44f..000000000
--- a/services/explorer-ui/src/api/client.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-import axios, { type AxiosError } from "axios";
-import { ZodError, type z } from "zod";
-import { API_URL } from "~/service/constants";
-
-// TODO: evaluate if client instead should be a hook?
-const client = axios.create({
- baseURL: API_URL,
-});
-
-client.defaults.headers.get["Content-Type"] = "application/json";
-
-export class ApiError extends Error {
- constructor(
- public status: number,
- message: string,
- public type: "API" | "Schema" = "API",
- ) {
- super(message);
- this.name = "ApiError";
- this.status = status;
- }
-}
-
-let lastSuccessfulRequest: { date: Date; path: string } | null = null;
-let lastError: { date: Date; error: ApiError } | null = null;
-
-client.interceptors.response.use(
- (response) => {
- lastSuccessfulRequest = {
- date: new Date(),
- path: response.config.url ?? "Unknown",
- };
- return response;
- },
- (error: AxiosError) => {
- if (error.response) {
- let errorString = error.response.statusText;
- try {
- errorString =
- typeof error.response.data === "string"
- ? error.response.data
- : JSON.stringify(error.response.data);
- } catch {
- // ignore
- }
- lastError = {
- date: new Date(),
- error: new ApiError(error.response.status, errorString, "API"),
- };
- } else if (error.request) {
- lastError = {
- date: new Date(),
- error: new ApiError(0, "No response received from server", "API"),
- };
- } else {
- lastError = {
- date: new Date(),
- error: new ApiError(
- 0,
- error.message || "An unexpected error occurred",
- "API",
- ),
- };
- }
- throw lastError.error;
- },
-);
-
-export const validateResponse = (
- schema: T,
- data: unknown,
-): z.infer => {
- try {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
- return schema.parse(data);
- } catch (error) {
- if (error instanceof ZodError) {
- lastError = {
- date: new Date(),
- // TODO: add request-path to error
- error: new ApiError(400, error.errors[0].message, "Schema"),
- };
- } else {
- lastError = {
- date: new Date(),
- error: new ApiError(
- 400,
- `Failed to validate response: ${(error as Error).message}`,
- "Schema",
- ),
- };
- }
- throw lastError.error;
- }
-};
-
-export const getLastSuccessfulRequest = () => lastSuccessfulRequest;
-export const getLastError = () => lastError;
-
-export default client;
diff --git a/services/explorer-ui/src/api/contract.ts b/services/explorer-ui/src/api/contract.ts
deleted file mode 100644
index 25b346af3..000000000
--- a/services/explorer-ui/src/api/contract.ts
+++ /dev/null
@@ -1,289 +0,0 @@
-import {
- aztecScanNoteSchema,
- chicmozContractInstanceBalanceSchema,
- chicmozL2ContractClassRegisteredEventSchema,
- chicmozL2ContractInstanceDeluxeSchema,
- chicmozL2PrivateFunctionBroadcastedEventSchema,
- chicmozL2UtilityFunctionBroadcastedEventSchema,
- sourceCodeEntrySchema,
- sourceVerificationJobSchema,
- type ChicmozContractInstanceBalance,
- type ChicmozL2ContractClassRegisteredEvent,
- type ChicmozL2ContractInstanceDeluxe,
- type ChicmozL2PrivateFunctionBroadcastedEvent,
- type ChicmozL2UtilityFunctionBroadcastedEvent,
- type SourceVerificationJob,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-const contractInstancesWithAztecScanNotesSchema = z.lazy(() =>
- z.object({
- ...chicmozL2ContractInstanceDeluxeSchema.schema.shape,
- aztecScanNotes: aztecScanNoteSchema,
- }),
-);
-
-export type ChicmozL2ContractInstanceWithAztecScanNotes = z.infer<
- typeof contractInstancesWithAztecScanNotesSchema
->;
-
-const contractClassSourceResponseSchema = z.object({
- contractClassId: z.string(),
- version: z.number(),
- sourceCodeUrl: z.string().nullable().optional(),
- sourceCodeCommitHash: z.string().nullable().optional(),
- gitRef: z.string().nullable().optional(),
- aztecVersion: z.string().nullable().optional(),
- sourceCode: sourceCodeEntrySchema.array(),
-});
-
-export type ContractClassSourceResponse = z.infer<
- typeof contractClassSourceResponseSchema
->;
-
-const verifySourceResponseSchema = z.object({
- jobId: z.string().uuid().nullable(),
- status: z.string(),
- sourceCodeUrl: z.string().optional(),
-});
-
-export type VerifySourceResponse = z.infer;
-
-export const ContractL2API = {
- getContractClass: async ({
- classId,
- version,
- includeArtifactJson,
- }: {
- classId: string;
- version: string;
- includeArtifactJson?: boolean;
- }): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractClassByIdAndVersion(classId, version),
- {
- params: {
- includeArtifactJson,
- },
- },
- );
- return validateResponse(
- chicmozL2ContractClassRegisteredEventSchema,
- response.data,
- );
- },
- getContractClasses: async (
- classId?: string,
- verifiedSourceOnly?: boolean,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractClasses(classId),
- {
- params: classId ? undefined : { verifiedSourceOnly },
- },
- );
- return validateResponse(
- chicmozL2ContractClassRegisteredEventSchema.array(),
- response.data,
- );
- },
- getContractClassPrivateFunctions: async (
- classId: string,
- functionSelector?: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractClassPrivateFunctions(
- classId,
- functionSelector,
- ),
- );
- return validateResponse(
- chicmozL2PrivateFunctionBroadcastedEventSchema.array(),
- response.data,
- );
- },
- getL2ContractClassUtilityFunctions: async (
- classId: string,
- functionSelector?: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractClassUtilityFunctions(
- classId,
- functionSelector,
- ),
- );
- return validateResponse(
- chicmozL2UtilityFunctionBroadcastedEventSchema.array(),
- response.data,
- );
- },
- getContractInstance: async ({
- address,
- includeArtifactJson,
- }: {
- address: string;
- includeArtifactJson?: boolean;
- }): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstance(address),
- {
- params: {
- includeArtifactJson,
- },
- },
- );
- return validateResponse(
- chicmozL2ContractInstanceDeluxeSchema,
- response.data,
- );
- },
- getContractInstanceBalance: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstanceBalance(address),
- );
- return validateResponse(
- chicmozContractInstanceBalanceSchema,
- response.data,
- );
- },
- getContractInstances: async (): Promise<
- ChicmozL2ContractInstanceDeluxe[]
- > => {
- const response = await client.get(aztecExplorer.getL2ContractInstances);
- return validateResponse(
- chicmozL2ContractInstanceDeluxeSchema.array(),
- response.data,
- );
- },
- getContractInstancesWithAztecScanNotes: async (): Promise<
- ChicmozL2ContractInstanceWithAztecScanNotes[]
- > => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstancesWithAztecScanNotes,
- );
- return validateResponse(
- contractInstancesWithAztecScanNotesSchema.array(),
- response.data,
- );
- },
- getContractInstancesWithBalance: async (): Promise<
- ChicmozContractInstanceBalance[]
- > => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstancesWithBalance,
- );
- return validateResponse(
- chicmozContractInstanceBalanceSchema.array(),
- response.data,
- );
- },
- getContractInstanceBalanceHistory: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstanceBalanceHistory(address),
- );
- return validateResponse(
- chicmozContractInstanceBalanceSchema.array(),
- response.data,
- );
- },
- getContracInstanceByBlockHash: async (
- blockHash: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstancesByBlockHash(blockHash),
- );
- return validateResponse(
- chicmozL2ContractInstanceDeluxeSchema,
- response.data,
- );
- },
- getContractInstancesByClassId: async (
- classId: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractInstancesByClassId(classId),
- );
- return validateResponse(
- chicmozL2ContractInstanceDeluxeSchema.array(),
- response.data,
- );
- },
- submitStandardContract: async ({
- classId,
- version,
- standardVersion,
- standardName,
- }: {
- classId: string;
- version: string;
- standardVersion: string;
- standardName: string;
- }): Promise => {
- const response = await client.post(
- aztecExplorer.postL2ContractClassStandardArtifact(classId, version),
- {
- version: standardVersion,
- name: standardName,
- },
- );
- return validateResponse(
- chicmozL2ContractClassRegisteredEventSchema,
- response.data,
- );
- },
- getContractClassSource: async ({
- classId,
- version,
- }: {
- classId: string;
- version: string;
- }): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ContractClassSource(classId, version),
- );
- return validateResponse(contractClassSourceResponseSchema, response.data);
- },
- postVerifySource: async ({
- classId,
- version,
- githubUrl,
- gitRef,
- subPath,
- }: {
- classId: string;
- version: string;
- githubUrl: string;
- gitRef?: string;
- subPath?: string;
- }): Promise => {
- const response = await client.post(
- aztecExplorer.postL2VerifySource(classId, version),
- {
- githubUrl,
- gitRef,
- subPath,
- },
- );
- return validateResponse(verifySourceResponseSchema, response.data);
- },
- getVerifySourceJob: async ({
- classId,
- version,
- jobId,
- }: {
- classId: string;
- version: string;
- jobId: string;
- }): Promise => {
- const response = await client.get(
- aztecExplorer.getL2VerifySourceJob(classId, version, jobId),
- );
- return validateResponse(sourceVerificationJobSchema, response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/dropped-tx.ts b/services/explorer-ui/src/api/dropped-tx.ts
deleted file mode 100644
index aa6aa9d6b..000000000
--- a/services/explorer-ui/src/api/dropped-tx.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {
- chicmozL2DroppedTxSchema,
- type ChicmozL2DroppedTx,
-} from "@chicmoz-pkg/types";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const DroppedTxAPI = {
- getDroppedTxByHash: async (hash: string): Promise => {
- try {
- const response = await client.get(
- aztecExplorer.getL2DroppedTxByHash(hash)
- );
- return validateResponse(chicmozL2DroppedTxSchema, response.data);
- } catch (error) {
- // Return null if the transaction is not found (404) or any other error
- return null;
- }
- },
-};
diff --git a/services/explorer-ui/src/api/fee-recipient.ts b/services/explorer-ui/src/api/fee-recipient.ts
deleted file mode 100644
index 5bc1059e4..000000000
--- a/services/explorer-ui/src/api/fee-recipient.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import {
- chicmozFeeRecipientSchema,
- type ChicmozFeeRecipient,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const FeeRecipientAPI = {
- getFeeRecipients: async (): Promise => {
- const response = await client.get(`${aztecExplorer.getL2FeeRecipients}`);
- return validateResponse(z.array(chicmozFeeRecipientSchema), response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/index.ts b/services/explorer-ui/src/api/index.ts
deleted file mode 100644
index b0436e99a..000000000
--- a/services/explorer-ui/src/api/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export * from "./contract";
-export * from "./verified-contract-instance";
-export * from "./block";
-export * from "./tx-effect";
-export * from "./tx";
-export * from "./chain-info";
-export * from "./rpc-node";
diff --git a/services/explorer-ui/src/api/l1-l2-validator.ts b/services/explorer-ui/src/api/l1-l2-validator.ts
deleted file mode 100644
index 7c3e559aa..000000000
--- a/services/explorer-ui/src/api/l1-l2-validator.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import {
- chicmozL1L2ValidatorHistorySchema,
- chicmozL1L2ValidatorSchema,
- chicmozL1L2ValidatorTotalsSchema,
- type ChicmozL1L2Validator,
- type ChicmozL1L2ValidatorHistory,
- type ChicmozL1L2ValidatorTotals,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const L1L2ValidatorAPI = {
- getValidators: async (
- limit?: number,
- offset?: number,
- ): Promise => {
- const params: { limit?: number; offset?: number } = {};
- if (limit) {
- params.limit = limit;
- }
- if (offset) {
- params.offset = offset;
- }
- const response = await client.get(aztecExplorer.getL1L2Validators, {
- params,
- });
- return validateResponse(z.array(chicmozL1L2ValidatorSchema), response.data);
- },
- getValidatorByAddress: async (
- address: string,
- ): Promise => {
- const response = await client.get(aztecExplorer.getL1L2Validator(address));
- return validateResponse(chicmozL1L2ValidatorSchema, response.data);
- },
- getValidatorHistory: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL1L2ValidatorHistory(address),
- );
- return validateResponse(chicmozL1L2ValidatorHistorySchema, response.data);
- },
- getValidatorTotals: async (): Promise => {
- const response = await client.get(aztecExplorer.getL1L2ValidatorTotals);
- return validateResponse(chicmozL1L2ValidatorTotalsSchema, response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/l1/contract-events.ts b/services/explorer-ui/src/api/l1/contract-events.ts
deleted file mode 100644
index 917b4f369..000000000
--- a/services/explorer-ui/src/api/l1/contract-events.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import {
- chicmozL1GenericContractEventSchema,
- type ChicmozL1GenericContractEvent,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "../client";
-
-export const ContractEventAPI = {
- getContractEvents: async (): Promise => {
- const response = await client.get(`${aztecExplorer.getL1GenericContractEvents}`);
- return validateResponse(z.array(chicmozL1GenericContractEventSchema), response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/l1/fee-juice-portal-deposits.ts b/services/explorer-ui/src/api/l1/fee-juice-portal-deposits.ts
deleted file mode 100644
index 20cd626ca..000000000
--- a/services/explorer-ui/src/api/l1/fee-juice-portal-deposits.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import {
- chicmozL1FeeJuicePortalDepositSchema,
- type ChicmozL1FeeJuicePortalDeposit,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "../client";
-
-export const FeeJuicePortalDepositAPI = {
- getByAddress: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL1FeeJuicePortalDepositsByAddress(address),
- );
- return validateResponse(
- z.array(chicmozL1FeeJuicePortalDepositSchema),
- response.data,
- );
- },
-};
diff --git a/services/explorer-ui/src/api/rpc-node.ts b/services/explorer-ui/src/api/rpc-node.ts
deleted file mode 100644
index 618bdecb0..000000000
--- a/services/explorer-ui/src/api/rpc-node.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {
- type PublicChicmozL2RpcNode,
- type PublicChicmozL2RpcNodeDeluxe,
- publicChicmozL2RpcNodeDeluxeSchema,
- publicChicmozL2RpcNodeSchema,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const RpcNodeAPI = {
- getAllRpcNodes: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2RpcNodes);
- return validateResponse(
- z.array(publicChicmozL2RpcNodeSchema),
- response.data,
- );
- },
- getRpcNodeByName: async (
- rpcNodeName: string,
- ): Promise => {
- const response = await client.get(aztecExplorer.getL2RpcNode(rpcNodeName));
- return validateResponse(publicChicmozL2RpcNodeDeluxeSchema, response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/search.ts b/services/explorer-ui/src/api/search.ts
deleted file mode 100644
index 39bd1d607..000000000
--- a/services/explorer-ui/src/api/search.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-import {
- type ChicmozSearchResults,
- chicmozSearchResultsSchema,
- chicmozSearchQuerySchema,
-} from "@chicmoz-pkg/types";
-
-export const searchL2Api = {
- search: async (queryString: string): Promise => {
- const query = chicmozSearchQuerySchema.parse({ q: queryString });
- const response = await client.get(aztecExplorer.getL2SearchResult, {
- params: query,
- });
- return validateResponse(chicmozSearchResultsSchema, response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/stats.ts b/services/explorer-ui/src/api/stats.ts
deleted file mode 100644
index 3f694fdad..000000000
--- a/services/explorer-ui/src/api/stats.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-import { z } from "zod";
-
-export const statsL2Api = {
- getL2TotalTxEffects: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2TotalTxEffects);
- return validateResponse(z.coerce.string(), response.data);
- },
- getL2TotalTxEffectsLast24h: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2TotalTxEffectsLast24h);
- return validateResponse(z.coerce.string(), response.data);
- },
- getL2TotalContracts: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2TotalContracts);
- return validateResponse(z.coerce.string(), response.data);
- },
- getL2TotalContractsLast24h: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2TotalContractsLast24h);
- return validateResponse(z.coerce.string(), response.data);
- },
- getL2AverageFees: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2AverageFees);
- return validateResponse(z.coerce.string(), response.data);
- },
- getL2AverageBlockTime: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2AverageBlockTime);
- return validateResponse(z.coerce.string(), response.data);
- },
- getAmountContractClassInstances: async (classId: string): Promise => {
- const response = await client.get(
- aztecExplorer.getAmountContractClassInstances(classId),
- );
- return validateResponse(z.coerce.string(), response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/tx-effect.ts b/services/explorer-ui/src/api/tx-effect.ts
deleted file mode 100644
index 3bf00c925..000000000
--- a/services/explorer-ui/src/api/tx-effect.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import {
- chicmozL2BlockSchema,
- chicmozL2TxEffectDeluxeSchema,
- uiTxEffectTableSchema,
- type ChicmozL2TxEffectDeluxe,
- type UiTxEffectTable,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const TxEffectsAPI = {
- getTxEffectByHash: async (hash: string): Promise => {
- const response = await client.get(
- `${aztecExplorer.getL2TxEffectByHash(hash)}`,
- );
- return validateResponse(chicmozL2TxEffectDeluxeSchema, response.data);
- },
- getTxEffectsByBlockHeight: async (
- height: bigint,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2TxEffectsByHeight(height),
- );
- return validateResponse(
- z.array(chicmozL2TxEffectDeluxeSchema),
- response.data,
- );
- },
- getTxEffectByBlockHeightAndIndex: async (
- height: bigint,
- index: number,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2TxEffectByHeightAndIndex(height, index),
- );
- return validateResponse(chicmozL2BlockSchema.shape.height, response.data);
- },
- getTxEffectsByHeightRange: async (
- start: bigint,
- end: bigint,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2TxEffectsByHeightRange,
- {
- params: {
- start,
- end,
- },
- },
- );
- return validateResponse(chicmozL2BlockSchema.shape.height, response.data);
- },
- getLatestTableTxEffect: async (): Promise => {
- const response = await client.get(aztecExplorer.getTableTxEffects);
-
- return validateResponse(z.array(uiTxEffectTableSchema), response.data);
- },
- getTableTxEffectsByBlockHeight: async (
- height: bigint,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getTableTxEffectsByHeight(height),
- );
- return validateResponse(z.array(uiTxEffectTableSchema), response.data);
- },
- getLatestTableTxEffectByHeightRange: async (
- start?: number,
- end?: number,
- ): Promise => {
- const params: { from?: number; to?: number } = {};
- if (start) {
- params.from = start;
- }
- if (end) {
- params.to = end;
- }
- const response = await client.get(aztecExplorer.getTableTxEffects, {
- params,
- });
-
- return validateResponse(z.array(uiTxEffectTableSchema), response.data);
- },
- getLatestTxEffects: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2TxEffects);
- return validateResponse(
- z.array(chicmozL2TxEffectDeluxeSchema),
- response.data,
- );
- },
-};
diff --git a/services/explorer-ui/src/api/tx.ts b/services/explorer-ui/src/api/tx.ts
deleted file mode 100644
index 66e63482b..000000000
--- a/services/explorer-ui/src/api/tx.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import {
- chicmozL2PendingTxSchema,
- publicCallRequestSchema,
- pendingL2ToL1MsgSchema,
- type ChicmozL2PendingTx,
- type PublicCallRequest,
- type ChicmozL2PendingL2ToL1Msg,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const TxAPI = {
- getPendingTxs: async (): Promise => {
- const response = await client.get(aztecExplorer.getL2PendingTxs);
- return validateResponse(z.array(chicmozL2PendingTxSchema), response.data);
- },
- getPendingTxsByHash: async (hash: string): Promise => {
- const response = await client.get(
- aztecExplorer.getL2PendingTxsByHash(hash),
- );
- return validateResponse(chicmozL2PendingTxSchema, response.data);
- },
- getPublicCallRequestsByContract: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2PublicCallRequestsByContract(address),
- );
- return validateResponse(z.array(publicCallRequestSchema), response.data);
- },
- getL2ToL1MsgsByContract: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ToL1MsgsByContract(address),
- );
- return validateResponse(z.array(pendingL2ToL1MsgSchema), response.data);
- },
- getPublicCallRequestsBySender: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2PublicCallRequestsBySender(address),
- );
- return validateResponse(z.array(publicCallRequestSchema), response.data);
- },
- getPublicCallRequestsByTxHash: async (
- txHash: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2PublicCallRequestsByTxHash(txHash),
- );
- return validateResponse(z.array(publicCallRequestSchema), response.data);
- },
- getL2ToL1MsgsByRecipient: async (
- address: string,
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2ToL1MsgsByRecipient(address),
- );
- return validateResponse(z.array(pendingL2ToL1MsgSchema), response.data);
- },
-};
diff --git a/services/explorer-ui/src/api/verified-contract-instance.ts b/services/explorer-ui/src/api/verified-contract-instance.ts
deleted file mode 100644
index dab2d0df1..000000000
--- a/services/explorer-ui/src/api/verified-contract-instance.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {
- chicmozL2ContractInstanceDeployerMetadataSchema,
- type ChicmozL2ContractInstanceDeployerMetadata,
-} from "@chicmoz-pkg/types";
-import { aztecExplorer } from "~/service/constants";
-import client, { validateResponse } from "./client";
-
-export const VerifiedContractInstanceL2API = {
- getVerifiedContract: async (
- address: string
- ): Promise => {
- const response = await client.get(
- aztecExplorer.getL2VerifiedContractByInstanceAddress(address)
- );
- return validateResponse(
- chicmozL2ContractInstanceDeployerMetadataSchema,
- response.data
- );
- },
- getVerifiedContracts: async (): Promise<
- ChicmozL2ContractInstanceDeployerMetadata[]
- > => {
- const response = await client.get(aztecExplorer.getL2VerifiedContracts);
- return validateResponse(
- chicmozL2ContractInstanceDeployerMetadataSchema.array(),
- response.data
- );
- },
-};
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner black.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner black.svg
deleted file mode 100644
index 51be10e0b..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner black.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner deep purple.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner deep purple.svg
deleted file mode 100644
index 4721fe47c..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner deep purple.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light gray.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light gray.svg
deleted file mode 100644
index e1aba3cf9..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light gray.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light purple.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light purple.svg
deleted file mode 100644
index ad001fd05..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner light purple.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner purple.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner purple.svg
deleted file mode 100644
index 458e41998..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner purple.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner white.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner white.svg
deleted file mode 100644
index ce75bc606..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS banner white.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo black.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo black.svg
deleted file mode 100644
index a9c587e8d..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo black.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo deep purple.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo deep purple.svg
deleted file mode 100644
index 135eec7ea..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo deep purple.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light gray.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light gray.svg
deleted file mode 100644
index 7e59f6e6d..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light gray.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light purple.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light purple.svg
deleted file mode 100644
index 3f21afe98..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo light purple.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo purple.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo purple.svg
deleted file mode 100644
index 5013e0616..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo purple.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo white.svg b/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo white.svg
deleted file mode 100644
index 86c41b54d..000000000
--- a/services/explorer-ui/src/assets/aztec-scan-brandkit/AS logo white.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/aztecscout-preview.png b/services/explorer-ui/src/assets/aztecscout-preview.png
deleted file mode 100644
index 5728b7adc80048433af56da52b7af7481934a134..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 15351
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
N(&7qYRigg|{6DsYx~2dC
diff --git a/services/explorer-ui/src/assets/copy-icon.svg b/services/explorer-ui/src/assets/copy-icon.svg
deleted file mode 100644
index 377021de9..000000000
--- a/services/explorer-ui/src/assets/copy-icon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/services/explorer-ui/src/assets/cross-icon.svg b/services/explorer-ui/src/assets/cross-icon.svg
deleted file mode 100644
index 62ff16b87..000000000
--- a/services/explorer-ui/src/assets/cross-icon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/services/explorer-ui/src/assets/discord-icon.svg b/services/explorer-ui/src/assets/discord-icon.svg
deleted file mode 100644
index 9b027c5ab..000000000
--- a/services/explorer-ui/src/assets/discord-icon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/services/explorer-ui/src/assets/github-icon.svg b/services/explorer-ui/src/assets/github-icon.svg
deleted file mode 100644
index 3b310d751..000000000
--- a/services/explorer-ui/src/assets/github-icon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/services/explorer-ui/src/assets/index.ts b/services/explorer-ui/src/assets/index.ts
deleted file mode 100644
index e61a52799..000000000
--- a/services/explorer-ui/src/assets/index.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import AztecIcon from "./aztec-scan-brandkit/AS logo purple.svg?react";
-import AztecIconWhite from "./aztec-scan-brandkit/AS logo white.svg?react";
-import CopyIcon from "./copy-icon.svg?react";
-import SuccessIcon from "./success-icon.svg?react";
-import GithubIcon from "./github-icon.svg?react";
-import SearchIcon from "./search-icon.svg?react";
-import DiscordIcon from "./discord-icon.svg?react";
-import LoadingIcon from "./loading-icon.svg?react";
-import CrossIcon from "./cross-icon.svg?react";
-
-export {
- AztecIcon,
- LoadingIcon,
- AztecIconWhite,
- CopyIcon,
- SuccessIcon,
- CrossIcon,
- GithubIcon,
- DiscordIcon,
- SearchIcon,
-};
diff --git a/services/explorer-ui/src/assets/loading-icon.svg b/services/explorer-ui/src/assets/loading-icon.svg
deleted file mode 100644
index b5f2e28c7..000000000
--- a/services/explorer-ui/src/assets/loading-icon.svg
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/services/explorer-ui/src/assets/search-icon.svg b/services/explorer-ui/src/assets/search-icon.svg
deleted file mode 100644
index a4857b306..000000000
--- a/services/explorer-ui/src/assets/search-icon.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/services/explorer-ui/src/assets/success-icon.svg b/services/explorer-ui/src/assets/success-icon.svg
deleted file mode 100644
index af4477d88..000000000
--- a/services/explorer-ui/src/assets/success-icon.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/services/explorer-ui/src/components/block-countdown-progress.tsx b/services/explorer-ui/src/components/block-countdown-progress.tsx
deleted file mode 100644
index cd2a5a4f4..000000000
--- a/services/explorer-ui/src/components/block-countdown-progress.tsx
+++ /dev/null
@@ -1,127 +0,0 @@
-import { type UiBlockTable } from "@chicmoz-pkg/types";
-import { useEffect, useState, type FC } from "react";
-import { useTabVisibility } from "~/hooks/useTabVisibility";
-import { useWebSocketConnection } from "~/hooks/websocket";
-import { formatDuration } from "~/lib/utils";
-
-interface BlockCountdownProgressProps {
- latestBlocks: UiBlockTable[] | undefined;
- averageBlockTimeMs: string | number | null;
-}
-
-export const BlockCountdownProgress: FC = ({
- latestBlocks,
- averageBlockTimeMs,
-}) => {
- const isTabActive = useTabVisibility();
- const wsConnectionState = useWebSocketConnection();
- const [progress, setProgress] = useState(0);
- const [uiDelayOffset, setUiDelayOffset] = useState(6000);
- const [timeLeft, setTimeLeft] = useState(null);
- const [isOverdue, setIsOverdue] = useState(false);
-
- useEffect(() => {
- if (!latestBlocks?.length || !latestBlocks[0]?.timestamp) {
- return;
- }
-
- const latestBlock = latestBlocks[0];
- const blockTimestamp = latestBlock.timestamp;
- const now = Date.now();
-
- const calculatedDelay = now - blockTimestamp;
- if (calculatedDelay > 0 && calculatedDelay < 30000) {
- setUiDelayOffset(calculatedDelay);
- }
- }, [latestBlocks]);
-
- useEffect(() => {
- if (!averageBlockTimeMs || !latestBlocks?.length) {
- return;
- }
-
- const latestBlock = latestBlocks[0];
- if (!latestBlock.timestamp) {
- return;
- }
-
- const avgBlockTimeMs = Number(averageBlockTimeMs);
- const latestBlockTimestamp = latestBlock.timestamp;
- const nextBlockTime = latestBlockTimestamp + avgBlockTimeMs + uiDelayOffset;
-
- const intervalId = setInterval(() => {
- const now = Date.now();
-
- const totalDuration = avgBlockTimeMs;
- const elapsed = now - latestBlockTimestamp;
- const remaining = nextBlockTime - now;
-
- setTimeLeft(Math.abs(remaining));
- setIsOverdue(remaining < -3000); // Only consider overdue if more than 3 seconds past expected time
-
- let percentage = Math.min(100, (elapsed / totalDuration) * 100);
-
- if (now > nextBlockTime + 3000) {
- // More than 3 seconds past expected time
- percentage = 95 + (Math.sin(Date.now() / 200) + 1) * 2.5;
- }
-
- setProgress(percentage);
- }, 100);
-
- return () => clearInterval(intervalId);
- }, [averageBlockTimeMs, latestBlocks, uiDelayOffset]);
-
- // Get the appropriate fill color class based on progress
- const getFillColorClass = () => {
- if (!isTabActive || wsConnectionState !== "OPEN") {
- return "bg-gray-400"; // Use a neutral color for inactive/disconnected state
- }
-
- if (isOverdue) {
- return "bg-red";
- }
- if (progress < 75) {
- return "bg-yellow";
- }
- return "bg-green";
- };
-
- // Format the time with +/- 3 second window for "now"
- const getFormattedTimeLeft = () => {
- // First check connection status
- if (!isTabActive) {
- return "waiting - tab inactive";
- }
-
- if (wsConnectionState !== "OPEN") {
- return `waiting - websocket ${wsConnectionState.toLowerCase()}`;
- }
-
- if (timeLeft === null) {
- return "calculating...";
- }
-
- if (timeLeft <= 3000 && !isOverdue) {
- return "now";
- }
-
- if (isOverdue) {
- return `should have arrived ${formatDuration(timeLeft, true)} ago`;
- }
-
- return `in ${formatDuration(timeLeft, true)}`;
- };
-
- return (
-
- {`Expected next block ${getFormattedTimeLeft()}`}
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/block-status-badge.tsx b/services/explorer-ui/src/components/block-status-badge.tsx
deleted file mode 100644
index 62f844332..000000000
--- a/services/explorer-ui/src/components/block-status-badge.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import { type ChicmozL2NativeBlockStatus } from "@chicmoz-pkg/types";
-import { CustomTooltip } from "./custom-tooltip";
-
-interface BlockStatusBadgeProps {
- nativeStatus?: ChicmozL2NativeBlockStatus;
- className?: string;
- orphan?: boolean;
-}
-
-const red = {
- backgroundColor: "#FEE2E2",
- color: "#991B1B",
- borderColor: "#EF4444",
-};
-
-const orange = {
- backgroundColor: "#FFEDD5",
- color: "#9A3412",
- borderColor: "#F97316",
-};
-
-const green = {
- backgroundColor: "#DCFCE7",
- color: "#166534",
- borderColor: "#22C55E",
-};
-
-const gray = {
- backgroundColor: "#F3F4F6",
- color: "#1F2937",
- borderColor: "#6B7280",
-};
-
-const blue = {
- backgroundColor: "#DBEAFE",
- color: "#1E40AF",
- borderColor: "#3B82F6",
-};
-
-export const BlockStatusBadge: React.FC = ({
- nativeStatus,
- className = "",
- orphan = false,
-}) => {
- let badgeText = "Unknown";
- let badgeStyle = gray;
- let tooltipText = "Aztecscan block status";
-
- if (orphan) {
- badgeText = "Orphaned";
- badgeStyle = gray;
- tooltipText = "Block has been reorged out of the canonical chain";
- } else {
- switch (nativeStatus ?? "unknown") {
- case "proposed":
- badgeText = "Proposed";
- badgeStyle = red;
- tooltipText = "Block is at or below the Aztec node proposed tip";
- break;
- case "checkpointed":
- badgeText = "Checkpointed";
- badgeStyle = blue;
- tooltipText = "Block is at or below the Aztec node checkpointed tip";
- break;
- case "proven":
- badgeText = "Proven";
- badgeStyle = orange;
- tooltipText = "Block is at or below the Aztec node proven tip";
- break;
- case "finalized":
- badgeText = "Finalized";
- badgeStyle = green;
- tooltipText = "Block is at or below the Aztec node finalized tip";
- break;
- case "unknown":
- badgeText = "Unknown";
- badgeStyle = gray;
- tooltipText = "Native L2 tip status is currently unavailable";
- break;
- }
- }
-
- return (
-
-
- {badgeText}
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/blocks/block-range-selector.tsx b/services/explorer-ui/src/components/blocks/block-range-selector.tsx
deleted file mode 100644
index d5a77c1e8..000000000
--- a/services/explorer-ui/src/components/blocks/block-range-selector.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import { type FC, useState, useEffect } from "react";
-
-interface RangeSelectorProps {
- startBlock?: number;
- endBlock?: number;
- onRangeChange: (start: number, end: number) => void;
-}
-
-export const RangeSelector: FC = ({
- startBlock,
- endBlock,
- onRangeChange,
-}) => {
- const [startInput, setStartInput] = useState(startBlock?.toString() ?? "");
- const [endInput, setEndInput] = useState(endBlock?.toString() ?? "");
- const [validationError, setValidationError] = useState(null);
- const [, setLastChangedField] = useState<"start" | "end" | null>(null);
-
- // Update input fields when props change
- useEffect(() => {
- if (startBlock !== undefined) {
- setStartInput(String(startBlock));
- }
- if (endBlock !== undefined) {
- setEndInput(String(endBlock));
- }
- }, [startBlock, endBlock]);
-
- const handleStartChange = (value: string) => {
- setStartInput(value);
- setLastChangedField("start");
-
- const startNum = parseInt(value, 10);
- if (!isNaN(startNum) && startNum > 0) {
- // Calculate end block to maintain a 10-block range (start to start+9)
- const calculatedEnd = startNum + 9;
- setEndInput(calculatedEnd.toString());
- }
- };
-
- const handleEndChange = (value: string) => {
- setEndInput(value);
- setLastChangedField("end");
-
- const endNum = parseInt(value, 10);
- if (!isNaN(endNum) && endNum > 0) {
- // Calculate start block to maintain a 10-block range (end-9 to end)
- const calculatedStart = Math.max(1, endNum - 9);
- setStartInput(calculatedStart.toString());
- }
- };
-
- const handleSubmit = (e: React.FormEvent) => {
- e.preventDefault();
- const start = parseInt(startInput, 10);
- const end = parseInt(endInput, 10);
-
- if (isNaN(start) || isNaN(end)) {
- setValidationError("Please enter valid block numbers");
- return;
- }
-
- if (start > end) {
- setValidationError("Start block must be less than or equal to end block");
- return;
- }
-
- // Calculate inclusive block count (end - start + 1)
- const blockCount = end - start + 1;
- if (blockCount > 20) {
- setValidationError("Maximum range is 20 blocks");
- return;
- }
-
- setValidationError(null);
- onRangeChange(start, end);
- };
-
- return (
-
- );
-};
diff --git a/services/explorer-ui/src/components/blocks/block-table-columns.tsx b/services/explorer-ui/src/components/blocks/block-table-columns.tsx
deleted file mode 100644
index 79fdcb3fb..000000000
--- a/services/explorer-ui/src/components/blocks/block-table-columns.tsx
+++ /dev/null
@@ -1,114 +0,0 @@
-import { Link } from "@tanstack/react-router";
-import { type ColumnDef } from "@tanstack/react-table";
-import { DataTableColumnHeader } from "~/components/data-table";
-import { routes } from "~/routes/__root";
-import { truncateHashString } from "~/lib/create-hash-string";
-import { BlockStatusBadge } from "../block-status-badge";
-import { TimeAgoCell } from "../formated-time-cell";
-import { type UiBlockTable } from "@chicmoz-pkg/types";
-
-const text = {
- height: "HEIGHT",
- blockHash: "BLOCK HASH",
- txEffectsLength: "NBR OF TXS",
- timeSince: "AGE",
- nativeStatus: "BLOCK STATUS",
-};
-
-export const BlockTableColumns: ColumnDef[] = [
- {
- accessorKey: "height",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const height = Number(row.getValue("height"));
- const r = routes.blocks.route + "/" + height;
- return (
-
- {Number(row.getValue("height"))}
-
- );
- },
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "blockHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const blockHash = row.getValue("blockHash");
- if (typeof blockHash !== "string") {
- return null;
- }
- const r = `${routes.blocks.route}/${blockHash}`;
- return (
-
- {truncateHashString(blockHash)}
-
- );
- },
- enableSorting: false,
- enableHiding: false,
- },
- {
- accessorKey: "timestamp",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const timestamp = Number(row.getValue("timestamp"));
- return ;
- },
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "txEffectsLength",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => (
- {row.getValue("txEffectsLength")}
- ),
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "nativeStatus",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => (
-
- ),
- enableSorting: false,
- enableHiding: false,
- },
-];
diff --git a/services/explorer-ui/src/components/blocks/blocks-table.tsx b/services/explorer-ui/src/components/blocks/blocks-table.tsx
deleted file mode 100644
index dd9340f64..000000000
--- a/services/explorer-ui/src/components/blocks/blocks-table.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { type FC } from "react";
-import { DataTable } from "~/components/data-table";
-import { BlockTableColumns } from "./block-table-columns";
-import { RangeSelector } from "./block-range-selector";
-import { type UiBlockTable } from "@chicmoz-pkg/types";
-
-interface Props {
- title?: string;
- blocks?: UiBlockTable[];
- isLoading: boolean;
- error?: Error | null;
- disableSizeSelector?: boolean;
- showRangeSelector?: boolean;
- disablePagination?: boolean;
- startBlock?: number;
- endBlock?: number;
- onRangeChange?: (start: number, end: number) => void;
- maxEntries?: number;
- currentPage?: number;
- onPageChange?: (page: number) => void;
- onPageSizeChange?: (size: number) => void;
- useReactQueryPagination?: boolean;
-}
-
-export const BlocksTable: FC = ({
- title,
- blocks,
- isLoading,
- error,
- disableSizeSelector,
- disablePagination = false,
- showRangeSelector = false,
- startBlock,
- endBlock,
- onRangeChange,
- maxEntries = 10,
- currentPage,
- onPageChange,
- onPageSizeChange,
- useReactQueryPagination = false,
-}) => {
- if (error) {
- return {error.message}
;
- }
-
- return (
-
-
-
- {title &&
{title} }
-
- {showRangeSelector && onRangeChange && (
-
- )}
-
-
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/charts/balance-area-chart.tsx b/services/explorer-ui/src/components/charts/balance-area-chart.tsx
deleted file mode 100644
index df26c37ff..000000000
--- a/services/explorer-ui/src/components/charts/balance-area-chart.tsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import { type FC, useEffect, useState } from "react";
-import {
- Area,
- AreaChart,
- ResponsiveContainer,
- Tooltip,
- XAxis,
- YAxis,
-} from "recharts";
-
-interface ChartDataPoint {
- timestamp: number;
- balance: number;
- formattedTime: string;
-}
-
-interface BalanceAreaChartProps {
- data: ChartDataPoint[];
- minTime: number;
- maxTime: number;
- yAxisMin: number;
- yAxisMax: number;
- timeFormatter: (timestamp: number) => string;
- formatTooltipValue: (value: number) => string[];
- formatTooltipLabel: (timestamp: number) => string;
-}
-
-export const BalanceAreaChart: FC = ({
- data,
- minTime,
- maxTime,
- yAxisMin,
- yAxisMax,
- timeFormatter,
- formatTooltipValue,
- formatTooltipLabel,
-}) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- const checkDarkMode = () => {
- setIsDark(document.documentElement.classList.contains('dark'));
- };
-
- checkDarkMode();
-
- const observer = new MutationObserver(checkDarkMode);
- observer.observe(document.documentElement, {
- attributes: true,
- attributeFilter: ['class']
- });
-
- return () => observer.disconnect();
- }, []);
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/contract-events/contract-events-columns.tsx b/services/explorer-ui/src/components/contract-events/contract-events-columns.tsx
deleted file mode 100644
index 8046148d3..000000000
--- a/services/explorer-ui/src/components/contract-events/contract-events-columns.tsx
+++ /dev/null
@@ -1,126 +0,0 @@
-import { type ColumnDef } from "@tanstack/react-table";
-import { DataTableColumnHeader } from "~/components/data-table";
-import { DeterministicStatusBadge } from "~/components/deterministic-status-badge";
-import { truncateHashString } from "~/lib/create-hash-string";
-import { EtherscanAddressLink } from "../etherscan-address-link";
-import { type ContractEventTableSchema } from "./contract-events-schema";
-
-const text = {
- eventName: "L1 EVENT NAME",
- contractAddress: "L1 CONTRACT ADDRESS",
- blockNumber: "L1 BLOCK NUMBER",
- transactionHash: "L1 TRANSACTION HASH",
- args: "ARGS",
-};
-
-const getLinkCell = (content: string, endpoint: string) => (
-
-);
-
-export const ContractEventsTableColumns: ColumnDef[] =
- [
- {
- accessorKey: "l1BlockNumber",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const blockNumber = Number(row.getValue("l1BlockNumber"));
- return getLinkCell(blockNumber.toString(), `/block/${blockNumber}`);
- },
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "l1ContractAddress",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const address = row.getValue("l1ContractAddress");
- if (typeof address !== "string") {
- return null;
- }
- const truncatedAddress = truncateHashString(address);
- return getLinkCell(truncatedAddress, `/address/${address}`);
- },
- enableSorting: true,
- enableHiding: true,
- },
- {
- accessorKey: "l1TransactionHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const hash = row.getValue("l1TransactionHash");
- if (typeof hash !== "string") {
- return N/A
;
- }
- const truncatedHash = truncateHashString(hash);
- return getLinkCell(truncatedHash, `/tx/${hash}`);
- },
- enableSorting: true,
- enableHiding: true,
- },
- {
- accessorKey: "eventName",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const eventName = row.getValue("eventName");
- if (typeof eventName !== "string") {
- return null;
- }
- return (
-
- );
- },
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "eventArgs",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const args = row.getValue("eventArgs");
- // TODO: make this copyable
- return (
-
- {JSON.stringify(args, null, 2)}
-
- );
- },
- enableSorting: false,
- enableHiding: true,
- },
- ];
diff --git a/services/explorer-ui/src/components/contract-events/contract-events-schema.ts b/services/explorer-ui/src/components/contract-events/contract-events-schema.ts
deleted file mode 100644
index bc89c7482..000000000
--- a/services/explorer-ui/src/components/contract-events/contract-events-schema.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export interface ContractEventTableSchema {
- eventName: string;
- l1ContractAddress: string;
- l1BlockNumber: bigint;
- l1BlockHash: string;
- isFinalized: boolean;
- l1TransactionHash?: string | null;
- eventArgs?: Record;
- l1BlockTimestamp?: number | null;
- id?: string;
-}
diff --git a/services/explorer-ui/src/components/contract-events/contract-events-table.tsx b/services/explorer-ui/src/components/contract-events/contract-events-table.tsx
deleted file mode 100644
index b53da64f2..000000000
--- a/services/explorer-ui/src/components/contract-events/contract-events-table.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import { type FC } from "react";
-import { DataTable } from "~/components/data-table";
-import { ContractEventsTableColumns } from "./contract-events-columns";
-import { type ContractEventTableSchema } from "./contract-events-schema";
-
-interface Props {
- title?: string;
- contractEvents?: ContractEventTableSchema[];
- isLoading: boolean;
- error?: Error | null;
- disableSizeSelector?: boolean;
- disablePagination?: boolean;
- maxEntries?: number;
-}
-
-export const ContractEventsTable: FC = ({
- title,
- contractEvents,
- isLoading,
- error,
- disableSizeSelector,
- disablePagination = false,
- maxEntries = 10,
-}) => {
- if (!contractEvents) {
- return No data
;
- }
- if (error) {
- return {error.message}
;
- }
- return (
-
-
- {title && (
-
-
{title}
-
- )}
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/contracts/classes/columns.tsx b/services/explorer-ui/src/components/contracts/classes/columns.tsx
deleted file mode 100644
index dbfc7fa91..000000000
--- a/services/explorer-ui/src/components/contracts/classes/columns.tsx
+++ /dev/null
@@ -1,148 +0,0 @@
-import { Link } from "@tanstack/react-router";
-import { type ColumnDef } from "@tanstack/react-table";
-import { CheckCircle2 } from "lucide-react";
-import { CopyableText } from "~/components/copy-text";
-import { CustomTooltip } from "~/components/custom-tooltip";
-import { DataTableColumnHeader } from "~/components/data-table";
-import { truncateHashString } from "~/lib/create-hash-string";
-import { routes } from "~/routes/__root";
-import { getClassVersionLink } from "../utils";
-import { type ContractClass } from "./schema";
-
-const text = {
- blockHash: "BLOCK HASH",
- contractClassId: "CLASS ID",
- version: "VERSION",
- artifactHash: "ARTIFACT HASH",
- privateFunctionsRoot: "PRIVATE FNCS ROOT",
-};
-
-export const contractsTableColumns: ColumnDef[] = [
- {
- accessorKey: "contractClassId",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- if (!row.getVisibleCells().some((cell) => cell.column.id === "version")) {
- return getClassVersionLink(
- row.getValue("contractClassId"),
- 1,
- truncateHashString(row.getValue("contractClassId")),
- );
- } else {
- return (
-
- );
- }
- },
- enableSorting: false,
- enableHiding: false,
- },
- {
- accessorKey: "version",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) =>
- getClassVersionLink(
- row.getValue("contractClassId"),
- row.getValue("version"),
- ),
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "artifactHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => (
-
- ),
- enableSorting: false,
- enableHiding: true,
- },
- {
- accessorKey: "privateFunctionsRoot",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => (
-
- ),
- enableSorting: false,
- enableHiding: true,
- },
- {
- accessorKey: "blockHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const hash = row.getValue("blockHash");
- if (typeof hash !== "string") {
- return null;
- }
- const r = `${routes.blocks.route}/${hash}`;
- const truncatedTxHash = `${hash.slice(0, 6)}...${hash.slice(-4)}`;
- return (
-
- {truncatedTxHash}
-
- );
- },
- },
- {
- accessorKey: "sourceCodeUrl",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const sourceCodeUrl = row.getValue("sourceCodeUrl");
- if (!sourceCodeUrl) {
- return null;
- }
- return (
-
-
-
- );
- },
- enableSorting: false,
- enableHiding: true,
- },
-];
diff --git a/services/explorer-ui/src/components/contracts/classes/schema.ts b/services/explorer-ui/src/components/contracts/classes/schema.ts
deleted file mode 100644
index 77d48e9ea..000000000
--- a/services/explorer-ui/src/components/contracts/classes/schema.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { z } from "zod";
-
-export type ContractClass = z.infer;
-
-export const contractClassSchema = z.object({
- blockHash: z.string(),
- contractClassId: z.string(),
- version: z.number(),
- artifactHash: z.string(),
- privateFunctionsRoot: z.string(),
- sourceCodeUrl: z.string().nullable().optional(),
-});
diff --git a/services/explorer-ui/src/components/contracts/classes/table.tsx b/services/explorer-ui/src/components/contracts/classes/table.tsx
deleted file mode 100644
index b3bc0ea93..000000000
--- a/services/explorer-ui/src/components/contracts/classes/table.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { QuestionMarkCircledIcon } from "@radix-ui/react-icons";
-import { type FC } from "react";
-import { CustomTooltip } from "~/components/custom-tooltip";
-import { DataTable } from "~/components/data-table";
-import { contractsTableColumns } from "./columns";
-import { type ContractClass } from "./schema";
-
-interface Props {
- title?: string;
- contracts?: ContractClass[];
- isLoading: boolean;
- error?: Error | null;
- showContractVersions?: boolean;
- tooltip?: string;
-}
-
-export const ContractClassesTable: FC = ({
- title,
- contracts,
- isLoading,
- error,
- showContractVersions,
- tooltip,
-}) => {
- if (error) {
- return {error.message}
;
- }
- let cols = contractsTableColumns;
- if (!showContractVersions) {
- cols = contractsTableColumns.filter((column) => {
- return (column as { accessorKey: string }).accessorKey !== "version";
- });
- }
-
- return (
-
-
- {title && (
-
- {title}
- {tooltip && (
-
-
-
- )}
-
- )}
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/contracts/instances/columns.tsx b/services/explorer-ui/src/components/contracts/instances/columns.tsx
deleted file mode 100644
index aa70489ec..000000000
--- a/services/explorer-ui/src/components/contracts/instances/columns.tsx
+++ /dev/null
@@ -1,125 +0,0 @@
-import { Link } from "@tanstack/react-router";
-import { type ColumnDef } from "@tanstack/react-table";
-import { CopyableText } from "~/components/copy-text";
-import { DataTableColumnHeader } from "~/components/data-table";
-import { truncateHashString } from "~/lib/create-hash-string";
-import { routes } from "~/routes/__root";
-import { getClassVersionLink } from "../utils";
-import { type ContractInstance } from "./schema";
-
-const text = {
- address: "ADDRESS",
- blockHash: "BLOCK HASH",
- blockHeight: "HEIGHT",
- version: "VERSION",
- contractClassId: "CONTRACT CLASS ID",
- deployer: "DEPLOYER",
-};
-
-export const contractsTableColumns: ColumnDef[] = [
- {
- accessorKey: "address",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const address = row.getValue("address");
- if (typeof address !== "string") {
- return null;
- }
- const r = `${routes.contracts.route}/${routes.contracts.children.instances.route}/${address}`;
- const truncatedAddress = `${address.slice(0, 6)}...${address.slice(-4)}`;
- return (
-
- {truncatedAddress}
-
- );
- },
- enableSorting: false,
- enableHiding: false,
- },
- {
- accessorKey: "version",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) =>
- getClassVersionLink(
- row.getValue("contractClassId"),
- row.getValue("version"),
- ),
- enableSorting: true,
- enableHiding: false,
- },
- {
- accessorKey: "contractClassId",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => (
-
- ),
- enableSorting: false,
- enableHiding: false,
- },
- {
- accessorKey: "deployer",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => (
-
- ),
- enableSorting: false,
- enableHiding: false,
- },
- {
- accessorKey: "blockHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const blockHash = row.getValue("blockHash");
- if (typeof blockHash !== "string") {
- return null;
- }
- const r = `${routes.blocks.route}/${blockHash}`;
- const truncatedBlockHash = `${blockHash.slice(0, 6)}...${blockHash.slice(
- -4,
- )}`;
- return (
-
- {truncatedBlockHash}
-
- );
- },
- enableSorting: false,
- enableHiding: false,
- },
-];
diff --git a/services/explorer-ui/src/components/contracts/instances/schema.ts b/services/explorer-ui/src/components/contracts/instances/schema.ts
deleted file mode 100644
index ad6705b61..000000000
--- a/services/explorer-ui/src/components/contracts/instances/schema.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- chicmozL2BlockSchema,
- chicmozL2ContractClassRegisteredEventSchema,
-} from "@chicmoz-pkg/types";
-import { z } from "zod";
-
-export type ContractInstance = z.infer;
-
-export const contractInstanceSchema = z.object({
- address: z.string(),
- blockHash: z.string(),
- blockHeight: chicmozL2BlockSchema.shape.height.optional(),
- version: z.number(),
- contractClassId: z.string(),
- deployer: z.string(),
- contractTypeSchema: z
- .lazy(
- () =>
- chicmozL2ContractClassRegisteredEventSchema.shape.standardContractType,
- )
- .nullable()
- .optional(),
- aztecScanOriginNotes: z
- .object({
- comment: z.string(),
- })
- .optional(),
-});
diff --git a/services/explorer-ui/src/components/contracts/instances/table.tsx b/services/explorer-ui/src/components/contracts/instances/table.tsx
deleted file mode 100644
index d69c081de..000000000
--- a/services/explorer-ui/src/components/contracts/instances/table.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import { QuestionMarkCircledIcon } from "@radix-ui/react-icons";
-import { type FC } from "react";
-import { CustomTooltip } from "~/components/custom-tooltip";
-import { DataTable } from "~/components/data-table";
-import { contractsTableColumns } from "./columns";
-import { type ContractInstance } from "./schema";
-
-interface Props {
- title?: string;
- contracts?: ContractInstance[];
- isLoading: boolean;
- error?: Error | null;
- showContractVersions?: boolean;
- tooltip?: string;
-}
-
-export const ContractInstancesTable: FC = ({
- title,
- contracts,
- isLoading,
- error,
- showContractVersions,
- tooltip,
-}) => {
- if (error) {
- return {error.message}
;
- }
- let cols = contractsTableColumns;
- if (!showContractVersions) {
- cols = contractsTableColumns.filter((column) => {
- return (column as { accessorKey: string }).accessorKey !== "version";
- });
- }
- return (
-
-
- {title && (
-
- {title}
- {tooltip && (
-
-
-
- )}
-
- )}
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/contracts/utils.tsx b/services/explorer-ui/src/components/contracts/utils.tsx
deleted file mode 100644
index 79000ffdc..000000000
--- a/services/explorer-ui/src/components/contracts/utils.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Link } from "@tanstack/react-router";
-import { routes } from "~/routes/__root";
-
-export const getClassVersionLink = (
- contractClassId: string | null,
- version: number | null,
- linkText?: string,
-) => {
- if (typeof contractClassId !== "string") {
- return null;
- }
- if (typeof version !== "number") {
- return null;
- }
- const r = `${routes.contracts.route}/${routes.contracts.children.classes.route}/${contractClassId}/versions/${version}`;
- return (
-
- {linkText ?? version}
-
- );
-};
diff --git a/services/explorer-ui/src/components/copy-text.tsx b/services/explorer-ui/src/components/copy-text.tsx
deleted file mode 100644
index 0c275cb23..000000000
--- a/services/explorer-ui/src/components/copy-text.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import { CopyIcon } from "@radix-ui/react-icons";
-import { type FC } from "react";
-import { toast } from "sonner";
-import { Textarea } from "./ui/textarea";
-
-interface Props {
- additionalClasses?: string;
- additionalClassesIcon?: string;
- toCopy: string;
- text: string;
- textArea?: boolean;
-}
-
-export const CopyableText: FC = ({
- additionalClasses,
- additionalClassesIcon,
- toCopy,
- textArea = false,
- text,
-}) => {
- const handleCopy = () => {
- try {
- void navigator.clipboard.writeText(toCopy);
- toast.success("Copied to clipboard");
- } catch (err) {
- toast.error("Failed to copy to clipboard");
- }
- };
-
- return (
-
-
- {textArea ? (
-
- ) : (
-
- {text}
-
- )}
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/copyable-amount.tsx b/services/explorer-ui/src/components/copyable-amount.tsx
deleted file mode 100644
index 40437118b..000000000
--- a/services/explorer-ui/src/components/copyable-amount.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import { type FC } from "react";
-import { toast } from "sonner";
-import { CustomTooltip } from "~/components/custom-tooltip";
-import { cn } from "~/lib/utils";
-
-type Props = {
- displayAmount: string;
- rawAmount: string;
- className?: string;
-};
-
-export const CopyableAmount: FC = ({
- displayAmount,
- rawAmount,
- className,
-}) => {
- const handleCopy = async (): Promise => {
- try {
- await navigator.clipboard.writeText(rawAmount);
- toast.success("Copied to clipboard");
- } catch {
- toast.error("Failed to copy to clipboard");
- }
- };
-
- return (
-
- {
- void handleCopy();
- }}
- >
- {displayAmount}
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/copyable-json.tsx b/services/explorer-ui/src/components/copyable-json.tsx
deleted file mode 100644
index 87e3a2d77..000000000
--- a/services/explorer-ui/src/components/copyable-json.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import { CopyIcon } from "@radix-ui/react-icons";
-import { type FC } from "react";
-import { toast } from "sonner";
-
-interface CopyableJsonProps {
- data: unknown;
-}
-
-export const CopyableJson: FC = ({ data }) => {
- const jsonString = JSON.stringify(data, null, 2);
-
- const handleCopy = () => {
- try {
- void navigator.clipboard.writeText(jsonString);
- toast.success("Copied to clipboard");
- } catch (err) {
- toast.error("Failed to copy to clipboard");
- }
- };
-
- return (
-
- );
-};
diff --git a/services/explorer-ui/src/components/custom-tooltip.tsx b/services/explorer-ui/src/components/custom-tooltip.tsx
deleted file mode 100644
index d1fcb0c26..000000000
--- a/services/explorer-ui/src/components/custom-tooltip.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import React, { FC } from "react";
-import {
- Tooltip,
- TooltipContent,
- TooltipProvider,
- TooltipTrigger,
-} from "./ui/tooltip";
-
-export interface CustomTooltipProps {
- children: React.ReactNode;
- content: React.ReactNode;
- open?: boolean;
- defaultOpen?: boolean;
- onOpenChange?: (open: boolean) => void;
-}
-
-export const CustomTooltip: FC = ({
- children,
- content,
- open,
- defaultOpen,
- onOpenChange,
- ...props
-}) => {
- return (
-
-
- {children}
-
- {content}
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/data-table/data-table-column-header.tsx b/services/explorer-ui/src/components/data-table/data-table-column-header.tsx
deleted file mode 100644
index 414d46ea5..000000000
--- a/services/explorer-ui/src/components/data-table/data-table-column-header.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import {
- ArrowDownIcon,
- ArrowUpIcon,
- CaretSortIcon,
- EyeNoneIcon,
-} from "@radix-ui/react-icons";
-import { type Column } from "@tanstack/react-table";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuSeparator,
- DropdownMenuTrigger,
-} from "~/components/ui";
-
-import { cn } from "~/lib/utils";
-
-interface DataTableColumnHeaderProps
- extends Omit, "title"> {
- column: Column;
- title: React.ReactNode;
- supplement?: React.ReactNode;
-}
-
-export function DataTableColumnHeader({
- column,
- title,
- supplement,
- className,
-}: DataTableColumnHeaderProps) {
- if (!column.getCanSort()) {
- return (
-
-
{title}
- {supplement ?
{supplement}
: null}
-
- );
- }
-
- return (
-
-
-
- {title}
- {column.getIsSorted() === "desc" ? (
-
- ) : column.getIsSorted() === "asc" ? (
-
- ) : (
-
- )}
-
-
- column.toggleSorting(false)}>
-
- Asc
-
- column.toggleSorting(true)}>
-
- Desc
-
-
- column.toggleVisibility(false)}>
-
- Hide
-
-
-
- {supplement ?
{supplement}
: null}
-
- );
-}
diff --git a/services/explorer-ui/src/components/data-table/data-table-faceted-filter.tsx b/services/explorer-ui/src/components/data-table/data-table-faceted-filter.tsx
deleted file mode 100644
index 1c5b9ba98..000000000
--- a/services/explorer-ui/src/components/data-table/data-table-faceted-filter.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import { CheckIcon, PlusCircledIcon } from "@radix-ui/react-icons";
-import type { Column } from "@tanstack/react-table";
-import { useCallback, useEffect, useState } from "react";
-import {
- Badge,
- Button,
- Command,
- CommandEmpty,
- CommandGroup,
- CommandInput,
- CommandItem,
- CommandList,
- CommandSeparator,
- Popover,
- PopoverContent,
- PopoverTrigger,
- Separator,
-} from "~/components/ui";
-import { cn } from "~/lib/utils";
-
-interface Option {
- label: string;
- value: TValue;
- icon?: React.ComponentType<{ className?: string }>;
-}
-
-interface FilterBadgeProps {
- selectedValues: Set;
- options: Option[];
-}
-
-interface OptionItemProps {
- option: Option;
- isSelected: boolean;
- onSelect: () => void;
- facets?: Map;
-}
-
-interface DataTableFacetedFilterProps {
- column?: Column;
- title?: string;
- options: Option[];
- search?: string;
-}
-
-export function DataTableFacetedFilter({ column, title, options, search }: DataTableFacetedFilterProps) {
- const [selectedValues, setSelectedValues] = useState>(new Set(column?.getFilterValue() as TValue[]));
- const facets = column?.getFacetedUniqueValues();
-
- useEffect(() => {
- setSelectedValues(new Set(column?.getFilterValue() as TValue[]));
- }, [column]);
-
- const toggleOption = useCallback(
- (value: TValue) => {
- selectedValues.add(value);
- column?.setFilterValue(Array.from(selectedValues));
- },
- [selectedValues, column]
- );
-
- const clearFilters = () => {
- setSelectedValues(new Set());
- column?.setFilterValue(undefined);
- };
-
- return (
-
-
-
-
- {title}
- {selectedValues.size > 0 && (
-
- )}
-
-
-
-
- {search && }
-
- No results found.
-
- {options.map((option, index) => (
- toggleOption(option.value)}
- facets={facets}
- />
- ))}
-
- {selectedValues.size > 0 && (
- <>
-
-
-
- Clear filters
-
-
- >
- )}
-
-
-
-
- );
-}
-
-function FilterBadge({ selectedValues, options }: FilterBadgeProps) {
- if (!selectedValues.size) return;
- return (
- <>
-
-
- {options
- .filter((option) => selectedValues.has(option.value))
- .map((option, index) => (
-
- {option.label}
-
- ))}
-
- >
- );
-}
-
-function OptionItem({ option, isSelected, onSelect, facets }: OptionItemProps) {
- return (
-
-
-
-
- {option.icon && }
- {option.label}
- {facets?.get(option.value) && (
- {facets.get(option.value)}
- )}
-
- );
-}
diff --git a/services/explorer-ui/src/components/data-table/data-table-pagination.tsx b/services/explorer-ui/src/components/data-table/data-table-pagination.tsx
deleted file mode 100644
index b899a23f1..000000000
--- a/services/explorer-ui/src/components/data-table/data-table-pagination.tsx
+++ /dev/null
@@ -1,188 +0,0 @@
-import { ArrowLeftIcon, ArrowRightIcon } from "@radix-ui/react-icons";
-import { type Table } from "@tanstack/react-table";
-import { useEffect } from "react";
-import { Button } from "~/components/ui";
-
-interface DataTablePaginationProps {
- table: Table;
- disableSizeSelector?: boolean;
- disablePagination?: boolean;
- maxEntries?: number;
-}
-
-export function DataTablePagination({
- table,
- disableSizeSelector,
- disablePagination = false,
- maxEntries = 10,
-}: DataTablePaginationProps) {
- const totalRowCount = table.getCoreRowModel().rows.length;
- const pageCount = table.getPageCount();
-
- useEffect(() => {
- table.setPageSize(maxEntries);
- }, [table, maxEntries, totalRowCount]);
-
- if (totalRowCount === 0) {
- return null;
- }
-
- if (pageCount <= 1 && disableSizeSelector) {
- return null;
- }
-
- return (
- !disablePagination && (
-
- )
- );
-}
-
-const PaginationControls = ({
- table,
-}: DataTablePaginationProps) => {
- const pageCount = table.getPageCount();
-
- const showNavigation = pageCount > 1;
-
- return (
-
-
- {showNavigation && (
-
- )}
-
-
- );
-};
-
-const PageNavigation = ({ table }: DataTablePaginationProps) => {
- const currentPageIndex = table.getState().pagination.pageIndex;
- const totalPages = table.getPageCount();
-
- const getPageNumbers = (): number[] => {
- if (totalPages <= 3) {
- return Array.from({ length: totalPages }, (_, i) => i);
- }
-
- if (currentPageIndex === 0) {
- return [0, 1, 2];
- }
-
- if (currentPageIndex === totalPages - 1) {
- return [totalPages - 3, totalPages - 2, totalPages - 1];
- }
-
- return [currentPageIndex - 1, currentPageIndex, currentPageIndex + 1];
- };
-
- const pageNumbers = getPageNumbers();
-
- return (
-
-
-
table.setPageIndex(0)}
- disabled={!table.getCanPreviousPage()}
- aria-label={text.first}
- >
-
-
-
-
- table.previousPage()}
- disabled={!table.getCanPreviousPage()}
- aria-label={text.previous}
- >
-
- {text.previousBtn}
-
-
-
-
-
- {pageNumbers.map((pageIndex) => (
-
- table.setPageIndex(pageIndex)}
- disabled={false} // Don't disable the current page button
- aria-current={
- pageIndex === currentPageIndex ? "page" : undefined
- }
- aria-label={
- pageIndex === currentPageIndex
- ? `Current page, page ${pageIndex + 1}`
- : `Go to page ${pageIndex + 1}`
- }
- >
-
- {pageIndex + 1}
-
-
-
- ))}
-
-
-
- table.nextPage()}
- disabled={!table.getCanNextPage()}
- aria-label={text.next}
- >
- {text.nextBtn}
-
-
-
-
table.setPageIndex(table.getPageCount() - 1)}
- disabled={!table.getCanNextPage()}
- aria-label={text.last}
- >
-
-
-
-
- );
-};
-
-const text = {
- previousBtn: "Previous",
- nextBtn: "Next",
- first: "Go to first page",
- previous: "Go to previous page",
- next: "Go to next page",
- last: "Go to last page",
- rowsPerPage: "Rows",
-};
diff --git a/services/explorer-ui/src/components/data-table/data-table-toolbar.tsx b/services/explorer-ui/src/components/data-table/data-table-toolbar.tsx
deleted file mode 100644
index 29d158e80..000000000
--- a/services/explorer-ui/src/components/data-table/data-table-toolbar.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { Cross2Icon } from "@radix-ui/react-icons";
-import { type Table } from "@tanstack/react-table";
-import { Button, FlexBox } from "~/components/ui";
-import { DataTableFacetedFilter } from "./data-table-faceted-filter";
-import { DataTableViewOptions } from "./data-table-view-options";
-
-interface DataTableToolbarProps {
- table: Table;
- flatten?: boolean;
- setFlatten?: (flatten: boolean) => void;
-}
-
-export function DataTableToolbar({ table }: DataTableToolbarProps) {
- const isFiltered = table.getState().columnFilters.length > 0;
-
- return (
-
-
- {/*TODO: Will add search parameter in future*/}
- {/* table.getColumn("id")?.setFilterValue(event.target.value)}*/}
- {/* className="h-8 w-[150px] lg:w-[250px]"*/}
- {/*/>*/}
- {table.getColumn("tier") && (
-
- )}
- {isFiltered && (
- table.resetColumnFilters()}
- >
- Reset
-
-
- )}
-
-
-
- );
-}
-
-// TODO: get tiers directly from api in future to make this component reusable
-
-const tiers = [
- {
- value: "free",
- label: "Free",
- },
- {
- value: "freemium",
- label: "Freemium",
- },
- {
- value: "pilot",
- label: "Pilot",
- },
-];
diff --git a/services/explorer-ui/src/components/data-table/data-table-view-options.tsx b/services/explorer-ui/src/components/data-table/data-table-view-options.tsx
deleted file mode 100644
index 04acb6265..000000000
--- a/services/explorer-ui/src/components/data-table/data-table-view-options.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { DropdownMenuTrigger } from "@radix-ui/react-dropdown-menu";
-import { type Table } from "@tanstack/react-table";
-import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent } from "~/components/ui";
-
-interface DataTableViewOptionsProps {
- table: Table;
-}
-
-// TODO: update the columns to use values instead of keys
-export function DataTableViewOptions({ table }: DataTableViewOptionsProps) {
- return (
-
-
- {/**/}
- {/* */}
- {/* View*/}
- {/* */}
-
-
- {table
- .getAllColumns()
- .filter((column) => column.accessorFn !== undefined && column.getCanHide())
- .map((column) => {
- return (
- column.toggleVisibility(value)}
- className="font-sans !capitalize"
- >
- {/* This is defined in the column meta*/}
- {column.id}
-
- );
- })}
-
-
- );
-}
diff --git a/services/explorer-ui/src/components/data-table/data-table.tsx b/services/explorer-ui/src/components/data-table/data-table.tsx
deleted file mode 100644
index 463d5184c..000000000
--- a/services/explorer-ui/src/components/data-table/data-table.tsx
+++ /dev/null
@@ -1,257 +0,0 @@
-import {
- flexRender,
- getCoreRowModel,
- getExpandedRowModel,
- getFacetedRowModel,
- getFacetedUniqueValues,
- getFilteredRowModel,
- getPaginationRowModel,
- getSortedRowModel,
- useReactTable,
- type ColumnDef,
- type ColumnFiltersState,
- type ExpandedState,
- type SortingState,
- type Table as TableType,
- type VisibilityState,
-} from "@tanstack/react-table";
-import { Fragment, useMemo, useState } from "react";
-import { DataTablePagination } from "~/components/data-table/data-table-pagination.tsx";
-import { ReactQueryPagination } from "~/components/data-table/react-query-pagination.tsx";
-import {
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableHeader,
- TableRow,
-} from "~/components/ui/table";
-
-import { cn } from "~/lib/utils";
-import { Loader } from "../loader";
-
-interface DataTableProps {
- isLoading?: boolean;
- columns: ColumnDef[];
- data: TData[];
- disableSizeSelector?: boolean;
- disablePagination?: boolean;
- maxEntries?: number;
- useReactQueryPagination?: boolean;
- currentPage?: number;
- onPageChange?: (page: number) => void;
- onPageSizeChange?: (size: number) => void;
- hasNextPage?: boolean;
- hasPreviousPage?: boolean;
- totalCount?: number;
-}
-export function DataTable({
- isLoading,
- columns,
- data,
- disableSizeSelector = false,
- disablePagination = false,
- maxEntries = 10,
- useReactQueryPagination = false,
- currentPage,
- onPageChange,
- onPageSizeChange: _onPageSizeChange,
- hasNextPage,
- hasPreviousPage,
- totalCount,
-}: DataTableProps) {
- const [rowSelection, setRowSelection] = useState({});
- const [columnVisibility, setColumnVisibility] = useState({});
- const [columnFilters, setColumnFilters] = useState([]);
- const [sorting, setSorting] = useState([]);
- const [expanded, setExpanded] = useState({});
-
- const tableData = useMemo(() => data, [data]);
- const table = useReactTable({
- data: tableData,
- columns: columns,
- state: {
- expanded,
- sorting,
- columnVisibility,
- rowSelection,
- columnFilters,
- },
- autoResetExpanded: false,
- autoResetPageIndex: false,
- enableRowSelection: true,
- enableExpanding: true,
- enableSubRowSelection: true,
- columnResizeMode: "onChange",
- columnResizeDirection: "ltr",
- onExpandedChange: setExpanded,
- onRowSelectionChange: setRowSelection,
- onSortingChange: setSorting,
- onColumnFiltersChange: setColumnFilters,
- onColumnVisibilityChange: setColumnVisibility,
- getCoreRowModel: getCoreRowModel(),
- getFilteredRowModel: getFilteredRowModel(),
- getPaginationRowModel: getPaginationRowModel(),
- getSortedRowModel: getSortedRowModel(),
- getFacetedRowModel: getFacetedRowModel(),
- getFacetedUniqueValues: getFacetedUniqueValues(),
- getExpandedRowModel: getExpandedRowModel(),
- initialState: {
- pagination: {
- pageSize: maxEntries,
- },
- },
- });
-
- return (
- <>
-
- {isLoading &&
}
- {!isLoading && (
-
- )}
-
-
- {useReactQueryPagination && onPageChange && currentPage !== undefined ? (
-
- ) : (
-
- )}
- >
- );
-}
-
-interface DataTableChildProps {
- table: TableType;
- flatten?: boolean;
- columns?: ColumnDef[];
-}
-function DataTableHeader({
- table,
-}: DataTableChildProps) {
- return (
-
- {table.getHeaderGroups().map((headerGroup) => (
-
- {headerGroup.headers.map((header) => {
- return (
-
- {header.isPlaceholder ||
- flexRender(
- header.column.columnDef.header,
- header.getContext(),
- )}
- header.column.resetSize(),
- onMouseDown: header.getResizeHandler(),
- onTouchStart: header.getResizeHandler(),
- className: `min-h-3 resizer ${
- table.options.columnResizeDirection
- } ${header.column.getIsResizing() ? "isResizing" : ""}`,
- }}
- />
-
- );
- })}
-
- ))}
-
- );
-}
-
-function DataTableBody
({
- table,
- flatten,
- columns,
-}: DataTableChildProps) {
- const rowHeight = "h-10";
-
- const groupedRows = ({ table }: DataTableChildProps) => {
- return table.getRowModel().rows?.map((row) => {
- return (
-
- row.toggleExpanded()}
- className={cn(
- rowHeight,
- row.getCanExpand()
- ? "cursor-pointer hover:bg-grey-dark/10 hover:text-pink "
- : "",
- )}
- >
- {row.getVisibleCells().map((cell) => (
-
- {flexRender(cell.column.columnDef.cell, cell.getContext())}
-
- ))}
-
-
- );
- });
- };
- const flattenedRows = ({ table }: DataTableChildProps) => {
- return table.getRowModel().flatRows?.map((row) => {
- return (
-
-
- {row.getVisibleCells().map((cell) => (
-
- {flexRender(cell.column.columnDef.cell, cell.getContext())}
-
- ))}
-
-
- );
- });
- };
-
- return (
-
- {table.getRowModel().rows?.length ? (
- flatten ? (
- flattenedRows({ table })
- ) : (
- groupedRows({ table })
- )
- ) : (
-
-
- No results.
-
-
- )}
-
- );
-}
diff --git a/services/explorer-ui/src/components/data-table/index.ts b/services/explorer-ui/src/components/data-table/index.ts
deleted file mode 100644
index 35e73fcda..000000000
--- a/services/explorer-ui/src/components/data-table/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export * from "./data-table";
-export * from "./data-table-column-header";
-export * from "./data-table-faceted-filter";
-export * from "./data-table-pagination";
-export * from "./data-table-toolbar";
-export * from "./data-table-view-options";
diff --git a/services/explorer-ui/src/components/data-table/react-query-pagination.tsx b/services/explorer-ui/src/components/data-table/react-query-pagination.tsx
deleted file mode 100644
index a9bf99261..000000000
--- a/services/explorer-ui/src/components/data-table/react-query-pagination.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import { ArrowLeftIcon, ArrowRightIcon } from "@radix-ui/react-icons";
-import { Button } from "~/components/ui";
-
-interface ReactQueryPaginationProps {
- currentPage: number;
- onPageChange: (page: number) => void;
- hasNextPage?: boolean;
- hasPreviousPage?: boolean;
- pageSize?: number;
- totalCount?: number;
-}
-
-export function ReactQueryPagination({
- currentPage,
- onPageChange,
- hasNextPage = true,
- hasPreviousPage = true,
- pageSize = 20,
- totalCount,
-}: ReactQueryPaginationProps) {
- const canGoPrevious = hasPreviousPage && currentPage > 0;
- const canGoNext = hasNextPage;
-
- // Calculate the last page if totalCount is provided
- const lastPage = totalCount ? Math.ceil(totalCount / pageSize) - 1 : 10000;
-
- const getPageNumbers = (): number[] => {
- // Show current page and 2 pages around it
- const start = Math.max(0, currentPage - 1);
- const end = currentPage + 2;
- return Array.from({ length: end - start }, (_, i) => start + i);
- };
-
- const pageNumbers = getPageNumbers();
-
- return (
-
-
-
-
onPageChange(0)}
- disabled={!canGoPrevious}
- aria-label="Go to first page"
- >
- First
-
-
-
onPageChange(currentPage - 1)}
- disabled={!canGoPrevious}
- aria-label="Go to previous page"
- >
-
-
-
-
- {pageNumbers.map((pageIndex) => (
-
- onPageChange(pageIndex)}
- aria-current={pageIndex === currentPage ? "page" : undefined}
- aria-label={
- pageIndex === currentPage
- ? `Current page, page ${pageIndex + 1}`
- : `Go to page ${pageIndex + 1}`
- }
- >
-
- {pageIndex + 1}
-
-
-
- ))}
-
-
-
onPageChange(currentPage + 1)}
- disabled={!canGoNext}
- aria-label="Go to next page"
- >
-
-
-
-
onPageChange(lastPage)} // Go to last page
- disabled={!canGoNext}
- aria-label="Go to last page"
- >
- Last
-
-
-
-
- );
-}
diff --git a/services/explorer-ui/src/components/deterministic-status-badge.tsx b/services/explorer-ui/src/components/deterministic-status-badge.tsx
deleted file mode 100644
index 9d2b4e8a6..000000000
--- a/services/explorer-ui/src/components/deterministic-status-badge.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import { useEffect, useState, type FC } from "react";
-
-interface DeterministicStatusBadgeProps {
- text: string;
- className?: string;
- tooltipContent?: string;
- isDarkText?: boolean;
-}
-
-const COLOR_BASE = 220; // Increased from 128 to make it more whitish
-
-const hashString = async (str: string): Promise => {
- const encoder = new TextEncoder();
- const data = encoder.encode(str);
- const hashBuffer = await crypto.subtle.digest("SHA-256", data);
- return new Uint8Array(hashBuffer);
-};
-
-const getTrueColor = (digest: Uint8Array): [number, number, number] => {
- const red = digest[0] >> 2; // Reduced impact (using >> 2 instead of >> 1)
- const green = digest[1] >> 2;
- const blue = digest[2] >> 2;
-
- const paletteNbr = digest[0] % 3;
-
- switch (paletteNbr) {
- case 0:
- return [COLOR_BASE + red, COLOR_BASE + green, COLOR_BASE];
- case 1:
- return [COLOR_BASE + red, COLOR_BASE, COLOR_BASE + blue];
- case 2:
- return [COLOR_BASE, COLOR_BASE + green, COLOR_BASE + blue];
- default:
- return [COLOR_BASE + 32, COLOR_BASE + 32, COLOR_BASE + 32];
- }
-};
-
-const getDerivedColors = (
- bgColor: [number, number, number],
- isDarkText: boolean,
-): { textColor: string; borderColor: string } => {
- const [r, g, b] = bgColor;
-
- if (isDarkText) {
- const textR = Math.round(r * 0.2);
- const textG = Math.round(g * 0.2);
- const textB = Math.round(b * 0.2);
-
- const borderR = Math.round(r * 0.5);
- const borderG = Math.round(g * 0.5);
- const borderB = Math.round(b * 0.5);
-
- return {
- textColor: `rgb(${textR}, ${textG}, ${textB})`,
- borderColor: `rgb(${borderR}, ${borderG}, ${borderB})`,
- };
- } else {
- const textR = Math.round(r * 0.3);
- const textG = Math.round(g * 0.3);
- const textB = Math.round(b * 0.3);
-
- const borderR = Math.round(r * 0.6);
- const borderG = Math.round(g * 0.6);
- const borderB = Math.round(b * 0.6);
-
- return {
- textColor: `rgb(${textR}, ${textG}, ${textB})`,
- borderColor: `rgb(${borderR}, ${borderG}, ${borderB})`,
- };
- }
-};
-
-export const DeterministicStatusBadge: FC = ({
- text,
- className = "",
- isDarkText = false,
-}) => {
- const [colors, setColors] = useState<[number, number, number]>([
- 240, 240, 240,
- ]);
-
- useEffect(() => {
- const calculateColors = async () => {
- const digest = await hashString(text);
- setColors(getTrueColor(digest));
- };
-
- calculateColors().catch((error) => {
- console.error("Error calculating colors:", error);
- setColors([240, 240, 240]);
- });
- }, [text]);
-
- const [red, green, blue] = colors;
- const { textColor, borderColor } = getDerivedColors(colors, isDarkText);
-
- const badgeStyle = {
- backgroundColor: `rgb(${red}, ${green}, ${blue})`,
- color: textColor,
- borderColor: borderColor,
- };
-
- return (
-
- {text}
-
- );
-};
diff --git a/services/explorer-ui/src/components/dropped-banner.tsx b/services/explorer-ui/src/components/dropped-banner.tsx
deleted file mode 100644
index f759700cf..000000000
--- a/services/explorer-ui/src/components/dropped-banner.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { OctagonAlert } from "lucide-react";
-
-interface DroppedBannerProps {
- reason?: string;
-}
-
-export const DroppedBanner: React.FC = () => {
- return (
-
-
-
-
Dropped Transaction
-
-
- This transaction has been pending in mempool but has later not been
- included in any block.
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/etherscan-address-link.tsx b/services/explorer-ui/src/components/etherscan-address-link.tsx
deleted file mode 100644
index 31932d067..000000000
--- a/services/explorer-ui/src/components/etherscan-address-link.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import { getL1NetworkId } from "@chicmoz-pkg/types";
-import { ExternalLink } from "lucide-react";
-import { cn } from "~/lib/utils";
-import { L2_NETWORK_ID } from "~/service/constants";
-import { CustomTooltip } from "./custom-tooltip";
-
-type EtherscanAddressLinkProps = {
- content: string;
- endpoint: string;
- className?: string;
- showExternalLinkIcon?: boolean;
- tooltipContent?: string;
-};
-
-const ETHERSCAN_URL =
- getL1NetworkId(L2_NETWORK_ID) === "ETH_SEPOLIA" ||
- getL1NetworkId(L2_NETWORK_ID) === "ETH_MAINNET"
- ? getL1NetworkId(L2_NETWORK_ID) === "ETH_MAINNET"
- ? "https://etherscan.io"
- : "https://sepolia.etherscan.io"
- : undefined;
-
-export const EtherscanAddressLink: React.FC = ({
- content,
- endpoint,
- className,
- showExternalLinkIcon = true,
- tooltipContent = "View on Etherscan",
-}) => {
- if (!ETHERSCAN_URL) {
- return {content}
;
- }
- return (
-
-
- {content}
- {showExternalLinkIcon ? (
-
- ) : null}
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/fee-juice-portal-deposits/fee-juice-portal-deposits-columns.tsx b/services/explorer-ui/src/components/fee-juice-portal-deposits/fee-juice-portal-deposits-columns.tsx
deleted file mode 100644
index f86e4615e..000000000
--- a/services/explorer-ui/src/components/fee-juice-portal-deposits/fee-juice-portal-deposits-columns.tsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import { type ChicmozL1FeeJuicePortalDeposit } from "@chicmoz-pkg/types";
-import { type ColumnDef } from "@tanstack/react-table";
-import { DataTableColumnHeader } from "~/components/data-table";
-import { truncateHashString } from "~/lib/create-hash-string";
-
-export const FeeJuicePortalDepositsColumns: ColumnDef[] =
- [
- {
- accessorKey: "l1TransactionHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const hash = row.getValue("l1TransactionHash");
- if (!hash) return — ;
- return (
-
- {truncateHashString(hash)}
-
- );
- },
- },
- {
- accessorKey: "l1BlockNumber",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const bn = row.getValue("l1BlockNumber");
- return (
- {bn?.toString() ?? "—"}
- );
- },
- },
- {
- accessorKey: "amount",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const amount = row.getValue("amount");
- return (
- {amount?.toString() ?? "—"}
- );
- },
- },
- {
- accessorKey: "secretHash",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const h = row.getValue("secretHash");
- if (!h) return — ;
- return {truncateHashString(h)} ;
- },
- },
- {
- accessorKey: "key",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const k = row.getValue("key");
- if (!k) return — ;
- return {truncateHashString(k)} ;
- },
- },
- {
- accessorKey: "isFinalized",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const fin = row.getValue("isFinalized");
- return (
-
- {fin ? "Yes" : "No"}
-
- );
- },
- },
- ];
diff --git a/services/explorer-ui/src/components/fee-payment-method-badge.tsx b/services/explorer-ui/src/components/fee-payment-method-badge.tsx
deleted file mode 100644
index aa125d3bd..000000000
--- a/services/explorer-ui/src/components/fee-payment-method-badge.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { type FC } from "react";
-import { Badge } from "~/components/ui/badge";
-
-type Props = {
- method: string;
-};
-
-export const FeePaymentMethodBadge: FC = ({ method }) => {
- if (method === "fee_juice") {
- return Fee Juice ;
- }
- return Fee Payment Contract ;
-};
diff --git a/services/explorer-ui/src/components/fee-recipient/fee-recipient-columns.tsx b/services/explorer-ui/src/components/fee-recipient/fee-recipient-columns.tsx
deleted file mode 100644
index 1df3ac52b..000000000
--- a/services/explorer-ui/src/components/fee-recipient/fee-recipient-columns.tsx
+++ /dev/null
@@ -1,129 +0,0 @@
-import { type ColumnDef } from "@tanstack/react-table";
-import { type ChicmozFeeRecipient } from "@chicmoz-pkg/types";
-import { CopyableAmount } from "~/components/copyable-amount";
-import { truncateHashString } from "~/lib/create-hash-string";
-import { formatFees, getFeeJuiceSymbol } from "~/lib/utils";
-import { DataTableColumnHeader } from "../data-table";
-import { CustomTooltip } from "../custom-tooltip";
-import { CopyableText } from "../copy-text";
-import { EtherscanAddressLink } from "../etherscan-address-link";
-
-type CreateFeeRecipientColumnsArgs = {
- feeJuiceAddress?: string;
- feeJuiceDecimals?: number;
- feeJuiceSymbol?: string;
-};
-
-export const createFeeRecipientColumns = ({
- feeJuiceAddress,
- feeJuiceDecimals,
- feeJuiceSymbol,
-}: CreateFeeRecipientColumnsArgs): ColumnDef[] => [
- {
- accessorKey: "l2Address",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const hash = String(row.getValue("l2Address"));
- return ;
- },
- },
- {
- accessorKey: "feesReceived",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const symbol = getFeeJuiceSymbol(feeJuiceSymbol);
- const formattedFees = formatFees(
- String(row.getValue("feesReceived")),
- feeJuiceDecimals,
- );
- const formattedValue = `${formattedFees.value}${formattedFees.denomination}`;
-
- return (
-
-
- {feeJuiceAddress ? (
-
- ) : (
- {symbol}
- )}
-
- );
- },
- },
- {
- accessorKey: "nbrOfBlocks",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- return (
-
- {row.getValue("nbrOfBlocks")}
-
- );
- },
- },
- {
- accessorKey: "calculatedForNumberOfBlocks",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- return (
-
-
- {row.getValue("calculatedForNumberOfBlocks")}
-
-
- );
- },
- },
- {
- accessorKey: "partOfTotalFeesReceived",
- header: ({ column }) => (
-
- ),
- cell: ({ row }) => {
- const percentage = Number(row.getValue("partOfTotalFeesReceived"));
- return (
-
- {percentage * 100}%
-
- );
- },
- },
-];
diff --git a/services/explorer-ui/src/components/fee-recipient/fee-recipient-table.tsx b/services/explorer-ui/src/components/fee-recipient/fee-recipient-table.tsx
deleted file mode 100644
index 43d1f99ce..000000000
--- a/services/explorer-ui/src/components/fee-recipient/fee-recipient-table.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import { type FC, useMemo } from "react";
-import { DataTable } from "~/components/data-table";
-import { type ChicmozFeeRecipient } from "@chicmoz-pkg/types";
-import { createFeeRecipientColumns } from "./fee-recipient-columns";
-
-interface Props {
- title?: string;
- feeRecipients?: ChicmozFeeRecipient[];
- isLoading: boolean;
- error?: Error | null;
- disableSizeSelector?: boolean;
- disablePagination?: boolean;
- maxEntries?: number;
- feeJuiceAddress?: string;
- feeJuiceDecimals?: number;
- feeJuiceSymbol?: string;
-}
-
-export const FeeReceipientsTable: FC = ({
- title,
- feeRecipients,
- isLoading,
- error,
- disableSizeSelector,
- disablePagination,
- maxEntries = 10,
- feeJuiceAddress,
- feeJuiceDecimals,
- feeJuiceSymbol,
-}) => {
- const columns = useMemo(
- () =>
- createFeeRecipientColumns({
- feeJuiceAddress,
- feeJuiceDecimals,
- feeJuiceSymbol,
- }),
- [feeJuiceAddress, feeJuiceDecimals, feeJuiceSymbol],
- );
-
- if (error) {
- return {error.message}
;
- }
- return (
-
-
- {title && (
-
-
{title}
-
- )}
-
-
-
- );
-};
diff --git a/services/explorer-ui/src/components/footer.tsx b/services/explorer-ui/src/components/footer.tsx
deleted file mode 100644
index 9304dd158..000000000
--- a/services/explorer-ui/src/components/footer.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-import { Link } from "@tanstack/react-router";
-import { DiscordIcon, GithubIcon } from "~/assets";
-import { ChicmozHomeLink } from "~/components/ui/chicmoz-home-link";
-import { routes } from "~/routes/__root";
-import { DISCORD_URL, GITHUB_URL } from "~/service/constants";
-
-export const Footer = () => {
- return (
-