import React from "react"; /** * Format satoshi amount with styled components. * Leading zeros are subtle, main digits are prominent. * e.g., 1876088 -> "₿ 0.01" (subtle) + "876 088 sats" (prominent) */ export function SatsDisplay({ sats }: { sats: number }) { const btc = sats / 100_000_000; const btcStr = btc.toFixed(8); const [whole, decimal] = btcStr.split("."); // Group decimal into chunks: first 2, then two groups of 3 const part1 = decimal.slice(0, 2); const part2 = decimal.slice(2, 5); const part3 = decimal.slice(5, 8); // Find where meaningful digits start (first non-zero after decimal) const fullDecimal = part1 + part2 + part3; let firstNonZero = fullDecimal.length; for (let i = 0; i < fullDecimal.length; i++) { if (fullDecimal[i] !== "0") { firstNonZero = i; break; } } // Build the display with subtle leading zeros and prominent digits const subtleStyle: React.CSSProperties = { opacity: 0.45, fontWeight: 400, }; // Determine which parts are subtle vs prominent const renderPart = (part: string, startIdx: number) => { return part.split("").map((char, i) => { const globalIdx = startIdx + i; const isSubtle = globalIdx < firstNonZero; return ( {char} ); }); }; return ( {whole}. {renderPart(part1, 0)} {renderPart(part2, 2)} {renderPart(part3, 5)} sats ); }