summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-06 09:48:46 -0600
committerAdam <[email protected]>2025-11-06 09:48:51 -0600
commit6ba7c54baba355e3788e371374d26e58b60feb0d (patch)
treea69448dcdcd8e1935b2bc3c7d2344ad78f8ced75 /packages/desktop/src/context
parent146bae82cb584c253a42ed4565d423d9cded93a6 (diff)
downloadopencode-6ba7c54baba355e3788e371374d26e58b60feb0d.tar.gz
opencode-6ba7c54baba355e3788e371374d26e58b60feb0d.zip
feat(desktop): collapsible sidebar
Diffstat (limited to 'packages/desktop/src/context')
-rw-r--r--packages/desktop/src/context/local.tsx35
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/desktop/src/context/local.tsx b/packages/desktop/src/context/local.tsx
index cef6c5555..9dacc7100 100644
--- a/packages/desktop/src/context/local.tsx
+++ b/packages/desktop/src/context/local.tsx
@@ -5,6 +5,7 @@ import type { FileContent, FileNode, Model, Provider, File as FileStatus } from
import { createSimpleContext } from "./helper"
import { useSDK } from "./sdk"
import { useSync } from "./sync"
+import { makePersisted } from "@solid-primitives/storage"
export type LocalFile = FileNode &
Partial<{
@@ -456,11 +457,45 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
}
})()
+ const layout = (() => {
+ const [store, setStore] = makePersisted(
+ createStore({
+ sidebar: {
+ opened: true,
+ width: 240,
+ },
+ }),
+ {
+ name: "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)
+ },
+ },
+ }
+ })()
+
const result = {
model,
agent,
file,
context,
+ layout,
}
return result
},