starling-devex 0.1.2

Starling: a local dev orchestrator with a central daemon, shared named-URL proxy, and a k9s-style TUI (a Rust port of Tilt + portless)
import React, { PropsWithChildren, useContext, useState } from "react"

export type SidebarContext = {
  isSidebarOpen: boolean
  setSidebarOpen: () => void
  setSidebarClosed: () => void
}

const sidebarContext = React.createContext<SidebarContext>({
  isSidebarOpen: true,
  setSidebarOpen: () => {},
  setSidebarClosed: () => {},
})

export function useSidebarContext(): SidebarContext {
  return useContext(sidebarContext)
}

export function SidebarContextProvider(
  props: PropsWithChildren<{ sidebarClosedForTesting?: boolean }>
) {
  const [isSidebarOpen, setIsSidebarOpen] = useState<boolean>(
    !props.sidebarClosedForTesting
  )

  function setSidebarOpen() {
    setIsSidebarOpen(true)
  }

  function setSidebarClosed() {
    setIsSidebarOpen(false)
  }

  return (
    <sidebarContext.Provider
      value={{
        isSidebarOpen: isSidebarOpen,
        setSidebarOpen: setSidebarOpen,
        setSidebarClosed: setSidebarClosed,
      }}
    >
      {props.children}
    </sidebarContext.Provider>
  )
}