style(tipografia): adiciona fonte America Medium e padroniza pesos de texto

Adiciona os arquivos `america-medium.woff2` e `america-bold.woff2` e
registra o weight 500 no `font_index.ts`.

Padroniza o uso de `font-medium` em substituição a `font-semibold` e
`font-bold` em títulos, valores monetários e rótulos de destaque em
todos os componentes do app, landing page e componentes de UI base.

`Card` ganha `hover:border-primary/40` e `CardTitle` recebe `text-base`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-04-01 14:14:55 +00:00
parent e32fb85006
commit 0514efb1c4
85 changed files with 195 additions and 200 deletions

View File

@@ -97,7 +97,7 @@ export function BillPaymentDialog({
<p className="mb-1 text-xs font-medium text-muted-foreground uppercase tracking-wide">
Boleto
</p>
<p className="text-base font-semibold text-foreground">
<p className="text-base font-medium text-foreground">
{bill.name}
</p>
</div>
@@ -107,24 +107,24 @@ export function BillPaymentDialog({
<div className="rounded-xl border p-3">
<div className="mb-1.5 flex items-center gap-1.5 text-muted-foreground">
<RiMoneyDollarCircleLine className="size-3.5" />
<span className="text-[11px] font-semibold uppercase tracking-wide">
<span className="text-xs font-medium uppercase tracking-wide">
Valor
</span>
</div>
<MoneyValues
amount={bill.amount}
className="text-lg font-bold"
className="text-lg font-medium"
/>
</div>
<div className="rounded-xl border p-3">
<div className="mb-1.5 flex items-center gap-1.5 text-muted-foreground">
<RiCalendarLine className="size-3.5" />
<span className="text-[11px] font-semibold uppercase tracking-wide">
<span className="text-xs font-medium uppercase tracking-wide">
Vencimento
</span>
</div>
<p className="text-sm font-semibold text-foreground">
<p className="text-sm font-medium text-foreground">
{dueLabel?.replace("Vencimento: ", "") ?? "—"}
</p>
</div>

View File

@@ -343,10 +343,10 @@ export function CategoryBreakdownWidgetView({
<div className="rounded-lg border bg-background p-2 shadow-sm">
<div className="grid gap-2">
<div className="flex flex-col">
<span className="text-[0.70rem] uppercase text-muted-foreground">
<span className="text-xs uppercase text-muted-foreground">
{entry.name}
</span>
<span className="font-bold text-foreground">
<span className="font-medium text-foreground">
{formatCurrency(entry.value)}
</span>
<span className="text-xs text-muted-foreground">

View File

@@ -337,7 +337,7 @@ export function DashboardGridEditable({
<div className="absolute inset-0 z-10 bg-background/50 backdrop-blur-[1px] rounded-lg border-2 border-dashed border-primary/50 flex items-center justify-center">
<div className="flex flex-col items-center gap-2">
<RiDragMove2Line className="size-8 text-primary" />
<span className="text-xs font-bold">
<span className="text-xs font-medium">
Arraste para mover
</span>
<Button

View File

@@ -134,12 +134,12 @@ export function DashboardMetricsCards({ metrics }: DashboardMetricsCardsProps) {
<CardContent className="flex flex-col gap-3">
<div className="flex flex-wrap items-center justify-between gap-2 mt-1">
<MoneyValues
className="text-[1.55rem] leading-none font-medium"
className="text-2xl leading-none"
amount={metric.current}
/>
<div
className={cn(
"inline-flex items-center gap-1 text-xs font-medium",
"inline-flex items-center gap-1 text-xs ",
trendBadgeClass,
)}
>
@@ -150,7 +150,7 @@ export function DashboardMetricsCards({ metrics }: DashboardMetricsCardsProps) {
<div className="text-xs text-muted-foreground">
<MoneyValues
className="inline text-xs font-medium text-muted-foreground"
className="inline text-xs text-muted-foreground"
amount={metric.previous}
/>
<span className="ml-1">no mês anterior</span>

View File

@@ -8,7 +8,7 @@ export function DashboardWelcome({ name }: { name?: string | null }) {
return (
<section className="py-4">
<div className="tracking-tight">
<h1 className="text-xl">
<h1 className="text-xl font-medium">
{greeting}, {displayName}
</h1>
<h2 className="text-sm mt-1 text-muted-foreground">{formattedDate}</h2>

View File

@@ -137,7 +137,7 @@ export function InstallmentAnalysisPage({
</p>
<MoneyValues
amount={grandTotal}
className="text-3xl font-bold text-primary"
className="text-3xl font-medium text-primary"
/>
<p className="text-sm text-muted-foreground">
{selectedCount} {selectedCount === 1 ? "parcela" : "parcelas"}{" "}

View File

@@ -95,7 +95,7 @@ export function InstallmentGroupCard({
<span className="text-xs text-muted-foreground">Total:</span>
<MoneyValues
amount={totalAmount}
className="text-base font-bold"
className="text-base font-medium"
/>
</div>
<div className="flex items-center gap-1">

View File

@@ -100,7 +100,7 @@ export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) {
)}
</p>
</div>
<div className="text-sm font-semibold text-foreground">
<div className="text-sm font-medium text-foreground">
<MoneyValues amount={share.amount} />
</div>
</li>

View File

@@ -46,7 +46,7 @@ export function InvoiceLogo({
) : (
<span
className={cn(
"text-sm font-semibold uppercase text-muted-foreground",
"text-sm font-medium uppercase text-muted-foreground",
tone === "accent" && "text-primary",
fallbackClassName,
)}

View File

@@ -110,10 +110,10 @@ export function InvoicePaymentDialog({
fallbackClassName="text-xs"
/>
<div className="min-w-0">
<p className="text-[11px] font-medium text-muted-foreground uppercase tracking-wide">
<p className="text-xs font-medium text-muted-foreground uppercase tracking-wide">
Cartão
</p>
<p className="truncate text-base font-semibold text-foreground">
<p className="truncate text-base font-medium text-foreground">
{invoice.cardName}
</p>
</div>
@@ -124,26 +124,26 @@ export function InvoicePaymentDialog({
<div className="rounded-xl border p-3">
<div className="mb-1.5 flex items-center gap-1.5 text-muted-foreground">
<RiMoneyDollarCircleLine className="size-3.5" />
<span className="text-[11px] font-semibold uppercase tracking-wide">
<span className="text-xs font-medium uppercase tracking-wide">
Total da fatura
</span>
</div>
<MoneyValues
amount={Math.abs(invoice.totalAmount)}
className="text-lg font-bold"
className="text-lg font-medium"
/>
</div>
<div className="rounded-xl border p-3">
<div className="mb-1.5 flex items-center gap-1.5 text-muted-foreground">
<RiCalendarLine className="size-3.5" />
<span className="text-[11px] font-semibold uppercase tracking-wide">
<span className="text-xs font-medium uppercase tracking-wide">
{invoice.paymentStatus === INVOICE_PAYMENT_STATUS.PAID
? "Pago em"
: "Vencimento"}
</span>
</div>
<p className="text-sm font-semibold text-foreground">
<p className="text-sm font-medium text-foreground">
{invoice.paymentStatus === INVOICE_PAYMENT_STATUS.PAID
? (paymentInfo?.label ?? "—")
: (dueInfo?.label ?? "—")}

View File

@@ -33,7 +33,7 @@ export function NoteListItem({
{getNoteTasksSummary(note)}
</Badge>
{createdAtLabel ? (
<p className="truncate text-[11px] text-muted-foreground">
<p className="truncate text-xs text-muted-foreground">
{createdAtLabel}
</p>
) : null}

View File

@@ -130,7 +130,7 @@ export function PurchasesByCategoryWidget({
<SelectContent>
{Object.entries(categoriesByType).map(([type, categories]) => (
<div key={type}>
<div className="px-2 py-1.5 text-xs font-semibold text-muted-foreground">
<div className="px-2 py-1.5 text-xs font-medium text-muted-foreground">
{CATEGORY_TYPE_LABEL[
type as keyof typeof CATEGORY_TYPE_LABEL
] ?? type}