{methods.map((method, i) => {
const isRevealed = !method.masked || revealed.has(i);
const isHovered = hovered === i;
return (
{
setHovered(i);
if (method.masked) {
setRevealed((prev) => new Set(prev).add(i));
}
}}
onMouseLeave={() => setHovered(null)}
style={{
display: "inline-flex",
alignItems: "center",
gap: 10,
padding: "8px 14px",
fontFamily: "var(--mono)",
fontSize: "var(--text-sm)",
color: isHovered ? "var(--fg)" : "var(--fg-secondary)",
background: isHovered ? "var(--surface-hover)" : "var(--surface)",
border: `1px solid ${isHovered ? "var(--border-strong)" : "var(--border)"}`,
borderRadius: "var(--radius-md)",
transition: `all var(--duration-normal) var(--ease-in-out)`,
cursor: isRevealed ? "pointer" : "default",
alignSelf: "flex-start",
opacity: visibleComponent.has(i + visibleCount) ? 1.0 : 0.0
}}
onClick={() => {
if (isRevealed) {
window.location.href = getHref(method.label, method.icon);
}
}}
>
{isRevealed ? method.label : maskValue(method.label, method.icon)}
{method.masked && !revealed.has(i) && (
hover to reveal
)}
);
})}