feat(cms): improve catalog, editorial recovery and operations
CI / check (push) Successful in 52s
CI / deploy (push) Successful in 2m10s
CI / publish-container (push) Failing after 1m18s

This commit is contained in:
Simo committed 2026-09-09 19:36:15 +02:00
1 parent 2fead134e6
commit c389c3893d
122 files changed
+8137 -703

No files matched your search

@@ -1,5 +1,7 @@
"use client";
import Link from "next/link";
import { useTranslations } from "next-intl";
import { useState } from "react";
import { toast } from "sonner";
import { Button } from "@/components/ui/button";
@@ -36,6 +38,7 @@ export function ImportReview({
busy?: boolean;
onConfirm: (items: FurniItem[]) => void;
}) {
const completenessT = useTranslations("admin.studio.completeness");
const [attachments, setAttachments] = useState<Record<string, string>>({});
const [uploading, setUploading] = useState<string | null>(null);
async function attach(item: FurniItem, file: File) {
@@ -186,6 +189,22 @@ export function ImportReview({
(complete missing data) · {blocked} conflicts ·{" "}
{unavailable.length} source file warnings
</p>
{blocked > 0 && (
<div
role="alert"
className="rounded-md border border-[var(--admin-warning)]/30 bg-[var(--admin-warning)]/10 p-3 text-sm"
>
<p>
{completenessT("excludedConflicts", { count: blocked })}
</p>
<Link
href="/admin/studio/audit"
className="font-medium underline underline-offset-4"
>
{completenessT("openAudit")}
</Link>
</div>
)}
{inspection.items.some(
(item) =>
!item.furnidataReadable ||