forked from git.gladyson/openmonetis
- Replace ESLint with Biome for linting and formatting - Configure Biome with tabs, double quotes, and organized imports - Move all SQL/Drizzle queries from page.tsx files to data.ts files - Create new data.ts files for: ajustes, dashboard, relatorios/categorias - Update existing data.ts files: extrato, fatura (add lancamentos queries) - Remove all drizzle-orm imports from page.tsx files - Update README.md with new tooling info Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import { cn } from "@/lib/utils/ui";
|
|
import { money_font } from "@/public/fonts/font_index";
|
|
import { usePrivacyMode } from "./privacy-provider";
|
|
|
|
type Props = {
|
|
amount: number;
|
|
className?: string;
|
|
showPositiveSign?: boolean;
|
|
};
|
|
|
|
function MoneyValues({ amount, className, showPositiveSign = false }: Props) {
|
|
const { privacyMode } = usePrivacyMode();
|
|
|
|
const formattedValue = amount.toLocaleString("pt-BR", {
|
|
style: "currency",
|
|
currency: "BRL",
|
|
maximumFractionDigits: 2,
|
|
});
|
|
|
|
const displayValue =
|
|
showPositiveSign && amount > 0 ? `+${formattedValue}` : formattedValue;
|
|
|
|
return (
|
|
<span
|
|
className={cn(
|
|
money_font.className,
|
|
"inline-flex items-baseline transition-all duration-200 tracking-tighter",
|
|
privacyMode &&
|
|
"blur-[6px] select-none hover:blur-none focus-within:blur-none",
|
|
className,
|
|
)}
|
|
aria-label={privacyMode ? "Valor oculto" : displayValue}
|
|
data-privacy={privacyMode ? "hidden" : undefined}
|
|
title={
|
|
privacyMode ? "Valor oculto - passe o mouse para revelar" : undefined
|
|
}
|
|
>
|
|
{displayValue}
|
|
</span>
|
|
);
|
|
}
|
|
|
|
export default MoneyValues;
|