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

@@ -34,7 +34,7 @@ export function CalculatorDisplay({
<div className="mt-auto flex items-end justify-end gap-2">
<div
className={cn(
"truncate text-right font-semibold tracking-tight tabular-nums leading-none transition-all",
"truncate text-right font-medium tracking-tight tabular-nums leading-none transition-all",
isResultView ? "text-2xl" : "text-3xl",
)}
>

View File

@@ -32,7 +32,7 @@ export function CalculatorKeypad({
variant={isActive ? "default" : (btn.variant ?? "outline")}
onClick={btn.onClick}
className={cn(
"h-12 text-base font-semibold",
"h-12 text-base font-medium",
btn.colSpan === 2 && "col-span-2",
btn.colSpan === 3 && "col-span-3",
isActive &&

View File

@@ -23,7 +23,7 @@ export function EstablishmentLogo({
return (
<div
className={cn(
"flex shrink-0 items-center justify-center rounded-full font-bold",
"flex shrink-0 items-center justify-center rounded-full font-medium",
className,
)}
style={{

View File

@@ -47,7 +47,7 @@ export default function MonthNavigation() {
<div className="flex items-center">
<div
className="mx-1 space-x-1 capitalize font-semibold"
className="mx-1 space-x-1 capitalize font-medium"
aria-current={!isDifferentFromCurrent ? "date" : undefined}
aria-label={`Período selecionado: ${currentMonthLabel}`}
>

View File

@@ -96,7 +96,7 @@ export function FeedbackDialogBody({ onClose }: { onClose?: () => void }) {
<Icon className={cn("h-5 w-5", item.color)} />
</div>
<div className="flex-1 text-left space-y-1">
<h3 className="font-semibold text-sm flex items-center gap-2">
<h3 className="font-medium text-sm flex items-center gap-2">
{item.title}
<RiExternalLinkLine className="h-3.5 w-3.5 text-muted-foreground" />
</h3>

View File

@@ -53,7 +53,7 @@ export function MobileLink({
<span className="flex-1 flex flex-col gap-0.5">
<span>{children}</span>
{description && (
<span className="text-[11px] text-muted-foreground leading-snug">
<span className="text-xs text-muted-foreground leading-snug">
{description}
</span>
)}
@@ -69,7 +69,7 @@ export function MobileLink({
export function MobileSectionLabel({ label }: { label: string }) {
return (
<p className="mt-3 mb-1 px-3 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground">
<p className="mt-3 mb-1 px-3 text-xs font-medium uppercase tracking-wider text-muted-foreground">
{label}
</p>
);

View File

@@ -42,11 +42,7 @@ export function NavDropdown({ items }: NavDropdownProps) {
{item.icon}
</span>
<span className="flex flex-col min-w-0">
<span
className={cn("font-medium", isActive && "font-semibold")}
>
{item.label}
</span>
<span className="font-medium">{item.label}</span>
{item.description && (
<span className="text-xs text-muted-foreground truncate lowercase">
{item.description}

View File

@@ -47,7 +47,7 @@ export function NavToolsDropdown({ onOpenCalculator }: NavToolsDropdownProps) {
{privacyMode && (
<Badge
variant="secondary"
className="text-[10px] px-1.5 py-0 h-4 text-success"
className="text-xs px-1.5 py-0 h-4 text-success"
>
Ativo
</Badge>
@@ -100,7 +100,7 @@ export function MobileTools({ onClose, onOpenCalculator }: MobileToolsProps) {
{privacyMode && (
<Badge
variant="secondary"
className="text-[10px] px-1.5 py-0 h-4 text-success"
className="text-xs px-1.5 py-0 h-4 text-success"
>
Ativo
</Badge>

View File

@@ -91,7 +91,7 @@ function SectionLabel({
return (
<div className="flex items-center gap-1.5 p-2 first:pt-1">
<span className="text-muted-foreground">{icon}</span>
<span className="text-[11px] font-semibold uppercase tracking-wide text-muted-foreground">
<span className="text-xs font-medium uppercase tracking-wide text-muted-foreground">
{title}
</span>
</div>

View File

@@ -28,7 +28,7 @@ export function NotificationBellHeader({
}: NotificationBellHeaderProps) {
return (
<div className="border-b px-3 py-2.5">
<div className="flex items-center justify-between gap-2 text-sm font-semibold">
<div className="flex items-center justify-between gap-2 text-sm font-medium">
<span>Notificações</span>
{hasAnySourceItems ? (
<Badge variant="outline" className="text-xs font-medium">

View File

@@ -9,11 +9,11 @@ export default function PageDescription({
}) {
return (
<div>
<h1 className="text-2xl font-semibold flex items-center gap-1 tracking-tighter">
<h1 className="text-xl font-medium flex items-center gap-1 tracking-tight">
<span className="text-primary">{icon}</span>
{title}
</h1>
<h2 className="text-sm max-w-2xl text-muted-foreground leading-relaxed mt-2">
<h2 className="text-sm max-w-2xl text-muted-foreground leading-relaxed mt-1.5">
{subtitle}
</h2>
</div>

View File

@@ -89,7 +89,7 @@ export function PaymentSuccess({
</div>
<div className="space-y-2">
<DialogTitle className="text-xl font-bold">{title}</DialogTitle>
<DialogTitle className="text-xl font-medium">{title}</DialogTitle>
<DialogDescription className="text-sm leading-relaxed">
{description}
</DialogDescription>

View File

@@ -172,7 +172,7 @@ function CategoryReportTableSkeleton() {
<TableFooter>
<TableRow>
{/* Total label */}
<TableCell className="font-bold">
<TableCell className="font-medium">
<Skeleton className="h-5 w-16 rounded-md bg-foreground/10" />
</TableCell>
{/* Period totals */}

View File

@@ -98,7 +98,7 @@ function AlertDialogTitle({
return (
<AlertDialogPrimitive.Title
data-slot="alert-dialog-title"
className={cn("text-lg font-semibold", className)}
className={cn("text-lg font-medium", className)}
{...props}
/>
);

View File

@@ -7,7 +7,7 @@ function Card({ className, ...props }: React.ComponentProps<"div">) {
<div
data-slot="card"
className={cn(
"bg-card text-card-foreground flex flex-col gap-4 border py-6 rounded-lg",
"bg-card text-card-foreground flex flex-col gap-4 border py-6 rounded-lg hover:border-primary/40",
className,
)}
{...props}
@@ -32,7 +32,7 @@ function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="card-title"
className={cn("leading-none font-semibold", className)}
className={cn("text-base leading-none font-medium", className)}
{...props}
/>
);

View File

@@ -106,7 +106,7 @@ function DialogTitle({
return (
<DialogPrimitive.Title
data-slot="dialog-title"
className={cn("text-lg leading-none font-semibold", className)}
className={cn("text-lg leading-none font-medium", className)}
{...props}
/>
);

View File

@@ -102,7 +102,7 @@ function DrawerTitle({
return (
<DrawerPrimitive.Title
data-slot="drawer-title"
className={cn("text-foreground font-semibold", className)}
className={cn("text-foreground font-medium", className)}
{...props}
/>
);

View File

@@ -123,7 +123,7 @@ function MonthCal({
return (
<>
<div className="flex justify-center pt-1 relative items-center">
<div className="text-sm font-bold">
<div className="text-sm font-medium">
{callbacks?.yearLabel ? callbacks?.yearLabel(menuYear) : menuYear}
</div>
<div className="space-x-1 flex items-center">

View File

@@ -107,7 +107,7 @@ function SheetTitle({
return (
<SheetPrimitive.Title
data-slot="sheet-title"
className={cn("text-foreground font-semibold", className)}
className={cn("text-foreground font-medium", className)}
{...props}
/>
);

View File

@@ -42,7 +42,7 @@ function TabsTrigger({
<TabsPrimitive.Trigger
data-slot="tabs-trigger"
className={cn(
"ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background text-muted-foreground data-[state=active]:border-b-primary data-[state=active]:text-foreground relative inline-flex h-9 items-center justify-center rounded-none border-b-2 border-b-transparent bg-transparent px-4 py-1 pt-2 pb-3 text-sm font-semibold whitespace-nowrap shadow-none transition-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-none",
"ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background text-muted-foreground data-[state=active]:border-b-primary data-[state=active]:text-foreground relative inline-flex h-9 items-center justify-center rounded-none border-b-2 border-b-transparent bg-transparent px-4 py-1 pt-2 pb-3 text-sm font-medium whitespace-nowrap shadow-none transition-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-none",
className,
)}
{...props}