diff --git a/packages/reffuse/src/ReffuseContext.tsx b/packages/reffuse/src/ReffuseContext.tsx new file mode 100644 index 0000000..fbc4b46 --- /dev/null +++ b/packages/reffuse/src/ReffuseContext.tsx @@ -0,0 +1,32 @@ +import { Context, Layer } from "effect" +import React from "react" + + +export interface ReffuseContext { + readonly Context: React.Context> + readonly Provider: ReffuseContextReactProvider +} + +export type ReffuseContextReactProvider = React.FC<{ + readonly layer: Layer.Layer + readonly children?: React.ReactNode +}> + +export type R = T extends ReffuseContext ? R : never + + +export function make(): ReffuseContext { + const Context = React.createContext>(null!) + + return { + Context, + + Provider: function ReffuseContextReactProvider(props) { + return ( + + ) + }, + } +} diff --git a/packages/reffuse/src/ReffuseRuntime.ts b/packages/reffuse/src/ReffuseRuntime.ts new file mode 100644 index 0000000..e987872 --- /dev/null +++ b/packages/reffuse/src/ReffuseRuntime.ts @@ -0,0 +1,5 @@ +import type { Runtime } from "effect" +import React from "react" + + +export interface ReffuseRuntime extends React.Context> {}