"use client"; import AddEvent from "@/components/Event/AddEvent"; import LocalDate from "@/components/LocalDate"; import zustand, { Availability, EventData, Task, Tasks } from "@/Zustand"; import { Add, Copy, Edit, TrashCan } from "@carbon/icons-react"; import { Button, ButtonGroup, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Select, SelectItem, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip, } from "@nextui-org/react"; import { useAsyncList } from "@react-stately/data"; import React, { Key, useState } from "react"; function availability2Tailwind(availability?: Availability) { switch (availability) { case "yes": return ""; default: return "italic"; } } function availability2Color(availability?: Availability) { switch (availability) { case "yes": return "default"; case "maybe": return "warning"; default: return "danger"; } } export default function AdminPanel() { const tasks = [ { key: "date", label: "Date" }, { key: "description", label: "Description" }, ...Tasks.map((task) => ({ label: task, key: task })), { key: "actions", label: "Action" }, ]; const list = useAsyncList({ async load() { return { items: [...zustand.getState().events], }; }, async sort({ items, sortDescriptor }) { return { items: items.sort((a, b) => { let cmp = 0; // if it is the date-column, convert to a date if (sortDescriptor.column === "date") { const first = a[sortDescriptor.column]; const second = b[sortDescriptor.column]; cmp = first < second ? -1 : 1; } if (sortDescriptor.direction === "descending") { cmp *= -1; } return cmp; }), }; }, }); function getKeyValue(event: EventData, key: Key): React.ReactNode { switch (key) { case "date": return ( {event[key]} ); case "description": return {event[key]}; case "actions": return (
); default: return ( ); } } const [showAddEvent, setShowAddEvent] = useState(false); const [showDeleteConfirm, setShowDeleteConfirm] = useState(false); const [activeEvent, setActiveEvent] = useState(zustand.getState().events[0]); const topContent = (
); return (

Event Managment

tr]:first:!shadow-border", }} className="w-fit" > {(task) => ( {task.label} )} {(event) => ( {(columnKey) => ( {getKeyValue(event, columnKey)} )} )}

Confirm event deletion

The event{" "} {activeEvent.date} {" "} will be deleted.
); }