Files
money/apps/tui/src/index.tsx
2025-11-17 17:17:54 -05:00

39 lines
1.0 KiB
TypeScript

import { createCliRenderer } from "@opentui/core";
import { createRoot } from "@opentui/react";
import { App, type Route } from "@money/ui";
import { ZeroProvider } from "@rocicorp/zero/react";
import { schema } from '@money/shared';
import { useState } from "react";
import { AuthClient, getAuth, layer } from "./auth";
import { Effect, Layer } from "effect";
import { BunContext } from "@effect/platform-bun";
import type { AuthData } from "./schema";
const userID = "anon";
const server = "http://laptop:4848";
function Main({ auth }: { auth: AuthData }) {
const [route, setRoute] = useState<Route>("/");
return (
<ZeroProvider {...{ userID, auth: auth.session.token, server, schema }}>
<App
auth={auth || null}
route={route}
setRoute={setRoute}
/>
</ZeroProvider>
);
}
const auth = await Effect.runPromise(
getAuth.pipe(
Effect.provide(BunContext.layer),
Effect.provide(layer()),
)
);
const renderer = await createCliRenderer();
createRoot(renderer).render(<Main auth={auth} />);