29 lines
894 B
TypeScript
29 lines
894 B
TypeScript
import { type ClassValue, clsx } from "clsx";
|
|
import { twMerge } from "tailwind-merge";
|
|
import { getAddress, isAddress as viemIsAddress } from "viem";
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs));
|
|
}
|
|
|
|
export function formatAddress(address: string): string {
|
|
try {
|
|
const checksummed = getAddress(address);
|
|
return `${checksummed.slice(0, 6)}...${checksummed.slice(-4)}`;
|
|
} catch {
|
|
return address;
|
|
}
|
|
}
|
|
|
|
export function formatBalance(balance: bigint, decimals: number = 18): string {
|
|
const divisor = BigInt(10 ** decimals);
|
|
const whole = balance / divisor;
|
|
const remainder = balance % divisor;
|
|
const decimalPart = remainder.toString().padStart(decimals, "0").replace(/0+$/, "");
|
|
return decimalPart ? `${whole}.${decimalPart}` : whole.toString();
|
|
}
|
|
|
|
export function isAddress(address: string): boolean {
|
|
return viemIsAddress(address);
|
|
}
|