feat: amplia opcoes de fontes e normaliza preferencias

This commit is contained in:
Felipe Coutinho
2026-03-06 13:59:12 +00:00
parent 09923ece0a
commit 0e4dbe6a3f
19 changed files with 74 additions and 130 deletions

View File

@@ -10,6 +10,7 @@ import { account, pagadores, tokensApi } from "@/db/schema";
import { auth } from "@/lib/auth/config";
import { db, schema } from "@/lib/db";
import { PAGADOR_ROLE_ADMIN } from "@/lib/pagadores/constants";
import { DEFAULT_FONT_KEY, FONT_KEYS } from "@/public/fonts/font_index";
type ActionResponse<T = void> = {
success: boolean;
@@ -52,28 +53,12 @@ const deleteAccountSchema = z.object({
}),
});
const VALID_FONTS = [
"ai-sans",
"anthropic-sans",
"fira-code",
"fira-sans",
"geist",
"ibm-plex-mono",
"inter",
"jetbrains-mono",
"reddit-sans",
"roboto",
"sf-pro-display",
"sf-pro-rounded",
"ubuntu",
] as const;
const updatePreferencesSchema = z.object({
disableMagnetlines: z.boolean(),
extratoNoteAsColumn: z.boolean(),
lancamentosColumnOrder: z.array(z.string()).nullable(),
systemFont: z.enum(VALID_FONTS).default("ai-sans"),
moneyFont: z.enum(VALID_FONTS).default("ai-sans"),
systemFont: z.enum(FONT_KEYS).default(DEFAULT_FONT_KEY),
moneyFont: z.enum(FONT_KEYS).default(DEFAULT_FONT_KEY),
});
// Actions

View File

@@ -1,13 +1,14 @@
import { desc, eq } from "drizzle-orm";
import { tokensApi } from "@/db/schema";
import { db, schema } from "@/lib/db";
import { type FontKey, normalizeFontKey } from "@/public/fonts/font_index";
export interface UserPreferences {
disableMagnetlines: boolean;
extratoNoteAsColumn: boolean;
lancamentosColumnOrder: string[] | null;
systemFont: string;
moneyFont: string;
systemFont: FontKey;
moneyFont: FontKey;
}
export interface ApiToken {
@@ -43,7 +44,13 @@ export async function fetchUserPreferences(
.where(eq(schema.preferenciasUsuario.userId, userId))
.limit(1);
return result[0] || null;
if (!result[0]) return null;
return {
...result[0],
systemFont: normalizeFontKey(result[0].systemFont),
moneyFont: normalizeFontKey(result[0].moneyFont),
};
}
export async function fetchApiTokens(userId: string): Promise<ApiToken[]> {

View File

@@ -12,6 +12,7 @@ import { UpdatePasswordForm } from "@/components/ajustes/update-password-form";
import { Card } from "@/components/ui/card";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { auth } from "@/lib/auth/config";
import { DEFAULT_FONT_KEY } from "@/public/fonts/font_index";
import { fetchAjustesPageData } from "./data";
export default async function Page() {
@@ -75,8 +76,8 @@ export default async function Page() {
lancamentosColumnOrder={
userPreferences?.lancamentosColumnOrder ?? null
}
systemFont={userPreferences?.systemFont ?? "ai-sans"}
moneyFont={userPreferences?.moneyFont ?? "ai-sans"}
systemFont={userPreferences?.systemFont ?? DEFAULT_FONT_KEY}
moneyFont={userPreferences?.moneyFont ?? DEFAULT_FONT_KEY}
/>
</div>
</Card>