import { useEffect, useState } from "react"; import { Input, Button, ButtonGroup, Card, CardBody, CardHeader, Divider, 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]} itemClasses={{ base: "data-[selected=true]:bg-gray-200" }} topContent={ } > {([runbook, info]) => ( { setCurrentRunbook(runbook.id); }} textValue={runbook.name || "Untitled"} endContent={ 0 ? {} : { display: "none", } } > { await Runbook.delete(runbook.id); refreshRunbooks(); }} > Delete } >
{runbook.name || "Untitled"}
{DateTime.fromJSDate(runbook.updated).toLocaleString( DateTime.DATETIME_SIMPLE, )}
)}
); }; export default NoteSidebar;