"use client"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { Calendar } from "@/components/ui/calendar"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import { fetchCategories } from "@/lib/data"; import { Category } from "@/lib/types"; import { cn } from "@/lib/utils"; import { format } from "date-fns"; import { CalendarIcon, Check, Clipboard, Download } from "lucide-react"; import { useCallback, useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; import { z } from "zod"; import Categories from "./_components/Categories"; import InstallMethod from "./_components/InstallMethod"; import Note from "./_components/Note"; import { ScriptSchema, type Script } from "./_schemas/schemas"; const initialScript: Script = { name: "", slug: "", categories: [], date_created: "", type: "ct", updateable: false, privileged: false, interface_port: null, documentation: null, website: null, logo: null, description: "", install_methods: [], default_credentials: { username: null, password: null, }, notes: [], }; export default function JSONGenerator() { const [script, setScript] = useState