From b6cdc054041f1789d0061916fa815d5d4db19e26 Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Mon, 13 Apr 2026 23:54:43 -0300 Subject: [PATCH] feat: formatadores BRL, CPF e telefone --- src/lib/formatters.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/lib/formatters.ts diff --git a/src/lib/formatters.ts b/src/lib/formatters.ts new file mode 100644 index 0000000..9143bcc --- /dev/null +++ b/src/lib/formatters.ts @@ -0,0 +1,30 @@ +export function formatBRL(cents: number): string { + return (cents / 100).toLocaleString('pt-BR', { + style: 'currency', + currency: 'BRL', + }) +} + +export function maskCPF(value: string): string { + const digits = value.replace(/\D/g, '').slice(0, 11) + return digits + .replace(/(\d{3})(\d)/, '$1.$2') + .replace(/(\d{3})(\d)/, '$1.$2') + .replace(/(\d{3})(\d{1,2})$/, '$1-$2') +} + +export function maskPhone(value: string): string { + const digits = value.replace(/\D/g, '').slice(0, 11) + if (digits.length <= 10) { + return digits + .replace(/(\d{2})(\d)/, '($1) $2') + .replace(/(\d{4})(\d)/, '$1-$2') + } + return digits + .replace(/(\d{2})(\d)/, '($1) $2') + .replace(/(\d{5})(\d)/, '$1-$2') +} + +export function onlyDigits(value: string): string { + return value.replace(/\D/g, '') +}