summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context/layout.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-14 12:38:52 -0600
committeropencode <[email protected]>2025-11-18 17:07:34 +0000
commit4069999b782cc00d4e707f5eca32082bdfad45bc (patch)
treed5c13cdd361fc79b14250b4b426a0a1195f7a01c /packages/desktop/src/context/layout.tsx
parent5ba9b47b3c87dfb044c30857e56959c8eff0c8c1 (diff)
downloadopencode-4069999b782cc00d4e707f5eca32082bdfad45bc.tar.gz
opencode-4069999b782cc00d4e707f5eca32082bdfad45bc.zip
wip(desktop): new layout work
Diffstat (limited to 'packages/desktop/src/context/layout.tsx')
-rw-r--r--packages/desktop/src/context/layout.tsx52
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")
+ },
+ },
+ }
+ },
+})