diff --git a/packages/webui/package.json b/packages/webui/package.json
index 1da50bf..b47c5c7 100644
--- a/packages/webui/package.json
+++ b/packages/webui/package.json
@@ -10,6 +10,10 @@
},
"dependencies": {
"@effect/schema": "^0.68.17",
+ "@emotion/react": "^11.11.4",
+ "@emotion/styled": "^11.11.5",
+ "@mui/icons-material": "^5.16.1",
+ "@mui/material": "^5.16.1",
"@tanstack/react-query": "4",
"@tanstack/react-router": "^1.44.2",
"@thilawyn/thilalib": "^0.1.5",
diff --git a/packages/webui/src/routes/index.lazy.tsx b/packages/webui/src/routes/index.lazy.tsx
index 02682ee..1aad391 100644
--- a/packages/webui/src/routes/index.lazy.tsx
+++ b/packages/webui/src/routes/index.lazy.tsx
@@ -31,6 +31,7 @@ export const Index = observer(() => {
}
})
+
return (
{todos.map(todo => (
diff --git a/packages/webui/src/todo/VTodo.tsx b/packages/webui/src/todo/VTodo.tsx
index f0e0217..076b788 100644
--- a/packages/webui/src/todo/VTodo.tsx
+++ b/packages/webui/src/todo/VTodo.tsx
@@ -1,6 +1,15 @@
+import { Schema as S } from "@effect/schema"
+import { ArrowUpward } from "@mui/icons-material"
+import { JsonifiableTodo } from "@todo-tests/common/data"
import { observer } from "mobx-react-lite"
-import { Card } from "primereact/card"
+import { Button } from "primereact/button"
import { Todo } from "../data"
+import { trpc } from "../trpc/trpc"
+
+
+const encodeTodo = S.encodeSync(
+ JsonifiableTodo.pipe(S.compose(Todo))
+)
export interface VTodoProps {
@@ -10,10 +19,24 @@ export interface VTodoProps {
export const VTodo = observer(({ todo }: VTodoProps) => {
+ const updateTodo = trpc.todos.update.useMutation()
+
+
return (
-
+
{todo.content}
-
+
+
+ }
+
+ onClick={() => updateTodo.mutate(encodeTodo(todo))}
+ />
+
+
)
})