import { asc } from "drizzle-orm"; import { redirect } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { createBox, deleteBox, toggleBox, updateBox, } from "@/actions/admin-writeable-boxes"; import { StatusCard } from "@/components/admin/dashboard"; import { Button } from "@/components/ui/button"; import { db, WebsiteWriteableBoxes } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; export const metadata = { title: "Writeable boxes" }; export default async function AdminWriteableBoxes() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.PAGES_VIEW, session.user.rank)) { redirect("/admin"); } const t = await getTranslations("pages.admin.writeableBoxes"); const boxes = await db .select() .from(WebsiteWriteableBoxes) .orderBy(asc(WebsiteWriteableBoxes.position), asc(WebsiteWriteableBoxes.id)) .limit(500) .catch(() => []); const activeCount = boxes.filter((b) => b.isActive).length; return (
0 ? "ok" : "neutral"} hint={t("shownOnHomePage")} icon="✅" />

{t("newBox")}