Flattened the sidebar tree

This commit is contained in:
Gregory Schier
2025-10-17 15:07:02 -07:00
parent 6e9b1db196
commit c34ea20406
14 changed files with 418 additions and 370 deletions

View File

@@ -1,7 +1,5 @@
import { atom, useAtomValue } from 'jotai';
import { useCallback } from 'react';
import { atom } from 'jotai';
import { atomWithKVStorage } from '../lib/atoms/atomWithKVStorage';
import { jotaiStore } from '../lib/jotai';
import { activeWorkspaceIdAtom } from './useActiveWorkspace';
function kvKey(workspaceId: string | null) {
@@ -12,18 +10,3 @@ export const sidebarCollapsedAtom = atom((get) => {
const workspaceId = get(activeWorkspaceIdAtom);
return atomWithKVStorage<Record<string, boolean>>(kvKey(workspaceId), {});
});
export function useSidebarItemCollapsed(itemId: string) {
const map = useAtomValue(useAtomValue(sidebarCollapsedAtom));
const isCollapsed = map[itemId] === true;
const toggle = useCallback(() => toggleSidebarItemCollapsed(itemId), [itemId]);
return [isCollapsed, toggle] as const;
}
export function toggleSidebarItemCollapsed(itemId: string) {
jotaiStore.set(jotaiStore.get(sidebarCollapsedAtom), (prev) => {
return { ...prev, [itemId]: !prev[itemId] };
});
}