import { TextAttributes } from "@opentui/core" import { useKeyboard } from "@opentui/solid" import { createStore } from "solid-js/store" import { For } from "solid-js" import { useTheme } from "../context/theme" import { useDialog } from "../ui/dialog" export function DialogWorkspaceUnavailable(props: { onRestore?: () => boolean | void | Promise }) { const dialog = useDialog() const { theme } = useTheme() const [store, setStore] = createStore({ active: "restore" as "cancel" | "restore", }) const options = ["cancel", "restore"] as const async function confirm() { if (store.active === "cancel") { dialog.clear() return } const result = await props.onRestore?.() if (result === false) return } useKeyboard((evt) => { if (evt.name === "return") { evt.preventDefault() evt.stopPropagation() void confirm() return } if (evt.name === "left") { evt.preventDefault() evt.stopPropagation() setStore("active", "cancel") return } if (evt.name === "right") { evt.preventDefault() evt.stopPropagation() setStore("active", "restore") } }) return ( Workspace Unavailable dialog.clear()}> esc This session is attached to a workspace that is no longer available. Would you like to restore this session into a new workspace? {(item) => ( { setStore("active", item) void confirm() }} > {item} )} ) }