refactor(core): centraliza hooks, providers e base compartilhada

This commit is contained in:
Felipe Coutinho
2026-03-09 17:11:55 +00:00
parent 2de5101058
commit 3e06a1d056
76 changed files with 3271 additions and 709 deletions

43
lib/utils/percentage.ts Normal file
View File

@@ -0,0 +1,43 @@
type FormatPercentageOptions = {
minimumFractionDigits?: number;
maximumFractionDigits?: number;
absolute?: boolean;
signDisplay?: Intl.NumberFormatOptions["signDisplay"];
};
export function formatPercentage(
value: number,
options?: FormatPercentageOptions,
): string {
const normalizedValue = options?.absolute ? Math.abs(value) : value;
return `${new Intl.NumberFormat("pt-BR", {
minimumFractionDigits: options?.minimumFractionDigits ?? 0,
maximumFractionDigits: options?.maximumFractionDigits ?? 1,
...(options?.signDisplay ? { signDisplay: options.signDisplay } : {}),
}).format(normalizedValue)}%`;
}
export function formatPercentageChange(value: number | null): string {
if (value === null) {
return "-";
}
const absoluteValue = Math.abs(value);
const formatterOptions =
absoluteValue < 10
? {
minimumFractionDigits: 1,
maximumFractionDigits: 1,
}
: {
minimumFractionDigits: 0,
maximumFractionDigits: 0,
};
return formatPercentage(value, {
...formatterOptions,
absolute: true,
signDisplay: value === 0 ? "auto" : "always",
});
}