diff options
Diffstat (limited to 'packages/desktop/src/context/layout.tsx')
| -rw-r--r-- | packages/desktop/src/context/layout.tsx | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/packages/desktop/src/context/layout.tsx b/packages/desktop/src/context/layout.tsx new file mode 100644 index 000000000..9e4af90aa --- /dev/null +++ b/packages/desktop/src/context/layout.tsx @@ -0,0 +1,52 @@ +import { createStore } from "solid-js/store" +import { createMemo } from "solid-js" +import { createSimpleContext } from "./helper" +import { makePersisted } from "@solid-primitives/storage" + +export const { use: useLayout, provider: LayoutProvider } = createSimpleContext({ + name: "Layout", + init: () => { + const [store, setStore] = makePersisted( + createStore({ + sidebar: { + opened: true, + width: 280, + }, + review: { + state: "pane" as "pane" | "tab", + }, + }), + { + name: "__default-layout", + }, + ) + + return { + sidebar: { + opened: createMemo(() => store.sidebar.opened), + open() { + setStore("sidebar", "opened", true) + }, + close() { + setStore("sidebar", "opened", false) + }, + toggle() { + setStore("sidebar", "opened", (x) => !x) + }, + width: createMemo(() => store.sidebar.width), + resize(width: number) { + setStore("sidebar", "width", width) + }, + }, + review: { + state: createMemo(() => store.review?.state ?? "closed"), + pane() { + setStore("review", "state", "pane") + }, + tab() { + setStore("review", "state", "tab") + }, + }, + } + }, +}) |
