import { TextAttributes } from "@opentui/core" import { createStore } from "solid-js/store" import { For } from "solid-js" import { useTheme } from "../context/theme" import { useDialog } from "../ui/dialog" import { useBindings } from "../keymap" 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 } useBindings(() => ({ bindings: [ { key: "return", desc: "Confirm workspace option", group: "Dialog", cmd: () => void confirm() }, { key: "left", desc: "Cancel workspace restore", group: "Dialog", cmd: () => setStore("active", "cancel") }, { key: "right", desc: "Restore workspace", group: "Dialog", cmd: () => 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} )} ) }