import { z } from "zod"; import { THEMES } from "@/lib/themes"; const NamePartSchema = z.string().trim().max(60, "Must be 60 characters or fewer"); export const ProfileNameSchema = z.object({ firstName: NamePartSchema, lastName: NamePartSchema, }); export type ProfileName = z.infer; // The global theme preference stored on the profile row (User.theme): // one of the real themes, or "system" = follow the OS light/dark setting. // Written only by saveUserTheme (lib/actions/profile.ts), read by the // root layout (app/layout.tsx) and the theme provider -- the cast in the // latter two places is safe because of this schema. export const ThemeSchema = z.enum([...THEMES, "system"]); export type ThemePreference = z.infer;