diff --git a/src/root.tsx b/src/root.tsx
index f854b94..dc29bda 100644
--- a/src/root.tsx
+++ b/src/root.tsx
@@ -4,11 +4,25 @@ import { NavLink, Outlet } from "react-router";
export default function App() {
return (
<>
-
Personal Finance
-
-
+
+ Personal Finance
+
+
+
+
+
>
);
}
diff --git a/src/routes.ts b/src/routes.ts
index 2646ee8..a372e34 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -1,6 +1,10 @@
import { createBrowserRouter } from "react-router";
-import Transactions, { loader } from "./routes/transactions";
import App from "./root";
+import Banks, { loader as banksLoader } from "./routes/banks";
+import Categories, { loader as categoriesLoader } from "./routes/categories";
+import Transactions, {
+ loader as transactionsLoader,
+} from "./routes/transactions";
export const router = createBrowserRouter([
{
@@ -10,7 +14,17 @@ export const router = createBrowserRouter([
{
path: "transactions",
Component: Transactions,
- loader: loader,
+ loader: transactionsLoader,
+ },
+ {
+ path: "banks",
+ Component: Banks,
+ loader: banksLoader,
+ },
+ {
+ path: "categories",
+ Component: Categories,
+ loader: categoriesLoader,
},
],
},
diff --git a/src/routes/banks.tsx b/src/routes/banks.tsx
new file mode 100644
index 0000000..67bdf6b
--- /dev/null
+++ b/src/routes/banks.tsx
@@ -0,0 +1,33 @@
+import { useLoaderData } from "react-router";
+
+export async function loader() {
+ return await fetch(`http://localhost:9000/banks`).then((response) => {
+ return response.json();
+ });
+}
+
+export default function Banks() {
+ const data: {
+ id: string;
+ name: string;
+ }[] = useLoaderData();
+
+ return (
+
+
+
+ | id |
+ name |
+
+
+
+ {data.map((t) => (
+
+ | {t.id} |
+ {t.name} |
+
+ ))}
+
+
+ );
+}
diff --git a/src/routes/categories.tsx b/src/routes/categories.tsx
new file mode 100644
index 0000000..f1e1f49
--- /dev/null
+++ b/src/routes/categories.tsx
@@ -0,0 +1,33 @@
+import { useLoaderData } from "react-router";
+
+export async function loader() {
+ return await fetch(`http://localhost:9000/categories`).then((response) => {
+ return response.json();
+ });
+}
+
+export default function Categories() {
+ const data: {
+ name: string;
+ group: { name: string } | undefined;
+ }[] = useLoaderData();
+
+ return (
+
+
+
+ | name |
+ group |
+
+
+
+ {data.map((t) => (
+
+ | {t.name} |
+ {t.group?.name} |
+
+ ))}
+
+
+ );
+}
diff --git a/src/routes/transactions.tsx b/src/routes/transactions.tsx
index 803c2f7..58ac78d 100644
--- a/src/routes/transactions.tsx
+++ b/src/routes/transactions.tsx
@@ -7,7 +7,7 @@ export async function loader() {
}
export default function Transactions() {
- const transactions: {
+ const data: {
id: number;
date: string;
description: string;
@@ -24,7 +24,7 @@ export default function Transactions() {
- {transactions.map((t) => (
+ {data.map((t) => (
| {t.date} |
{t.description} |