refactor(ui): renomear "Pagador/Pagadores" para "Pessoa/Pessoas" na interface

Todas as strings visíveis ao usuário (labels, títulos, toasts, mensagens
de erro, cabeçalhos de tabela, exportações) foram atualizadas. Acordos
de gênero em português corrigidos. Código, rotas (/payers) e schema do
banco (pagadores) permanecem inalterados — divergência intencional
documentada em CLAUDE.md e CHANGELOG.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-04-20 18:29:55 +00:00
parent 2f68bcf039
commit 0bc3f06b77
42 changed files with 101 additions and 99 deletions

View File

@@ -269,7 +269,7 @@ export function AnticipateInstallmentsDialog({
</Field>
<Field className="gap-1">
<FieldLabel htmlFor="anticipation-pagador">Pagador</FieldLabel>
<FieldLabel htmlFor="anticipation-pagador">Pessoa</FieldLabel>
<FieldContent>
<Select
value={formState.payerId}

View File

@@ -116,7 +116,7 @@ export function BulkActionDialog({
htmlFor="period"
className="text-sm cursor-pointer font-medium"
>
Todos os pagadores deste período
Todas as pessoas deste período
</Label>
<p className="text-xs text-muted-foreground">
Aplica a todos os lançamentos deste mesmo mês na série
@@ -125,7 +125,7 @@ export function BulkActionDialog({
<div className="mt-1.5 flex items-start gap-1.5 rounded-md bg-amber-50 px-2 py-1.5 text-amber-800 dark:bg-amber-950/40 dark:text-amber-300">
<RiErrorWarningLine className="mt-0.5 size-3.5 shrink-0" />
<p className="text-xs">
Atenção: os valores individuais de cada pagador serão
Atenção: os valores individuais de cada pessoa serão
substituídos pelos valores deste lançamento.
</p>
</div>

View File

@@ -90,7 +90,7 @@ export function BulkImportDialog({
event.preventDefault();
if (!payerId) {
toast.error("Selecione o pagador.");
toast.error("Selecione a pessoa.");
return;
}
@@ -197,16 +197,16 @@ export function BulkImportDialog({
<DialogDescription>
Importando {itemCount}{" "}
{itemCount === 1 ? "lançamento" : "lançamentos"}. Selecione o
pagador, categoria e forma de pagamento para aplicar a todos.
pessoa, categoria e forma de pagamento para aplicar a todos.
</DialogDescription>
</DialogHeader>
<form className="space-y-4" onSubmit={handleSubmit}>
<div className="space-y-2">
<Label htmlFor="pagador">Pagador *</Label>
<Label htmlFor="pagador">Pessoa *</Label>
<Select value={payerId} onValueChange={setPagadorId}>
<SelectTrigger id="pagador" className="w-full">
<SelectValue placeholder="Selecione o pagador">
<SelectValue placeholder="Selecione a pessoa">
{payerId &&
(() => {
const selectedOption = payerOptions.find(

View File

@@ -525,7 +525,7 @@ export function MassAddDialog({
htmlFor={`pagador-${transaction.id}`}
className="sr-only"
>
Pagador {index + 1}
Pessoa {index + 1}
</Label>
<Select
value={transaction.payerId}
@@ -537,7 +537,7 @@ export function MassAddDialog({
id={`pagador-${transaction.id}`}
className="w-32 truncate"
>
<SelectValue placeholder="Pagador">
<SelectValue placeholder="Pessoa">
{transaction.payerId &&
(() => {
const selectedOption = payerOptions.find(

View File

@@ -50,7 +50,7 @@ export function PayerSection({
<div>
<p className="text-sm text-foreground">Dividir lançamento</p>
<p className="text-xs text-muted-foreground">
Atribuir parte do valor a outro pagador.
Atribuir parte do valor a outra pessoa.
</p>
</div>
</div>
@@ -75,7 +75,7 @@ export function PayerSection({
<div className="flex w-full flex-col gap-2 md:flex-row">
<div className="w-full space-y-1">
<Label htmlFor="payer">Pagador</Label>
<Label htmlFor="payer">Pessoa</Label>
<div className="flex gap-2">
<Select
value={formState.payerId ?? ""}

View File

@@ -230,7 +230,7 @@ export function TransactionDialog({
if (formState.isSplit && !formState.payerId) {
const message =
"Selecione o pagador principal para dividir o lançamento.";
"Selecione a pessoa principal para dividir o lançamento.";
setErrorMessage(message);
toast.error(message);
return;
@@ -238,7 +238,7 @@ export function TransactionDialog({
if (formState.isSplit && !formState.secondaryPayerId) {
const message =
"Selecione o pagador secundário para dividir o lançamento.";
"Selecione a pessoa secundário para dividir o lançamento.";
setErrorMessage(message);
toast.error(message);
return;
@@ -464,7 +464,7 @@ export function TransactionDialog({
const description =
mode === "create"
? isImportMode
? "Importando lançamento de outro usuário. Ajuste a categoria, pagador e cartão/conta antes de salvar."
? "Importando lançamento de outro usuário. Ajuste a categoria, pessoa e cartão/conta antes de salvar."
: isCopyMode
? "Os dados do lançamento foram copiados. Revise e ajuste conforme necessário antes de salvar."
: isNewWithType
@@ -519,7 +519,7 @@ export function TransactionDialog({
<div className="border-t border-border/40 my-3" />
{/* Pagador */}
{/* Pessoa */}
<PayerSection
formState={formState}
onFieldChange={handleFieldChange}

View File

@@ -123,13 +123,13 @@ export function GlobalFields({
</div>
<div className="flex min-w-44 flex-col gap-1.5">
<Label>Pagador</Label>
<Label>Pessoa</Label>
<Select
value={payerId ?? ""}
onValueChange={(v) => onPayerChange(v || null)}
>
<SelectTrigger>
<SelectValue placeholder="Selecionar pagador…" />
<SelectValue placeholder="Selecionar pessoa…" />
</SelectTrigger>
<SelectContent>
{payerOptions.map((opt) => (

View File

@@ -134,7 +134,7 @@ export function AnticipationCard({
{anticipation.payer && (
<div>
<dt className="text-muted-foreground">Pagador</dt>
<dt className="text-muted-foreground">Pessoa</dt>
<dd className="mt-1 font-medium">{anticipation.payer.name}</dd>
</div>
)}

View File

@@ -229,12 +229,12 @@ function buildColumns({
aria-hidden
/>
<span className="sr-only">
Dividido entre pagadores
Dividido entre pessoas
</span>
</span>
</TooltipTrigger>
<TooltipContent side="top">
Dividido entre pagadores
Dividido entre pessoas
</TooltipContent>
</Tooltip>
)}
@@ -408,10 +408,10 @@ function buildColumns({
},
{
accessorKey: "pagadorName",
header: "Pagador",
header: "Pessoa",
cell: ({ row }) => {
const { payerId, pagadorName, pagadorAvatar } = row.original;
const label = pagadorName?.trim() || "Sem pagador";
const label = pagadorName?.trim() || "Sem pessoa";
const displayName = label.split(/\s+/)[0] ?? label;
const avatarSrc = getAvatarSrc(pagadorAvatar);
const initial = displayName.charAt(0).toUpperCase() || "?";

View File

@@ -386,7 +386,7 @@ export function TransactionsFilters({
</div>
<div className="space-y-2">
<label className="text-sm font-medium">Pagador</label>
<label className="text-sm font-medium">Pessoa</label>
<Select
value={getParamValue("payer")}
onValueChange={(value) =>

View File

@@ -109,7 +109,7 @@ export function TransactionsExport({
"Valor",
"Category",
"Conta/Cartão",
"Payer",
"Pessoa",
];
const rows: string[][] = [];
@@ -169,7 +169,7 @@ export function TransactionsExport({
"Valor",
"Category",
"Conta/Cartão",
"Payer",
"Pessoa",
];
const rows: (string | number)[][] = [];
@@ -277,7 +277,7 @@ export function TransactionsExport({
"Valor",
"Categoria",
"Conta/Cartão",
"Payer",
"Pessoa",
],
];
@@ -317,7 +317,7 @@ export function TransactionsExport({
5: { cellWidth: 24 }, // Valor
6: { cellWidth: 30 }, // Categoria
7: { cellWidth: 30 }, // Conta/Cartão
8: { cellWidth: 31 }, // Payer
8: { cellWidth: 31 }, // Pessoa
},
didParseCell: (cellData) => {
if (cellData.section === "body" && cellData.column.index === 5) {