feat: explorer API, wallet, CCIP scripts, and config refresh
- Backend REST/gateway/track routes, analytics, Blockscout proxy paths. - Frontend wallet and liquidity surfaces; MetaMask token list alignment. - Deployment docs, verification scripts, address inventory updates. Check: go build ./... under backend/ (pass). Made-with: Cursor
This commit is contained in:
@@ -919,6 +919,149 @@
|
||||
.gas-network-subtle { color: var(--text-light); font-size: 0.82rem; white-space: nowrap; }
|
||||
.btn-copy { background: none; border: none; cursor: pointer; padding: 0.25rem; margin-left: 0.35rem; color: var(--text-light); vertical-align: middle; }
|
||||
.btn-copy:hover { color: var(--primary); }
|
||||
.tx-chip-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.tx-chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
padding: 0.3rem 0.6rem;
|
||||
border-radius: 999px;
|
||||
background: var(--muted-surface);
|
||||
border: 1px solid var(--border);
|
||||
color: var(--text);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.tx-chip-label {
|
||||
color: var(--text-light);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
font-size: 0.72rem;
|
||||
}
|
||||
.tx-inspector-stack {
|
||||
display: grid;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
.tx-inspector-entry {
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
background: var(--muted-surface);
|
||||
overflow: hidden;
|
||||
}
|
||||
.tx-inspector-entry summary {
|
||||
list-style: none;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
gap: 1rem;
|
||||
padding: 0.85rem 1rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.tx-inspector-entry summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
.tx-inspector-entry[open] summary {
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.tx-inspector-summary-value {
|
||||
color: var(--text-light);
|
||||
font-size: 0.82rem;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
}
|
||||
.tx-inspector-entry-body {
|
||||
display: grid;
|
||||
gap: 0.75rem;
|
||||
padding: 0.9rem 1rem 1rem;
|
||||
}
|
||||
.tx-inspector-note {
|
||||
color: var(--text-light);
|
||||
font-size: 0.84rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.tx-inspector-line {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(110px, 140px) minmax(0, 1fr);
|
||||
gap: 0.75rem;
|
||||
align-items: start;
|
||||
}
|
||||
.tx-inspector-label {
|
||||
color: var(--text-light);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
font-size: 0.72rem;
|
||||
padding-top: 0.15rem;
|
||||
}
|
||||
.tx-inspector-content {
|
||||
min-width: 0;
|
||||
}
|
||||
.tx-inspector-scroll {
|
||||
overflow-x: auto;
|
||||
}
|
||||
.tx-inspector-mono {
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.82rem;
|
||||
line-height: 1.55;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-all;
|
||||
}
|
||||
.tx-inspector-pre {
|
||||
margin: 0;
|
||||
padding: 0.85rem;
|
||||
border-radius: 10px;
|
||||
background: rgba(15, 23, 42, 0.06);
|
||||
border: 1px solid var(--border);
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.8rem;
|
||||
line-height: 1.55;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
}
|
||||
.tx-inspector-topic-list {
|
||||
display: grid;
|
||||
gap: 0.55rem;
|
||||
}
|
||||
.tx-inspector-topic-row {
|
||||
display: grid;
|
||||
gap: 0.35rem;
|
||||
padding: 0.7rem;
|
||||
border-radius: 10px;
|
||||
border: 1px solid var(--border);
|
||||
background: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
.tx-inspector-topic-index {
|
||||
color: var(--text-light);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
.tx-empty {
|
||||
color: var(--text-light);
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
body.dark-theme .tx-inspector-pre {
|
||||
background: rgba(15, 23, 42, 0.72);
|
||||
}
|
||||
body.dark-theme .tx-inspector-topic-row {
|
||||
background: rgba(15, 23, 42, 0.44);
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.tx-inspector-line {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
.tx-inspector-entry summary {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
}
|
||||
.tx-inspector-summary-value {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
.site-footer {
|
||||
margin-top: 2.5rem;
|
||||
padding: 2rem 0 2.5rem;
|
||||
@@ -1041,6 +1184,7 @@
|
||||
<li role="none"><a href="/routes" role="menuitem" onclick="event.preventDefault(); showRoutes(); updatePath('/routes'); closeNavMenu();" aria-label="View route decision tree"><i class="fas fa-diagram-project" aria-hidden="true"></i> <span>Routes</span></a></li>
|
||||
<li role="none"><a href="/tokens" role="menuitem" onclick="event.preventDefault(); if(typeof showTokensList==='function')showTokensList();else focusSearchWithHint('token'); updatePath('/tokens'); closeNavMenu();" aria-label="View token list"><i class="fas fa-tag" aria-hidden="true"></i> <span data-i18n="tokens">Tokens</span></a></li>
|
||||
<li role="none"><a href="/pools" role="menuitem" onclick="event.preventDefault(); showPools(); updatePath('/pools'); closeNavMenu();" aria-label="View pools"><i class="fas fa-water" aria-hidden="true"></i> <span data-i18n="pools">Pools</span> <span id="poolsMissingQuoteBadge" class="badge badge-warning" style="display:none; margin-left:0.35rem; vertical-align:middle;">0</span></a></li>
|
||||
<li role="none"><a href="/system" role="menuitem" onclick="event.preventDefault(); showSystemTopology(); closeNavMenu();" aria-label="System topology"><i class="fas fa-sitemap" aria-hidden="true"></i> <span>System</span></a></li>
|
||||
<li role="none"><a href="/watchlist" role="menuitem" onclick="event.preventDefault(); showWatchlist(); updatePath('/watchlist'); closeNavMenu();" aria-label="Watchlist"><i class="fas fa-star" aria-hidden="true"></i> <span data-i18n="watchlist">Watchlist</span></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -1556,6 +1700,23 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="systemView" class="detail-view">
|
||||
<div class="breadcrumb" id="systemBreadcrumb"><a href="/">Home</a><span class="breadcrumb-separator">/</span><span class="breadcrumb-current">System</span></div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<button class="btn btn-secondary" onclick="showHome()" aria-label="Go back"><i class="fas fa-arrow-left" aria-hidden="true"></i> Back</button>
|
||||
<h2 class="card-title"><i class="fas fa-sitemap" aria-hidden="true"></i> System topology</h2>
|
||||
<div style="display:flex; gap:0.5rem; margin-left:auto; flex-wrap:wrap;">
|
||||
<a class="btn btn-secondary" href="/chain138-command-center.html" target="_blank" rel="noopener noreferrer">Command center</a>
|
||||
<button type="button" class="btn btn-primary" onclick="if(window._showSystemTopology) window._showSystemTopology();" aria-label="Reload topology"><i class="fas fa-sync-alt" aria-hidden="true"></i> Reload</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="systemTopologyContent">
|
||||
<div class="loading"><i class="fas fa-spinner" aria-hidden="true"></i> Loading graph…</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
@@ -1594,6 +1755,6 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/explorer-spa.js?v=29"></script>
|
||||
<script src="/explorer-spa.js?v=34"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user