From fc5fc2c570e6ac5a6f9647080b80f7fec0c4b605 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 18 Nov 2025 11:00:27 -0600 Subject: wip(desktop): new layout work --- packages/desktop/src/context/layout.tsx | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'packages/desktop/src/context/layout.tsx') 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() { -- cgit v1.2.3