diff --git a/src/app/dashboard/expenses/page.tsx b/src/app/dashboard/expenses/page.tsx
index 8d29be7..a35d7c7 100644
--- a/src/app/dashboard/expenses/page.tsx
+++ b/src/app/dashboard/expenses/page.tsx
@@ -29,7 +29,7 @@ import { NumberInput } from "~/components/ui/number-input";
import { toast } from "sonner";
import { Plus, Pencil, Trash2, Receipt } from "lucide-react";
import { formatCurrency, SUPPORTED_CURRENCIES } from "~/lib/currency";
-import { EXPENSE_CATEGORIES } from "~/server/api/routers/expenses";
+import { EXPENSE_CATEGORIES } from "~/lib/expense-categories";
interface ExpenseFormData {
date: Date;
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index f548e29..ef7e223 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,7 +1,6 @@
import "~/styles/globals.css";
import { type Metadata } from "next";
-import { Inter, Playfair_Display, Geist_Mono } from "next/font/google";
import { TRPCReactProvider } from "~/trpc/react";
import { Toaster } from "~/components/ui/sonner";
@@ -17,24 +16,6 @@ export const metadata: Metadata = {
icons: [{ rel: "icon", url: "/favicon.ico" }],
};
-const inter = Inter({
- subsets: ["latin"],
- variable: "--font-sans",
- display: "swap",
-});
-
-const playfair = Playfair_Display({
- subsets: ["latin"],
- variable: "--font-heading",
- display: "swap",
-});
-
-const geistMono = Geist_Mono({
- subsets: ["latin"],
- variable: "--font-geist-mono",
- display: "swap",
-});
-
export default function RootLayout({
children,
}: Readonly<{ children: React.ReactNode }>) {
@@ -42,7 +23,6 @@ export default function RootLayout({
diff --git a/src/lib/expense-categories.ts b/src/lib/expense-categories.ts
new file mode 100644
index 0000000..85c1833
--- /dev/null
+++ b/src/lib/expense-categories.ts
@@ -0,0 +1,11 @@
+export const EXPENSE_CATEGORIES = [
+ "Travel",
+ "Meals & Entertainment",
+ "Software & Subscriptions",
+ "Hardware & Equipment",
+ "Office Supplies",
+ "Marketing",
+ "Professional Services",
+ "Utilities",
+ "Other",
+] as const;
diff --git a/src/server/api/routers/expenses.ts b/src/server/api/routers/expenses.ts
index d9e12e6..c544080 100644
--- a/src/server/api/routers/expenses.ts
+++ b/src/server/api/routers/expenses.ts
@@ -3,18 +3,9 @@ import { eq, and, desc } from "drizzle-orm";
import { createTRPCRouter, protectedProcedure } from "../trpc";
import { expenses, clients, businesses, invoices } from "~/server/db/schema";
import { TRPCError } from "@trpc/server";
+import { EXPENSE_CATEGORIES } from "~/lib/expense-categories";
-export const EXPENSE_CATEGORIES = [
- "Travel",
- "Meals & Entertainment",
- "Software & Subscriptions",
- "Hardware & Equipment",
- "Office Supplies",
- "Marketing",
- "Professional Services",
- "Utilities",
- "Other",
-] as const;
+export { EXPENSE_CATEGORIES };
const createExpenseSchema = z.object({
date: z.date(),
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 964d096..3a7e6fc 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -84,9 +84,9 @@
--color-input: hsl(var(--input));
--color-ring: hsl(var(--ring));
- --font-sans: var(--font-sans), sans-serif;
- --font-heading: var(--font-heading), serif;
- --font-mono: var(--font-geist-mono), monospace;
+ --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
+ --font-heading: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
+ --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
diff --git a/src/trpc/react.tsx b/src/trpc/react.tsx
index 798886e..229b167 100644
--- a/src/trpc/react.tsx
+++ b/src/trpc/react.tsx
@@ -7,7 +7,6 @@ import { type inferRouterInputs, type inferRouterOutputs } from "@trpc/server";
import { useState } from "react";
import SuperJSON from "superjson";
-import { type AppRouter } from "~/server/api/root";
import { createQueryClient } from "./query-client";
let clientQueryClientSingleton: QueryClient | undefined = undefined;
@@ -22,21 +21,22 @@ const getQueryClient = () => {
return clientQueryClientSingleton;
};
-export const api = createTRPCReact
();
+// Use inline import() type to avoid pulling server modules into the client bundle
+export const api = createTRPCReact();
/**
* Inference helper for inputs.
*
* @example type HelloInput = RouterInputs['example']['hello']
*/
-export type RouterInputs = inferRouterInputs;
+export type RouterInputs = inferRouterInputs;
/**
* Inference helper for outputs.
*
* @example type HelloOutput = RouterOutputs['example']['hello']
*/
-export type RouterOutputs = inferRouterOutputs;
+export type RouterOutputs = inferRouterOutputs;
export function TRPCReactProvider(props: { children: React.ReactNode }) {
const queryClient = getQueryClient();