import { createEffect, createMemo, For, Show, type Accessor, type JSX } from "solid-js" import { DragDropProvider, DragDropSensors, DragOverlay, SortableProvider, closestCenter, type DragEvent, } from "@thisbeyond/solid-dnd" import { ConstrainDragXAxis } from "@/utils/solid-dnd" import { IconButton } from "@opencode-ai/ui/icon-button" import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip" import { type LocalProject } from "@/context/layout" export const SidebarContent = (props: { mobile?: boolean opened: Accessor aimMove: (event: MouseEvent) => void projects: Accessor renderProject: (project: LocalProject) => JSX.Element handleDragStart: (event: unknown) => void handleDragEnd: () => void handleDragOver: (event: DragEvent) => void openProjectLabel: JSX.Element openProjectKeybind: Accessor onOpenProject: () => void renderProjectOverlay: () => JSX.Element settingsLabel: Accessor settingsKeybind: Accessor onOpenSettings: () => void helpLabel: Accessor onOpenHelp: () => void renderPanel: () => JSX.Element }): JSX.Element => { const expanded = createMemo(() => !!props.mobile || props.opened()) const placement = () => (props.mobile ? "bottom" : "right") let panel: HTMLDivElement | undefined createEffect(() => { const el = panel if (!el) return if (expanded()) { el.removeAttribute("inert") return } el.setAttribute("inert", "") }) return (
p.worktree)}> {(project) => props.renderProject(project)} {props.openProjectLabel} {props.openProjectKeybind()}
} >
{props.renderProjectOverlay()}
{ panel = el }} classList={{ "flex-1 flex h-full min-h-0 min-w-0 overflow-hidden": true, "pointer-events-none": !expanded() }} aria-hidden={!expanded()} > {props.renderPanel()}
) }