import { useEffect } from "react";
import {
Button,
ButtonGroup,
Tooltip,
Listbox,
ListboxItem,
Dropdown,
DropdownTrigger,
DropdownMenu,
DropdownItem,
Badge,
} from "@nextui-org/react";
import { EllipsisVerticalIcon } from "lucide-react";
import { DateTime } from "luxon";
import { NotebookPenIcon } from "lucide-react";
import Runbook from "@/state/runbooks/runbook";
import { AtuinState, useStore } from "@/state/store";
const NoteSidebar = () => {
const runbooks = useStore((state: AtuinState) => state.runbooks);
const refreshRunbooks = useStore(
(state: AtuinState) => state.refreshRunbooks,
);
const currentRunbook = useStore((state: AtuinState) => state.currentRunbook);
const setCurrentRunbook = useStore(
(state: AtuinState) => state.setCurrentRunbook,
);
const runbookInfo = useStore((state: AtuinState) => state.runbookInfo);
useEffect(() => {
refreshRunbooks();
}, []);
return (
{
return [runbook, runbookInfo[runbook.id]];
})}
variant="flat"
aria-label="Runbook list"
selectionMode="single"
selectedKeys={currentRunbook ? [currentRunbook] : []}
itemClasses={{ base: "data-[selected=true]:bg-gray-200" }}
topContent={
}
>
{([runbook, info]: [Runbook, { ptys: number }]) => (
{
setCurrentRunbook(runbook.id);
}}
textValue={runbook.name || "Untitled"}
endContent={
0
? {}
: {
display: "none",
}
}
>
{
await Runbook.delete(runbook.id);
if (runbook.id == currentRunbook) setCurrentRunbook("");
refreshRunbooks();
}}
>
Delete
}
>
{runbook.name || "Untitled"}
{DateTime.fromJSDate(runbook.updated).toLocaleString(
DateTime.DATETIME_SHORT,
)}
)}
);
};
export default NoteSidebar;