feat(catalog): generate derived scale 32 with preview and backup restore
CI / check (push) Successful in 1m32s
CI / deploy (push) Successful in 1m12s
CI / e2e (push) Successful in 21s

This commit is contained in:
Simo committed 2026-09-05 17:36:22 +02:00
1 parent 08b0b5021e
commit cd75361b9f
9 files changed
+749 -11

No files matched your search

@@ -19,6 +19,7 @@ import {
import { useCallback, useEffect, useState } from "react";
import { toast } from "sonner";
import { NitroQualityPanel } from "@/components/admin/studio/nitro-quality-panel";
import { NitroScale32Generator } from "@/components/admin/studio/nitro-scale32-generator";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
@@ -140,6 +141,7 @@ export function NitroEditorDialog({
const [jsonText, setJsonText] = useState("");
const [loading, setLoading] = useState(false);
const [saving, setSaving] = useState(false);
const [bundleRevision, setBundleRevision] = useState(0);
const [activeTab, setActiveTab] = useState<string>("visual");
const [flags, setFlags] = useState({
canstandon: false,
@@ -443,7 +445,19 @@ export function NitroEditorDialog({
value="quality"
className="min-h-0 overflow-y-auto flex-1 px-4 sm:px-6 py-4"
>
<NitroQualityPanel classname={classname} />
<NitroScale32Generator
classname={classname}
disabled={hasChanges || saving}
onChanged={(updated) => {
setBundleRevision((value) => value + 1);
setMetadata(updated as NitroMetadata);
setOriginalMetadata(
structuredClone(updated) as NitroMetadata,
);
setJsonText(JSON.stringify(updated, null, 2));
}}
/>
<NitroQualityPanel key={bundleRevision} classname={classname} />
</TabsContent>
{/* ── Visual Tab ── */}
<TabsContent