@blockscout/ui-toolkit
Version:
A comprehensive collection of reusable Chakra UI components and theme system for Blockscout's projects
1,482 lines • 340 kB
JavaScript
import { jsx as p, jsxs as G, Fragment as Me } from "react/jsx-runtime";
import { Accordion as Fe, Icon as ge, defineRecipe as Ae, Circle as Oi, Skeleton as mr, Stack as Ri, Button as Sa, ButtonGroup as Pi, AbsoluteCenter as Dt, Spinner as pr, Span as ka, useRecipe as Aa, Alert as $e, Avatar as it, Group as vr, useBreakpointValue as Ia, Tooltip as Xe, Portal as He, useDisclosure as Oa, chakra as We, Badge as Ra, Checkbox as Qe, CheckboxGroup as Pa, Link as Pr, LinkOverlay as Lr, LinkBox as La, Flex as Rt, Dialog as he, Drawer as xe, Field as Te, Heading as Na, Image as Da, InputElement as Nr, Input as za, Menu as de, PinInput as lt, Popover as me, ProgressCircle as ot, defineSlotRecipe as ce, defineConfig as Ba, createSystem as Ua, defaultConfig as Fa, ChakraProvider as Ma, RadioGroup as nt, useRatingGroup as ja, RatingGroup as Ve, useSelectContext as Li, Select as fe, createListCollection as Ha, Box as je, Slider as Ee, HStack as Wa, For as $a, Switch as ze, Table as Ze, Tabs as zt, Tag as Be, Textarea as Xa, createToaster as Va, Toaster as Ga, Toast as Je, Center as qa, VisuallyHidden as Ka, Text as Dr } from "@chakra-ui/react";
import * as P from "react";
import B, { useState as _r, useEffect as Ni, useCallback as zr } from "react";
import Ya from "react-dom";
import Di from "next/link";
import { ThemeProvider as Za, useTheme as Qa } from "next-themes";
import { useRouter as zi } from "next/router";
import { useFormContext as Pe, useWatch as Ja, useController as De } from "react-hook-form";
const Bi = (e) => /* @__PURE__ */ P.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", ...e }, /* @__PURE__ */ P.createElement("path", { d: "M11.535 11.293a1 1 0 0 0 0 1.414l3.536 3.536a1 1 0 1 1-1.414 1.414l-4.95-4.95a1 1 0 0 1 0-1.414l4.95-4.95a1 1 0 1 1 1.414 1.414l-3.536 3.536Z", fill: "currentColor" })), i0 = P.forwardRef(function(t, r) {
const { children: n, indicatorPlacement: o, variant: i, noIndicator: c, ...l } = t, d = i === "faq" ? "start" : o ?? "end", h = i === "faq" ? /* @__PURE__ */ p(
Fe.ItemIndicator,
{
asChild: !0,
rotate: "0deg",
position: "relative",
_before: {
content: '""',
position: "absolute",
display: "block",
bgColor: "{currentColor}",
w: "100%",
h: "2px",
borderRadius: "2px",
left: "0",
top: "50%",
transform: "translateY(-50%)"
},
_after: {
content: '""',
position: "absolute",
display: "block",
bgColor: "{currentColor}",
w: "2px",
h: "100%",
borderRadius: "2px",
left: "50%",
top: "0",
transform: "translateX(-50%)",
transition: "transform 0.2s ease-in-out"
},
_open: {
_after: {
transform: "translateX(-50%) rotate(90deg)"
}
},
children: /* @__PURE__ */ p("div", {})
}
) : /* @__PURE__ */ p(Fe.ItemIndicator, { rotate: { base: "180deg", _open: "270deg" }, display: "flex", children: /* @__PURE__ */ p(ge, { boxSize: 5, children: /* @__PURE__ */ p(Bi, {}) }) });
return /* @__PURE__ */ G(Fe.ItemTrigger, { className: "group", ...l, ref: r, children: [
d === "start" && !c && h,
n,
d === "end" && !c && h
] });
}), a0 = P.forwardRef(function(t, r) {
return /* @__PURE__ */ p(Fe.ItemContent, { children: /* @__PURE__ */ p(Fe.ItemBody, { ...t, ref: r }) });
}), l0 = (e) => {
const { multiple: t = !0, ...r } = e;
return /* @__PURE__ */ p(Fe.Root, { multiple: t, ...r });
}, s0 = Fe.Item, el = (e) => /* @__PURE__ */ P.createElement("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", ...e }, /* @__PURE__ */ P.createElement("path", { d: "M10 18.333a8.333 8.333 0 1 1 0-16.666 8.333 8.333 0 1 1 0 16.666Zm-.834-9.166v5h1.667v-5H9.166Zm0-3.334V7.5h1.667V5.833H9.166Z", fill: "currentColor" })), tl = (e) => /* @__PURE__ */ P.createElement("svg", { viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", ...e }, /* @__PURE__ */ P.createElement("path", { d: "M9.44 8.035a.791.791 0 0 0 1.12 0l3.802-3.803a.791.791 0 0 1 1.119 0l.287.287a.79.79 0 0 1 0 1.119L11.965 9.44a.79.79 0 0 0 0 1.118l3.803 3.803a.791.791 0 0 1 0 1.119l-.287.287a.791.791 0 0 1-1.119 0l-3.803-3.803a.79.79 0 0 0-1.118 0l-3.803 3.803a.79.79 0 0 1-1.119 0l-.287-.287a.791.791 0 0 1 0-1.119l3.803-3.803a.791.791 0 0 0 0-1.118L4.232 5.638a.791.791 0 0 1 0-1.119l.287-.287a.791.791 0 0 1 1.119 0L9.44 8.035Z", fill: "currentColor" })), Ui = Ae({
base: {
display: "flex",
gap: 0,
borderRadius: "sm",
overflow: "hidden",
_disabled: {
opacity: "control.disabled"
},
minWidth: "auto"
},
variants: {
visual: {
plain: {
bg: "transparent",
color: "closeButton.fg",
border: "none",
_hover: {
bg: "transparent",
color: "link.primary.hover"
}
}
},
size: {
md: { boxSize: 5 }
}
},
defaultVariants: {
size: "md",
visual: "plain"
}
}), c0 = P.forwardRef(function(t, r) {
const { size: n, ...o } = t;
return /* @__PURE__ */ p(Oi, { size: n, asChild: !0, ref: r, children: /* @__PURE__ */ p(mr, { ...o }) });
}), u0 = P.forwardRef(
function(t, r) {
const { noOfLines: n = 3, gap: o, ...i } = t;
return /* @__PURE__ */ p(Ri, { gap: o, width: "full", ref: r, children: Array.from({ length: n }).map((c, l) => /* @__PURE__ */ p(
mr,
{
height: "4",
...t,
_last: { maxW: "80%" },
...i
},
l
)) });
}
), we = P.forwardRef(
function(t, r) {
const { loading: n = !1, ...o } = t;
return /* @__PURE__ */ p(
mr,
{
ref: r,
...n ? { "data-loading": !0, state: "loading" } : { variant: "none" },
...o
}
);
}
), rl = P.forwardRef(
function(t, r) {
const { loading: n, disabled: o, loadingText: i, children: c, expanded: l, selected: d, highlighted: h, loadingSkeleton: g = !1, ...v } = t;
return /* @__PURE__ */ p(we, { loading: g, asChild: !0, ref: r, children: /* @__PURE__ */ p(
Sa,
{
...l ? { "data-expanded": !0 } : {},
...d ? { "data-selected": !0 } : {},
...h ? { "data-highlighted": !0 } : {},
...n ? { "data-loading": !0 } : {},
...g ? { "data-loading-skeleton": !0 } : {},
disabled: !g && (n || o),
...v,
children: n && !i ? /* @__PURE__ */ G(Me, { children: [
/* @__PURE__ */ p(Dt, { display: "inline-flex", children: /* @__PURE__ */ p(pr, { size: "inherit", color: "inherit" }) }),
/* @__PURE__ */ p(ka, { opacity: 0, children: c })
] }) : n && i ? /* @__PURE__ */ G(Me, { children: [
/* @__PURE__ */ p(pr, { size: "inherit", color: "inherit" }),
i
] }) : c
}
) });
}
), d0 = P.forwardRef(
function(t, r) {
const { ...n } = t;
return /* @__PURE__ */ p(Pi, { ref: r, ...n });
}
), f0 = P.forwardRef(
function(t, r) {
const { children: n, onChange: o, variant: i = "segmented", defaultValue: c, loading: l = !1, equalWidth: d = !1, ...h } = t, g = P.useMemo(() => {
const w = Array.isArray(n) ? n[0] : void 0;
return typeof (w == null ? void 0 : w.props.value) == "string" ? w.props.value : void 0;
}, [n]), [v, T] = P.useState(c ?? g), b = P.useCallback((w) => {
const O = w.currentTarget.value;
T(O), o == null || o(O);
}, [o]), S = P.Children.map(n, (w) => P.cloneElement(w, {
onClick: b,
selected: v === w.props.value,
variant: i
})), L = P.Children.count(n);
return /* @__PURE__ */ p(we, { loading: l, children: /* @__PURE__ */ p(
Pi,
{
ref: r,
gap: 0,
...d ? {
display: "grid",
gridTemplateColumns: `repeat(${L}, 1fr)`
} : {},
...h,
children: S
}
) });
}
), Bt = B.forwardRef(
function(t, r) {
const { size: n, variant: o = "plain", children: i, ...c } = t, l = B.Children.only(i), d = n ? B.cloneElement(l, { boxSize: 5 }) : l, h = (() => {
switch (n) {
case "2xs":
return {
_icon: { boxSize: 5 },
boxSize: 5,
borderRadius: "sm"
};
case "md":
return {
_icon: { boxSize: 5 },
boxSize: 8
};
default:
return {};
}
})();
return /* @__PURE__ */ p(
rl,
{
ref: r,
display: "inline-flex",
justifyContent: "center",
alignItems: "center",
p: 0,
minW: "auto",
flexShrink: "0",
variant: o,
...h,
...c,
children: d
}
);
}
), Le = P.forwardRef(function(t, r) {
const n = Aa({ recipe: Ui }), [o, i] = n.splitVariantProps(t), c = n(o);
return /* @__PURE__ */ p(Bt, { "aria-label": "Close", ref: r, css: c, ...i, children: t.children ?? /* @__PURE__ */ p(ge, { boxSize: 5, children: /* @__PURE__ */ p(tl, {}) }) });
}), p0 = P.forwardRef(
function(t, r) {
const {
title: n,
children: o,
icon: i,
closable: c,
onClose: l,
startElement: d,
endElement: h,
loading: g,
showIcon: v = !1,
descriptionProps: T,
...b
} = t, [S, L] = P.useState(!0), w = /* @__PURE__ */ p(ge, { boxSize: 5, children: /* @__PURE__ */ p(el, {}) }), O = d !== void 0 ? d : !v && i === void 0 ? null : /* @__PURE__ */ p($e.Indicator, { children: i || w }), C = P.useCallback(() => {
L(!1), l == null || l();
}, [l]);
return c && !S ? null : /* @__PURE__ */ p(we, { loading: g, asChild: !0, children: /* @__PURE__ */ G($e.Root, { ref: r, ...b, children: [
O,
o ? /* @__PURE__ */ G($e.Content, { children: [
n && /* @__PURE__ */ p($e.Title, { children: n }),
/* @__PURE__ */ p($e.Description, { display: "inline-flex", flexWrap: "wrap", ...T, children: o })
] }) : /* @__PURE__ */ p($e.Title, { flex: "1", children: n }),
h,
c && /* @__PURE__ */ p(
Le,
{
pos: "relative",
m: 0.5,
alignSelf: "flex-start",
onClick: C
}
)
] }) });
}
), h0 = P.forwardRef(
function(t, r) {
const { name: n, src: o, srcSet: i, loading: c, icon: l, fallback: d, children: h, ...g } = t;
return /* @__PURE__ */ G(it.Root, { ref: r, ...g, children: [
/* @__PURE__ */ p(nl, { name: n, icon: l, children: d }),
/* @__PURE__ */ p(it.Image, { src: o, srcSet: i, loading: c }),
h
] });
}
), nl = P.forwardRef(
function(t, r) {
const { name: n, icon: o, children: i, ...c } = t;
return /* @__PURE__ */ G(it.Fallback, { ref: r, ...c, children: [
i,
n != null && i == null && /* @__PURE__ */ p(Me, { children: ol(n) }),
n == null && i == null && /* @__PURE__ */ p(it.Icon, { asChild: !!o, children: o })
] });
}
);
function ol(e) {
const t = e.trim().split(" "), r = t[0] != null ? t[0] : "", n = t.length > 1 ? t[t.length - 1] : "";
return r && n ? `${r.charAt(0)}${n.charAt(0)}` : r.charAt(0);
}
const g0 = P.forwardRef(
function(t, r) {
const { size: n, variant: o, borderless: i, ...c } = t;
return /* @__PURE__ */ p(it.PropsProvider, { value: { size: n, variant: o, borderless: i }, children: /* @__PURE__ */ p(vr, { gap: "0", spaceX: "-3", ref: r, ...c }) });
}
);
function Ut(e, t, { signal: r, edges: n } = {}) {
let o, i = null;
const c = n != null && n.includes("leading"), l = n == null || n.includes("trailing"), d = () => {
i !== null && (e.apply(o, i), o = void 0, i = null);
}, h = () => {
l && d(), b();
};
let g = null;
const v = () => {
g != null && clearTimeout(g), g = setTimeout(() => {
g = null, h();
}, t);
}, T = () => {
g !== null && (clearTimeout(g), g = null);
}, b = () => {
T(), o = void 0, i = null;
}, S = () => {
T(), d();
}, L = function(...w) {
if (r != null && r.aborted)
return;
o = this, i = w;
const O = g == null;
v(), c && O && d();
};
return L.schedule = v, L.cancel = b, L.flush = S, r == null || r.addEventListener("abort", b, { once: !0 }), L;
}
function Fi(e, t, { signal: r, edges: n = ["leading", "trailing"] } = {}) {
let o = null;
const i = Ut(e, t, { signal: r, edges: n }), c = function(...l) {
o == null ? o = Date.now() : Date.now() - o >= t && (o = Date.now(), i.cancel(), i(...l)), i(...l);
};
return c.cancel = i.cancel, c.flush = i.flush, c;
}
function il(e, t) {
const r = {}, n = Object.keys(e);
for (let o = 0; o < n.length; o++) {
const i = n[o], c = e[i];
t(c, i) && (r[i] = c);
}
return r;
}
var st = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function al(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var Zt = { exports: {} }, Br;
function ll() {
return Br || (Br = 1, function(e) {
(function() {
function t(w, O) {
document.addEventListener ? w.addEventListener("scroll", O, !1) : w.attachEvent("scroll", O);
}
function r(w) {
document.body ? w() : document.addEventListener ? document.addEventListener("DOMContentLoaded", function O() {
document.removeEventListener("DOMContentLoaded", O), w();
}) : document.attachEvent("onreadystatechange", function O() {
(document.readyState == "interactive" || document.readyState == "complete") && (document.detachEvent("onreadystatechange", O), w());
});
}
function n(w) {
this.a = document.createElement("div"), this.a.setAttribute("aria-hidden", "true"), this.a.appendChild(document.createTextNode(w)), this.b = document.createElement("span"), this.c = document.createElement("span"), this.h = document.createElement("span"), this.f = document.createElement("span"), this.g = -1, this.b.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;", this.c.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;", this.f.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;", this.h.style.cssText = "display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;", this.b.appendChild(this.h), this.c.appendChild(this.f), this.a.appendChild(this.b), this.a.appendChild(this.c);
}
function o(w, O) {
w.a.style.cssText = "max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:" + O + ";";
}
function i(w) {
var O = w.a.offsetWidth, C = O + 100;
return w.f.style.width = C + "px", w.c.scrollLeft = C, w.b.scrollLeft = w.b.scrollWidth + 100, w.g !== O ? (w.g = O, !0) : !1;
}
function c(w, O) {
function C() {
var M = N;
i(M) && M.a.parentNode && O(M.g);
}
var N = w;
t(w.b, C), t(w.c, C), i(w);
}
function l(w, O) {
var C = O || {};
this.family = w, this.style = C.style || "normal", this.weight = C.weight || "normal", this.stretch = C.stretch || "normal";
}
var d = null, h = null, g = null, v = null;
function T() {
if (h === null) if (b() && /Apple/.test(window.navigator.vendor)) {
var w = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent);
h = !!w && 603 > parseInt(w[1], 10);
} else h = !1;
return h;
}
function b() {
return v === null && (v = !!document.fonts), v;
}
function S() {
if (g === null) {
var w = document.createElement("div");
try {
w.style.font = "condensed 100px sans-serif";
} catch {
}
g = w.style.font !== "";
}
return g;
}
function L(w, O) {
return [w.style, w.weight, S() ? w.stretch : "", "100px", O].join(" ");
}
l.prototype.load = function(w, O) {
var C = this, N = w || "BESbswy", M = 0, D = O || 3e3, F = (/* @__PURE__ */ new Date()).getTime();
return new Promise(function(W, a) {
if (b() && !T()) {
var s = new Promise(function(m, u) {
function _() {
(/* @__PURE__ */ new Date()).getTime() - F >= D ? u(Error("" + D + "ms timeout exceeded")) : document.fonts.load(L(C, '"' + C.family + '"'), N).then(function(y) {
1 <= y.length ? m() : setTimeout(_, 25);
}, u);
}
_();
}), f = new Promise(function(m, u) {
M = setTimeout(function() {
u(Error("" + D + "ms timeout exceeded"));
}, D);
});
Promise.race([f, s]).then(
function() {
clearTimeout(M), W(C);
},
a
);
} else r(function() {
function m() {
var H;
(H = x != -1 && A != -1 || x != -1 && k != -1 || A != -1 && k != -1) && ((H = x != A && x != k && A != k) || (d === null && (H = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent), d = !!H && (536 > parseInt(H[1], 10) || parseInt(H[1], 10) === 536 && 11 >= parseInt(H[2], 10))), H = d && (x == U && A == U && k == U || x == I && A == I && k == I || x == z && A == z && k == z)), H = !H), H && (j.parentNode && j.parentNode.removeChild(j), clearTimeout(M), W(C));
}
function u() {
if ((/* @__PURE__ */ new Date()).getTime() - F >= D) j.parentNode && j.parentNode.removeChild(j), a(Error("" + D + "ms timeout exceeded"));
else {
var H = document.hidden;
(H === !0 || H === void 0) && (x = _.a.offsetWidth, A = y.a.offsetWidth, k = E.a.offsetWidth, m()), M = setTimeout(u, 50);
}
}
var _ = new n(N), y = new n(N), E = new n(N), x = -1, A = -1, k = -1, U = -1, I = -1, z = -1, j = document.createElement("div");
j.dir = "ltr", o(_, L(C, "sans-serif")), o(y, L(C, "serif")), o(E, L(C, "monospace")), j.appendChild(_.a), j.appendChild(y.a), j.appendChild(E.a), document.body.appendChild(j), U = _.a.offsetWidth, I = y.a.offsetWidth, z = E.a.offsetWidth, u(), c(_, function(H) {
x = H, m();
}), o(
_,
L(C, '"' + C.family + '",sans-serif')
), c(y, function(H) {
A = H, m();
}), o(y, L(C, '"' + C.family + '",serif')), c(E, function(H) {
k = H, m();
}), o(E, L(C, '"' + C.family + '",monospace'));
});
});
}, e.exports = l;
})();
}(Zt)), Zt.exports;
}
var sl = ll();
const cl = /* @__PURE__ */ al(sl);
function ul(e = [], { testString: t, timeout: r } = {}, { showErrors: n } = { showErrors: !1 }) {
const [o, i] = _r(!1), c = JSON.stringify(e);
return Ni(() => {
const l = JSON.parse(c).map(({ family: d, weight: h, style: g, stretch: v }) => new cl(d, { weight: h, style: g, stretch: v }).load(t, r));
Promise.all(l).then(() => i(!0)).catch(() => {
n && console.error("An error occurred during font loading");
});
}, [c, t, r, n]), o;
}
function dl(e) {
const t = P.useRef(null), r = P.useRef(e);
return P.useLayoutEffect(() => {
r.current = e;
}), P.useEffect(() => {
const n = (o) => {
const i = t.current;
i && !i.contains(o.target) && r.current(o);
};
return document.addEventListener("mousedown", n), document.addEventListener("touchstart", n), () => {
document.removeEventListener("mousedown", n), document.removeEventListener("touchstart", n);
};
}, []), t;
}
function fl(e) {
const t = document.createElement("textarea");
t.value = e, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t);
}
function pl() {
const [e, t] = P.useState(null), r = P.useCallback((n) => {
(async () => {
var i;
try {
if ((i = navigator == null ? void 0 : navigator.clipboard) != null && i.writeText)
await navigator.clipboard.writeText(n), t(n);
else
throw new Error("writeText not supported");
} catch {
fl(n), t(n);
}
})();
}, []);
return [e, r];
}
function hl(e, t) {
const [r, n] = P.useState(e);
return P.useEffect(() => {
const o = setTimeout(() => {
n(e);
}, t);
return () => {
clearTimeout(o);
};
}, [e, t]), r;
}
const Ft = (e) => e[e.length - 1] === "/" ? e.slice(0, -1) : e, gl = (e) => e[0] === "/" ? e.slice(1) : e;
function b0(e) {
try {
const t = new URL(e ?? "");
return {
href: t.href,
domain: t.hostname
};
} catch {
}
}
function Ur() {
return typeof window < "u";
}
const bl = /^https?:\/\//i, ml = /^ipfs:\/\//i, vl = /^(?:0x)?[\da-fA-F]+$/, _l = /^0x[\da-fA-F]+$/, Mi = /\.([\da-z]+)$/i, yl = /^\d+$/, m0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
BLOCK_HEIGHT: yl,
FILE_EXTENSION: Mi,
HEX_REGEXP: vl,
HEX_REGEXP_WITH_0X: _l,
IPFS_PREFIX: ml,
URL_PREFIX: bl
}, Symbol.toStringTag, { value: "Module" })), El = (e) => e == null ? void 0 : e.replaceAll("'", '"'), R = (e) => {
const t = (Ur() ? window.__envs : process.env) ?? {};
if (Ur() && t.NEXT_PUBLIC_APP_INSTANCE === "pw") {
const r = localStorage.getItem(e);
if (typeof r == "string")
return r;
}
return El(t[e]);
}, te = (e) => {
try {
return JSON.parse(e || "null");
} catch {
return null;
}
}, Ce = (e) => {
const t = R(e);
if (t)
return Cl(e, t);
}, Cl = (e, t) => {
try {
const r = e.replace(/^NEXT_PUBLIC_/, "").replace(/_URL$/, "").toLowerCase(), n = xl(t);
if (!n)
throw new Error("Cannot get file path");
return `/assets/configs/${r}.${n}`;
} catch {
return;
}
};
function xl(e) {
var t;
try {
return (t = new URL(e).pathname.match(Mi)) == null ? void 0 : t[1];
} catch {
return te(e) ? "json" : void 0;
}
}
const wl = (() => {
const e = R("NEXT_PUBLIC_API_HOST"), t = R("NEXT_PUBLIC_API_PROTOCOL") || "https", r = R("NEXT_PUBLIC_API_PORT"), n = [
t,
"://",
e,
r && ":" + r
].filter(Boolean).join(""), i = [
R("NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL") || "wss",
"://",
e,
r && ":" + r
].filter(Boolean).join("");
return Object.freeze({
endpoint: n,
basePath: Ft(R("NEXT_PUBLIC_API_BASE_PATH") || ""),
socketEndpoint: i,
host: e ?? "",
protocol: t,
port: r
});
})(), Tl = (() => {
const e = R("NEXT_PUBLIC_ADMIN_SERVICE_API_HOST");
if (e)
return Object.freeze({
endpoint: e
});
})(), Sl = (() => {
const e = R("NEXT_PUBLIC_NAME_SERVICE_API_HOST");
if (e)
return Object.freeze({
endpoint: e
});
})(), kl = (() => {
const e = R("NEXT_PUBLIC_CONTRACT_INFO_API_HOST");
if (e)
return Object.freeze({
endpoint: e
});
})(), Al = (() => {
const e = R("NEXT_PUBLIC_METADATA_SERVICE_API_HOST");
if (e)
return Object.freeze({
endpoint: e
});
})(), Il = (() => {
const e = R("NEXT_PUBLIC_REWARDS_SERVICE_API_HOST");
if (e)
return Object.freeze({
endpoint: e
});
})(), Ol = (() => {
const e = R("NEXT_PUBLIC_STATS_API_HOST");
if (e)
return Object.freeze({
endpoint: e,
basePath: Ft(R("NEXT_PUBLIC_STATS_API_BASE_PATH") || "")
});
})(), Rl = (() => {
const e = R("NEXT_PUBLIC_TAC_OPERATION_LIFECYCLE_API_HOST");
if (e)
return Object.freeze({
endpoint: e
});
})(), Pl = (() => {
const e = R("NEXT_PUBLIC_VISUALIZE_API_HOST");
if (e)
return Object.freeze({
endpoint: e,
basePath: Ft(R("NEXT_PUBLIC_VISUALIZE_API_BASE_PATH") || "")
});
})(), ve = Object.freeze({
general: wl,
admin: Tl,
bens: Sl,
contractInfo: kl,
metadata: Al,
rewards: Il,
stats: Ol,
tac: Rl,
visualize: Pl
}), hr = R("NEXT_PUBLIC_APP_PORT"), ji = R("NEXT_PUBLIC_APP_PROTOCOL"), Hi = R("NEXT_PUBLIC_APP_HOST"), Ll = [
ji || "https",
"://",
Hi,
hr && ":" + hr
].filter(Boolean).join(""), Nl = R("NEXT_PUBLIC_APP_ENV") === "development", Dl = R("NEXT_PUBLIC_APP_INSTANCE") === "pw", zl = R("NEXT_PUBLIC_ICON_SPRITE_HASH"), yr = Object.freeze({
isDev: Nl,
isPw: Dl,
protocol: ji,
host: Hi,
port: hr,
baseUrl: Ll,
useProxy: R("NEXT_PUBLIC_USE_NEXT_JS_PROXY") === "true",
spriteHash: zl
});
function Er(e) {
if (!e)
return !0;
try {
return new URL(e), !0;
} catch {
return "Incorrect URL";
}
}
const v0 = /(?:[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?\.)+[a-z\d][a-z\d-]{0,61}[a-z\d]/gi;
function _0(e) {
return e ? (() => {
try {
return new URL(`https://${e}`).hostname;
} catch {
return;
}
})() === e.toLowerCase() || "Incorrect domain" : !0;
}
const Bl = 18, Fr = R("NEXT_PUBLIC_ROLLUP_TYPE"), Ul = Fr === "arbitrum" ? "posting" : Fr === "zkEvm" ? "sequencing" : R("NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE") || "mining", Fl = (() => {
const e = R("NEXT_PUBLIC_NETWORK_RPC_URL"), t = Er(e);
if (e && t === !0)
return [e];
const r = te(e);
return Array.isArray(r) ? r : [];
})(), Oe = Object.freeze({
id: R("NEXT_PUBLIC_NETWORK_ID"),
name: R("NEXT_PUBLIC_NETWORK_NAME"),
shortName: R("NEXT_PUBLIC_NETWORK_SHORT_NAME"),
currency: {
name: R("NEXT_PUBLIC_NETWORK_CURRENCY_NAME"),
weiName: R("NEXT_PUBLIC_NETWORK_CURRENCY_WEI_NAME"),
symbol: R("NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL"),
decimals: Number(R("NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS")) || Bl
},
secondaryCoin: {
symbol: R("NEXT_PUBLIC_NETWORK_SECONDARY_COIN_SYMBOL")
},
hasMultipleGasCurrencies: R("NEXT_PUBLIC_NETWORK_MULTIPLE_GAS_CURRENCIES") === "true",
tokenStandard: R("NEXT_PUBLIC_NETWORK_TOKEN_STANDARD_NAME") || "ERC",
rpcUrls: Fl,
isTestnet: R("NEXT_PUBLIC_IS_TESTNET") === "true",
verificationType: Ul
}), Ml = R("NEXT_PUBLIC_ADVANCED_FILTER_ENABLED") === "false", Mr = "Advanced filter", jl = Object.freeze(Ml ? {
title: Mr,
isEnabled: !1
} : {
title: Mr,
isEnabled: !0
}), Ke = Object.freeze({
reCaptchaV2: {
siteKey: R("NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY")
}
}), jr = "My account", Cr = R("NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED") === "true" && Ke.reCaptchaV2.siteKey ? Object.freeze({
title: jr,
isEnabled: !0,
recaptchaSiteKey: Ke.reCaptchaV2.siteKey
}) : Object.freeze({
title: jr,
isEnabled: !1
}), Hr = "Verified tokens info", Wi = ve.contractInfo ? Object.freeze({
title: Hr,
isEnabled: !0
}) : Object.freeze({
title: Hr,
isEnabled: !1
}), Hl = 'Address verification in "My account"', Wl = Cr.isEnabled && Wi.isEnabled && ve.admin ? Object.freeze({
title: 'Address verification in "My account"',
isEnabled: !0
}) : Object.freeze({
title: Hl,
isEnabled: !1
}), Wr = "Address metadata", $i = ve.metadata ? Object.freeze({
title: Wr,
isEnabled: !0
}) : Object.freeze({
title: Wr,
isEnabled: !1
}), $l = [
"slise",
"adbutler",
"coinzilla",
"hype",
"none"
], Xl = ["coinzilla", "none"], et = (() => {
const e = R("NEXT_PUBLIC_AD_BANNER_PROVIDER");
return e && $l.includes(e) ? e : "slise";
})(), $r = R("NEXT_PUBLIC_AD_BANNER_ADDITIONAL_PROVIDER"), ct = "Banner ads", Vl = (() => {
if (et === "adbutler") {
const e = te(R("NEXT_PUBLIC_AD_ADBUTLER_CONFIG_DESKTOP")), t = te(R("NEXT_PUBLIC_AD_ADBUTLER_CONFIG_MOBILE"));
if (e && t)
return Object.freeze({
title: ct,
isEnabled: !0,
provider: et,
adButler: {
config: {
desktop: e,
mobile: t
}
}
});
} else if (et !== "none") {
if ($r === "adbutler") {
const e = te(R("NEXT_PUBLIC_AD_ADBUTLER_CONFIG_DESKTOP")), t = te(R("NEXT_PUBLIC_AD_ADBUTLER_CONFIG_MOBILE"));
return Object.freeze({
title: ct,
isEnabled: !0,
provider: et,
additionalProvider: $r,
adButler: {
config: {
desktop: e,
mobile: t
}
}
});
}
return Object.freeze({
title: ct,
isEnabled: !0,
provider: et
});
}
return Object.freeze({
title: ct,
isEnabled: !1
});
})(), Xr = (() => {
const e = R("NEXT_PUBLIC_AD_TEXT_PROVIDER");
return e && Xl.includes(e) ? e : "coinzilla";
})(), Vr = "Text ads", Gl = Object.freeze(Xr !== "none" ? {
title: Vr,
isEnabled: !0,
provider: Xr
} : {
title: Vr,
isEnabled: !1
}), Gr = "Beacon chain", ql = R("NEXT_PUBLIC_HAS_BEACON_CHAIN") === "true" ? Object.freeze({
title: Gr,
isEnabled: !0,
currency: {
symbol: R("NEXT_PUBLIC_BEACON_CHAIN_CURRENCY_SYMBOL") || R("NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL") || ""
// maybe we need some other default value here
}
}) : Object.freeze({
title: Gr,
isEnabled: !1
}), qr = "Bridged tokens", Kl = (() => {
const e = te(R("NEXT_PUBLIC_BRIDGED_TOKENS_CHAINS")), t = te(R("NEXT_PUBLIC_BRIDGED_TOKENS_BRIDGES"));
return e && e.length > 0 && t && t.length > 0 ? Object.freeze({
title: qr,
isEnabled: !0,
chains: e,
bridges: t
}) : Object.freeze({
title: qr,
isEnabled: !1
});
})(), Kr = R("NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID"), Yr = "Blockchain interaction (writing to contract, etc.)", Xi = /* all chain parameters are required for wagmi provider */ /* @wagmi/chains/dist/index.d.ts */ Oe.id && Oe.name && Oe.currency.name && Oe.currency.symbol && Oe.currency.decimals && Oe.rpcUrls.length > 0 && Kr ? Object.freeze({
title: Yr,
isEnabled: !0,
walletConnect: {
projectId: Kr
}
}) : Object.freeze({
title: Yr,
isEnabled: !1
}), Zr = "Celo chain", Yl = R("NEXT_PUBLIC_CELO_ENABLED") === "true" ? Object.freeze({
title: Zr,
isEnabled: !0,
L2UpgradeBlock: R("NEXT_PUBLIC_CELO_L2_UPGRADE_BLOCK") ? Number(R("NEXT_PUBLIC_CELO_L2_UPGRADE_BLOCK")) : void 0,
BLOCKS_PER_EPOCH: 17280
}) : Object.freeze({
title: Zr,
isEnabled: !1
}), Qr = "Export data to CSV file", Zl = Ke.reCaptchaV2.siteKey ? Object.freeze({
title: Qr,
isEnabled: !0,
reCaptcha: {
siteKey: Ke.reCaptchaV2.siteKey
}
}) : Object.freeze({
title: Qr,
isEnabled: !1
}), Jr = "Data availability", Ql = R("NEXT_PUBLIC_DATA_AVAILABILITY_ENABLED") === "true" ? Object.freeze({
title: Jr,
isEnabled: !0
}) : Object.freeze({
title: Jr,
isEnabled: !1
}), en = te(R("NEXT_PUBLIC_DEFI_DROPDOWN_ITEMS")) || [], tn = "DeFi dropdown", Jl = en.length > 0 ? Object.freeze({
title: tn,
isEnabled: !0,
items: en
}) : Object.freeze({
title: tn,
isEnabled: !1
}), rn = R("NEXT_PUBLIC_GAME_BADGE_CLAIM_LINK"), nn = "Easter egg badge", es = Object.freeze(rn ? {
title: nn,
isEnabled: !0,
badgeClaimLink: rn
} : {
title: nn,
isEnabled: !1
}), ut = te(R("NEXT_PUBLIC_TX_EXTERNAL_TRANSACTIONS_CONFIG")), on = "External transactions", ts = Object.freeze(ut ? {
title: on,
isEnabled: !0,
chainName: ut.chain_name,
chainLogoUrl: ut.chain_logo_url,
explorerUrlTemplate: ut.explorer_url_template
} : {
title: on,
isEnabled: !1
}), rs = [
"optimistic",
"arbitrum",
"shibarium",
"zkEvm",
"zkSync",
"scroll"
], Ge = (() => {
const e = R("NEXT_PUBLIC_ROLLUP_TYPE");
return rs.find((t) => t === e);
})(), ns = R("NEXT_PUBLIC_ROLLUP_L2_WITHDRAWAL_URL"), an = (() => {
const e = te(R("NEXT_PUBLIC_ROLLUP_PARENT_CHAIN")), t = Ft(R("NEXT_PUBLIC_ROLLUP_L1_BASE_URL") || ""), r = R("NEXT_PUBLIC_ROLLUP_PARENT_CHAIN_NAME");
if (!(!t && !(e != null && e.baseUrl)))
return {
...e,
name: r ?? (e == null ? void 0 : e.name),
baseUrl: t ?? (e == null ? void 0 : e.baseUrl)
};
})(), ln = "Rollup (L2) chain", Ye = Object.freeze(Ge && an ? {
title: ln,
isEnabled: !0,
type: Ge,
stageIndex: R("NEXT_PUBLIC_ROLLUP_STAGE_INDEX"),
L2WithdrawalUrl: Ge === "optimistic" ? ns : void 0,
outputRootsEnabled: Ge === "optimistic" && R("NEXT_PUBLIC_ROLLUP_OUTPUT_ROOTS_ENABLED") === "true",
interopEnabled: Ge === "optimistic" && R("NEXT_PUBLIC_INTEROP_ENABLED") === "true",
homepage: {
showLatestBlocks: R("NEXT_PUBLIC_ROLLUP_HOMEPAGE_SHOW_LATEST_BLOCKS") === "true"
},
parentChain: an,
DA: {
celestia: {
namespace: Ge === "arbitrum" ? R("NEXT_PUBLIC_ROLLUP_DA_CELESTIA_NAMESPACE") : void 0,
celeniumUrl: R("NEXT_PUBLIC_ROLLUP_DA_CELESTIA_CELENIUM_URL")
}
}
} : {
title: ln,
isEnabled: !1
}), sn = "Fault proof system", os = Ye.isEnabled && Ye.type === "optimistic" && R("NEXT_PUBLIC_FAULT_PROOF_ENABLED") === "true" ? Object.freeze({
title: sn,
isEnabled: !0
}) : Object.freeze({
title: sn,
isEnabled: !1
}), is = [
"usd",
"gwei"
], as = R("NEXT_PUBLIC_GAS_TRACKER_ENABLED") === "false", cn = (() => {
var r;
const e = R("NEXT_PUBLIC_GAS_TRACKER_UNITS");
return e ? ((r = te(e)) == null ? void 0 : r.filter((n) => is.includes(n))) || [] : ["usd", "gwei"];
})(), un = "Gas tracker", ls = !as && cn.length > 0 ? Object.freeze({
title: un,
isEnabled: !0,
units: cn
}) : Object.freeze({
title: un,
isEnabled: !1
}), ss = R("NEXT_PUBLIC_MARKETPLACE_ENABLED"), dn = Ce("NEXT_PUBLIC_MARKETPLACE_CONFIG_URL"), fn = R("NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM"), cs = R("NEXT_PUBLIC_MARKETPLACE_SUGGEST_IDEAS_FORM"), us = Ce("NEXT_PUBLIC_MARKETPLACE_CATEGORIES_URL"), ds = Ce("NEXT_PUBLIC_MARKETPLACE_SECURITY_REPORTS_URL"), fs = R("NEXT_PUBLIC_MARKETPLACE_FEATURED_APP"), pn = Ce("NEXT_PUBLIC_MARKETPLACE_BANNER_CONTENT_URL"), hn = R("NEXT_PUBLIC_MARKETPLACE_BANNER_LINK_URL"), gn = R("NEXT_PUBLIC_MARKETPLACE_RATING_AIRTABLE_API_KEY"), bn = R("NEXT_PUBLIC_MARKETPLACE_RATING_AIRTABLE_BASE_ID"), ps = Ce("NEXT_PUBLIC_MARKETPLACE_GRAPH_LINKS_URL"), Qt = "Marketplace", Mt = (() => {
if (ss === "true" && Oe.rpcUrls.length > 0 && fn) {
const e = {
submitFormUrl: fn,
categoriesUrl: us,
suggestIdeasFormUrl: cs,
securityReportsUrl: ds,
featuredApp: fs,
banner: pn && hn ? {
contentUrl: pn,
linkUrl: hn
} : void 0,
rating: gn && bn ? {
airtableApiKey: gn,
airtableBaseId: bn
} : void 0,
graphLinksUrl: ps
};
if (dn)
return Object.freeze({
title: Qt,
isEnabled: !0,
configUrl: dn,
...e
});
if (ve.admin)
return Object.freeze({
title: Qt,
isEnabled: !0,
api: ve.admin,
...e
});
}
return Object.freeze({
title: Qt,
isEnabled: !1
});
})(), tt = te(R("NEXT_PUBLIC_GAS_REFUEL_PROVIDER_CONFIG")), mn = "Get gas button", hs = Object.freeze(tt ? {
title: mn,
isEnabled: !0,
name: tt.name,
logoUrl: tt.logo,
url: tt.url_template.replace("{chainId}", Oe.id || ""),
dappId: Mt.isEnabled ? tt.dapp_id : void 0
} : {
title: mn,
isEnabled: !1
}), vn = R("NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID"), _n = "Google analytics", gs = Object.freeze(vn ? {
title: _n,
isEnabled: !0,
propertyId: vn
} : {
title: _n,
isEnabled: !1
}), yn = R("NEXT_PUBLIC_GRAPHIQL_TRANSACTION"), En = "GraphQL API documentation", bs = Object.freeze(yn === "none" ? {
title: En,
isEnabled: !1
} : {
title: En,
isEnabled: !0,
defaultTxHash: yn
}), Cn = R("NEXT_PUBLIC_GROWTH_BOOK_CLIENT_KEY"), xn = "GrowthBook feature flagging and A/B testing", ms = Object.freeze(Cn ? {
title: xn,
isEnabled: !0,
clientKey: Cn
} : {
title: xn,
isEnabled: !1
}), wn = "MetaSuites extension", vs = R("NEXT_PUBLIC_METASUITES_ENABLED") === "true" ? Object.freeze({
title: wn,
isEnabled: !0
}) : Object.freeze({
title: wn,
isEnabled: !1
}), Tn = R("NEXT_PUBLIC_MIXPANEL_PROJECT_TOKEN"), Sn = "Mixpanel analytics", _s = Object.freeze(Tn ? {
title: Sn,
isEnabled: !0,
projectToken: Tn
} : {
title: Sn,
isEnabled: !1
}), kn = "MUD framework", ys = Ye.isEnabled && Ye.type === "optimistic" && R("NEXT_PUBLIC_HAS_MUD_FRAMEWORK") === "true" ? Object.freeze({
title: kn,
isEnabled: !0
}) : Object.freeze({
title: kn,
isEnabled: !1
}), An = te(R("NEXT_PUBLIC_MULTICHAIN_BALANCE_PROVIDER_CONFIG")), In = "Multichain balance", Es = Object.freeze(An ? {
title: In,
isEnabled: !0,
providers: An.map((e) => ({
name: e.name,
logoUrl: e.logo,
urlTemplate: e.url_template,
dappId: Mt.isEnabled ? e.dapp_id : void 0
}))
} : {
title: In,
isEnabled: !1
}), On = "Name service integration", Cs = ve.bens ? Object.freeze({
title: On,
isEnabled: !0
}) : Object.freeze({
title: On,
isEnabled: !1
}), xs = R("NEXT_PUBLIC_DEX_POOLS_ENABLED") === "true", Rn = "DEX Pools", ws = ve.contractInfo && xs ? Object.freeze({
title: Rn,
isEnabled: !0
}) : Object.freeze({
title: Rn,
isEnabled: !1
}), Pn = "Public tag submission", Ts = Ke.reCaptchaV2.siteKey && $i.isEnabled && ve.admin ? Object.freeze({
title: Pn,
isEnabled: !0
}) : Object.freeze({
title: Pn,
isEnabled: !1
}), Ss = "https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml", Ln = R("NEXT_PUBLIC_API_SPEC_URL"), Nn = "REST API documentation", ks = Object.freeze(Ln === "none" ? {
title: Nn,
isEnabled: !1
} : {
title: Nn,
isEnabled: !0,
specUrl: Ln || Ss
}), Dn = "Rewards service integration", As = ve.rewards && Cr.isEnabled && Xi.isEnabled ? Object.freeze({
title: Dn,
isEnabled: !0
}) : Object.freeze({
title: Dn,
isEnabled: !1
}), zn = R("NEXT_PUBLIC_ROLLBAR_CLIENT_TOKEN"), Is = (() => {
var t;
const e = R("NEXT_PUBLIC_APP_INSTANCE");
return e || ((t = yr.host) == null ? void 0 : t.replace(".blockscout.com", "").replace(".k8s-dev", "").replaceAll("-", "_"));
})(), Os = R("NEXT_PUBLIC_APP_ENV") || "production", Rs = R("NEXT_PUBLIC_GIT_TAG") || R("NEXT_PUBLIC_GIT_COMMIT_SHA"), Bn = "Rollbar error monitoring", Ps = Object.freeze(zn ? {
title: Bn,
isEnabled: !0,
clientToken: zn,
environment: Os,
instance: Is,
codeVersion: Rs
} : {
title: Bn,
isEnabled: !1
});
function Ls() {
try {
const e = R("NEXT_PUBLIC_SAFE_TX_SERVICE_URL");
return new URL("/api/v1/safes", e).toString();
} catch {
return;
}
}
const Un = "Safe address tags", Ns = (() => {
const e = Ls();
return Object.freeze(e ? {
title: Un,
isEnabled: !0,
apiUrl: e
} : {
title: Un,
isEnabled: !1
});
})(), Fn = "Save on gas with GasHawk", Ds = R("NEXT_PUBLIC_SAVE_ON_GAS_ENABLED") === "true" && Mt.isEnabled ? Object.freeze({
title: Fn,
isEnabled: !0,
apiUrlTemplate: "https://core.gashawk.io/apiv2/stats/address/<address>/savingsPotential/0x1"
}) : Object.freeze({
title: Fn,
isEnabled: !1
}), Mn = "Solidity to UML diagrams", zs = ve.visualize ? Object.freeze({
title: Mn,
isEnabled: !0
}) : Object.freeze({
title: Mn,
isEnabled: !1
}), jn = "Blockchain statistics", Bs = ve.stats ? Object.freeze({
title: jn,
isEnabled: !0
}) : Object.freeze({
title: jn,
isEnabled: !1
}), Hn = "SUAVE chain", Us = R("NEXT_PUBLIC_IS_SUAVE_CHAIN") === "true" ? Object.freeze({
title: Hn,
isEnabled: !0
}) : Object.freeze({
title: Hn,
isEnabled: !1
}), Wn = "Ton Application Chain (TAC)", $n = R("NEXT_PUBLIC_TAC_TON_EXPLORER_URL"), Fs = ve.tac && $n ? Object.freeze({
title: Wn,
isEnabled: !0,
tonExplorerUrl: $n
}) : Object.freeze({
title: Wn,
isEnabled: !1
}), Ms = [
"blockscout",
"noves",
"none"
], Xn = "Transaction interpretation", Vn = (() => {
const e = R("NEXT_PUBLIC_TRANSACTION_INTERPRETATION_PROVIDER");
return e && Ms.includes(e) ? e : "none";
})(), js = Object.freeze(Vn !== "none" ? {
title: Xn,
provider: Vn,
isEnabled: !0
} : {
title: Xn,
isEnabled: !1
}), Gn = "User operations", Hs = R("NEXT_PUBLIC_HAS_USER_OPS") === "true" ? Object.freeze({
title: Gn,
isEnabled: !0
}) : Object.freeze({
title: Gn,
isEnabled: !1
}), Ue = te(R("NEXT_PUBLIC_ADDRESS_USERNAME_TAG"));
function Ws(e) {
try {
const t = e.replace("{address}", "0x0000000000000000000000000000000000000000");
return new URL(t).toString(), !0;
} catch {
return !1;
}
}
const qn = "User profile API", $s = Ue && Ws(Ue.api_url_template) ? Object.freeze({
title: qn,
isEnabled: !0,
apiUrlTemplate: Ue.api_url_template,
tagLinkTemplate: Ue.tag_link_template,
tagIcon: Ue.tag_icon,
tagBgColor: Ue.tag_bg_color,
tagTextColor: Ue.tag_text_color
}) : Object.freeze({
title: qn,
isEnabled: !1
}), Xs = [
"stability",
"blackfort",
"zilliqa"
], Kn = (() => {
const e = R("NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE");
return e && Xs.includes(e) ? e : void 0;
})(), Yn = "Validators list", Vs = Object.freeze(Kn ? {
title: Yn,
isEnabled: !0,
chainType: Kn
} : {
title: Yn,
isEnabled: !1
}), Gs = [
"metamask",
"coinbase",
"token_pocket"
], Jt = (() => {
var r;
const e = R("NEXT_PUBLIC_WEB3_WALLETS");
if (e === "none")
return;
const t = (r = te(e)) == null ? void 0 : r.filter((n) => Gs.includes(n));
return !t || t.length === 0 ? ["metamask"] : t;
})(), Zn = "Web3 wallet integration (add token or network to the wallet)", qs = Jt && Jt.length > 0 ? Object.freeze({
title: Zn,
isEnabled: !0,
wallets: Jt,
addToken: {
isDisabled: R("NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET") === "true"
},
addNetwork: {}
}) : Object.freeze({
title: Zn,
isEnabled: !1
}), Qn = "XStar score", Jn = R("NEXT_PUBLIC_XSTAR_SCORE_URL"), Ks = Object.freeze(Jn ? {
title: Qn,
url: Jn,
isEnabled: !0
} : {
title: Qn,
isEnabled: !1
}), Ys = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
account: Cr,
addressMetadata: $i,
addressProfileAPI: $s,
addressVerification: Wl,
adsBanner: Vl,
adsText: Gl,
advancedFilter: jl,
beaconChain: ql,
blockchainInteraction: Xi,
bridgedTokens: Kl,
celo: Yl,
csvExport: Zl,
dataAvailability: Ql,
deFiDropdown: Jl,
easterEggBadge: es,
externalTxs: ts,
faultProofSystem: os,
gasTracker: ls,
getGasButton: hs,
googleAnalytics: gs,
graphqlApiDocs: bs,
growthBook: ms,
marketplace: Mt,
metasuites: vs,
mixpanel: _s,
mudFramework: ys,
multichainButton: Es,
nameService: Cs,
pools: ws,
publicTagsSubmission: Ts,
restApiDocs: ks,
rewards: As,
rollbar: Ps,
rollup: Ye,
safe: Ns,
saveOnGas: Ds,
sol2uml: zs,
stats: Bs,
suave: Us,
tac: Fs,
txInterpretation: js,
userOps: Hs,
validators: Vs,
verifiedTokens: Wi,
web3Wallet: qs,
xStarScore: Ks
}, Symbol.toStringTag, { value: "Module" })), Zs = "/static/og_image.png", Qs = Object.freeze({
promoteBlockscoutInTitle: R("NEXT_PUBLIC_PROMOTE_BLOCKSCOUT_IN_TITLE") !== "false",
og: {
description: R("NEXT_PUBLIC_OG_DESCRIPTION") || "",
imageUrl: yr.baseUrl + (Ce("NEXT_PUBLIC_OG_IMAGE_URL") || Zs),
enhancedDataEnabled: R("NEXT_PUBLIC_OG_ENHANCED_DATA_ENABLED") === "true"
},
seo: {
enhancedDataEnabled: R("NEXT_PUBLIC_SEO_ENHANCED_DATA_ENABLED") === "true"
}
}), Js = ["rpc_api", "eth_rpc_api"], ec = [
"latest_batch",
"total_blocks",
"average_block_time",
"total_txs",
"total_operational_txs",
"latest_l1_state_batch",
"wallet_addresses",
"gas_tracker",
"btc_locked",
"current_epoch"
], tc = [
{
id: "light",
label: "Light",
colorMode: "light",
hex: "#FFFFFF",
sampleBg: "linear-gradient(154deg, #EFEFEF 50%, rgba(255, 255, 255, 0.00) 330.86%)"
},
{
id: "dim",
label: "Dim",
colorMode: "dark",
hex: "#232B37",
sampleBg: "linear-gradient(152deg, #232B37 50%, rgba(255, 255, 255, 0.00) 290.71%)"
},
{
id: "midnight",
label: "Midnight",
colorMode: "dark",
hex: "#1B2E48",
sampleBg: "linear-gradient(148deg, #1B3F71 50%, rgba(255, 255, 255, 0.00) 312.35%)"
},
{
id: "dark",
label: "Dark",
colorMode: "dark",
hex: "#101112",
sampleBg: "linear-gradient(161deg, #000 9.37%, #383838 92.52%)"
}
], eo = [
"solidity-hardhat",
"solidity-foundry"
], to = [
"solidity",
"vyper",
"yul",
"scilla"
], rc = [
"github",
"jazzicon",
"gradient_avatar",
"blockie",
"nouns"
], nc = [
"top_accounts"
], oc = ["base16", "bech32"], ic = (() => {
const e = R("NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE");
return rc.find((t) => e === t) || "jazzicon";
})(), Vi = (() => {
const e = (te(R("NEXT_PUBLIC_VIEWS_ADDRESS_FORMAT")) || []).filter((t) => oc.includes(t));
return e.length === 0 ? ["base16"] : e;
})(), ac = (() => {
const e = R("NEXT_PUBLIC_VIEWS_ADDRESS_BECH_32_PREFIX");
if (!(!e || !Vi.includes("bech32")))
return e.length >= 1 && e.length <= 83 ? e : void 0;
})(), lc = (() => {
const e = te(R("NEXT_PUBLIC_VIEWS_ADDRESS_HIDDEN_VIEWS")) || [];
return Array.isArray(e) ? nc.reduce((r, n) => (r[n] = e.includes(n), r), {}) : void 0;
})(), sc = (() => {
const e = R("NEXT_PUBLIC_VIEWS_CONTRACT_EXTRA_VERIFICATION_METHODS");
return e === "none" ? [] : e ? (te(e) || []).filter((r) => eo.includes(r)) : eo;
})(), cc = (() => {
const e = te(R("NEXT_PUBLIC_VIEWS_CONTRACT_LANGUAGE_FILTERS"));
return e ? e.filter((t) => to.includes(t)) : to.filter((r) => r !== "scilla");
})(), uc = Object.freeze({
identiconType: ic,
hashFormat: {
availableFormats: Vi,
bech32Prefix: ac
},
hiddenViews: lc,
solidityscanEnabled: R("NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED") === "true",
extraVerificationMethods: sc,
languageFilters: cc
}), dc = [
"base_fee",
"burnt_fees",
"total_reward",
"nonce",
"miner",
"L1_status",
"batch"
], fc = (() => {
const e = te(R("NEXT_PUBLIC_VIEWS_BLOCK_HIDDEN_FIELDS")) || [];
return Array.isArray(e) ? dc.reduce((r, n) => (r[n] = e.includes(n), r), {}) : void 0;
})(), pc = Object.freeze({
hiddenFields: fc
}), hc = Object.freeze({
marketplaces: te(R("NEXT_PUBLIC_VIEWS_NFT_MARKETPLACES")) || [],
verifiedFetch: {
isEnabled: R("NEXT_PUBLIC_HELIA_VERIFIED_FETCH_ENABLED") !== "false"
}
}), gc = Object.freeze({
hideScamTokensEnabled: R("NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED") === "true"
}), bc = [
"value",
"fee_currency",
"gas_price",
"tx_fee",
"gas_fees",
"burnt_fees",
"L1_status",
"batch"
], mc = [
"fee_per_gas"
], vc = (() => {
const e = te(R("NEXT_PUBLIC_VIEWS_TX_HIDDEN_FIELDS")) || [];
return Array.isArray(e) ? bc.reduce((r, n) => (r[n] = e.includes(n), r), {}) : void 0;
})(), _c = (() => {
const e = te(R("NEXT_PUBLIC_VIEWS_TX_ADDITIONAL_FIELDS")) || [];
return Array.isArray(e) ? mc.reduce((r, n) => (r[n] = e.includes(n), r), {}) : void 0;
})(), yc = Object.freeze({
hiddenFields: vc,
additionalFields: _c
}), Ec = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
address: uc,
block: pc,
nft: hc,
token: gc,
tx: yc
}, Symbol.toStringTag, { value: "Module" })), Cc = (() => {
const e = te(R("NEXT_PUBLIC_NAVIGATION_HIDDEN_LINKS")) || [];
return Array.isArray(e) ? Js.reduce((r, n) => (r[n] = e.includes(n), r), {}) : void 0;
})(), xc = (() => {
const e = te(R("NEXT_PUBLIC_HOMEPAGE_STATS"));
if (!Array.isArray(e)) {
const t = Ye;
return t.isEnabled && ["zkEvm", "zkSync", "arbitrum"].includes(t.type) ? ["latest_batch", "average_block_time", "total_txs", "wallet_addresses", "gas_tracker"] : ["total_blocks", "average_block_time", "total_txs", "wallet_addresses", "gas_tracker"];
}
return e.filter((t) => ec.includes(t));
})(), wc = (() => {
const e = te(R("NEXT_PUBLIC_NAVIGATION_HIGHLIGHTED_ROUTES"));
return Array.isArray(e) ? e : [];
})(), Tc = (() => {
const e = R("NEXT_PUBLIC_COLOR_THEME_DEFAULT");
return tc.find((t) => t.id === e);
})(), Sc = Object.freeze({
navigation: {
logo: {
default: Ce("NEXT_PUBLIC_NETWORK_LOGO"),
dark: Ce("NEXT_PUBLIC_NETWORK_LOGO_DARK")
},
icon: {
default: Ce("NEXT_PUBLIC_NETWORK_ICON"),
dark: Ce("NEXT_PUBLIC_NETWORK_ICON_DARK")
},
hiddenLinks: Cc,
highlightedRoutes: wc,
otherLinks: te(R("NEXT_PUBLIC_OTHER_LINKS")) || [],
featuredNetworks: Ce("NEXT_PUBLIC_FEATURED_NETWORKS"),
layout: R("NEXT_PUBLIC_NAVIGATION_LAYOUT") || "vertical"
},
footer: {
links: Ce("NEXT_PUBLIC_FOOTER_LINKS"),
frontendVersion: R("NEXT_PUBLIC_GIT_TAG"),
frontendCommit: R("NEXT_PUBLIC_GIT_COMMIT_SHA")
},
homepage: {
charts: te(R("NEXT_PUBLIC_HOMEPAGE_CHARTS")) || [],
stats: xc,
heroBanner: te(R("NEXT_PUBLIC_HOMEPAGE_HERO_BANNER_CONFIG")),
// !!! DEPRECATED !!!
plate: {
background: R("NEXT_PUBLIC_HOMEPAGE_PLATE_BACKGROUND"),
textColor: R("NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR")
}
},
views: Ec,
indexingAlert: {
blocks: {
isHidden: R("NEXT_PUBLIC_HIDE_INDEXING_ALERT_BLOCKS") === "true"
},
intTxs: {
isHidden: R("NEXT_PUBLIC_HIDE_INDEXING_ALERT_INT_TXS") === "true"
}
},
maintenanceAlert: {
message: R("NEXT_PUBLIC_MAINTENANCE_ALERT_MESSAGE")
},
explorers: {
items: te(R("NEXT_PUBLIC_NETWORK_EXPLORERS")) || []
},
ides: {
items: te(R("NEXT_PUBLIC_CONTRACT_CODE_IDES")) || []
},
hasContractAuditReports: R("NEXT_PUBLIC_HAS_CONTRACT_AUDIT_REPORTS") === "true",
colorTheme: {
default: Tc
},
fonts: {
heading: te(R("NEXT_PUBLIC_FONT_FAMILY_HEADING")),
body: te(R("NEXT_PUBLIC_FONT_FAMILY_BODY"))
},
maxContentWidth: R("NEXT_PUBLIC_MAX_CONTENT_WIDTH_ENABLED") !== "false"
}), at = Object.freeze({
app: yr,
chain: Oe,
apis: ve,
UI: Sc,
features: Ys,
services: Ke,
meta: Qs
});
function xr(e = !0) {
return Ia({ base: !0, lg: !1 }, { ssr: e });
}
const wr = P.forwardRef(
function(t, r) {
var U;
const {
showArrow: n,
onOpenChange: o,
variant: i,
selected: c,
children: l,
disabled: d,
disableOnMobil