Shared layout, tabs, and sidebar timer; user onboarding and registration polish; settings danger zone and data export; chart and tRPC perf fixes; migrations for onboarding and dropped appearance columns. Co-authored-by: Cursor <cursoragent@cursor.com>
29 lines
899 B
TypeScript
29 lines
899 B
TypeScript
import { z } from "zod";
|
|
|
|
export const colorModeValues = ["light", "dark", "system"] as const;
|
|
export const pdfTemplateValues = ["classic", "minimal"] as const;
|
|
|
|
export const colorModeSchema = z.enum(colorModeValues);
|
|
export const pdfTemplateSchema = z.enum(pdfTemplateValues);
|
|
|
|
export type ColorMode = z.infer<typeof colorModeSchema>;
|
|
export type PdfTemplate = z.infer<typeof pdfTemplateSchema>;
|
|
|
|
export const defaultColorMode: ColorMode = "system";
|
|
|
|
export const defaultPdfSettings = {
|
|
pdfTemplate: "classic" as PdfTemplate,
|
|
pdfAccentColor: "#111827",
|
|
pdfFooterText: "Professional Invoicing",
|
|
pdfShowLogo: true,
|
|
pdfShowPageNumbers: true,
|
|
};
|
|
|
|
export function isColorMode(value: unknown): value is ColorMode {
|
|
return colorModeSchema.safeParse(value).success;
|
|
}
|
|
|
|
export function isPdfTemplate(value: unknown): value is PdfTemplate {
|
|
return pdfTemplateSchema.safeParse(value).success;
|
|
}
|