summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context/layout.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-18 11:00:27 -0600
committeropencode <[email protected]>2025-11-18 17:07:34 +0000
commitfc5fc2c570e6ac5a6f9647080b80f7fec0c4b605 (patch)
treea3971bfbe17308df9f2d3e1771c0ab544900c099 /packages/desktop/src/context/layout.tsx
parent4069999b782cc00d4e707f5eca32082bdfad45bc (diff)
downloadopencode-fc5fc2c570e6ac5a6f9647080b80f7fec0c4b605.tar.gz
opencode-fc5fc2c570e6ac5a6f9647080b80f7fec0c4b605.zip
wip(desktop): new layout work
Diffstat (limited to 'packages/desktop/src/context/layout.tsx')
-rw-r--r--packages/desktop/src/context/layout.tsx25
1 files changed, 24 insertions, 1 deletions
diff --git a/packages/desktop/src/context/layout.tsx b/packages/desktop/src/context/layout.tsx
index 9e4af90aa..d6edd84d1 100644
--- a/packages/desktop/src/context/layout.tsx
+++ b/packages/desktop/src/context/layout.tsx
@@ -2,12 +2,15 @@ import { createStore } from "solid-js/store"
import { createMemo } from "solid-js"
import { createSimpleContext } from "./helper"
import { makePersisted } from "@solid-primitives/storage"
+import { useGlobalSync } from "./global-sync"
export const { use: useLayout, provider: LayoutProvider } = createSimpleContext({
name: "Layout",
init: () => {
+ const globalSync = useGlobalSync()
const [store, setStore] = makePersisted(
createStore({
+ projects: [] as { directory: string; expanded: boolean }[],
sidebar: {
opened: true,
width: 280,
@@ -17,11 +20,31 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
},
}),
{
- name: "__default-layout",
+ name: "___default-layout",
},
)
return {
+ projects: {
+ list: createMemo(() =>
+ globalSync.data.defaultProject
+ ? [{ directory: globalSync.data.defaultProject!.worktree, expanded: true }, ...store.projects]
+ : store.projects,
+ ),
+ open(directory: string) {
+ if (store.projects.find((x) => x.directory === directory)) return
+ setStore("projects", (x) => [...x, { directory, expanded: true }])
+ },
+ close(directory: string) {
+ setStore("projects", (x) => x.filter((x) => x.directory !== directory))
+ },
+ expand(directory: string) {
+ setStore("projects", (x) => x.map((x) => (x.directory === directory ? { ...x, expanded: true } : x)))
+ },
+ collapse(directory: string) {
+ setStore("projects", (x) => x.map((x) => (x.directory === directory ? { ...x, expanded: false } : x)))
+ },
+ },
sidebar: {
opened: createMemo(() => store.sidebar.opened),
open() {