"use client"; import { extractDate } from "@/lib/time"; import { AppVersion, Script } from "@/lib/types"; import { X } from "lucide-react"; import Image from "next/image"; import { Separator } from "@/components/ui/separator"; import { basePath } from "@/config/siteConfig"; import { useVersions } from "@/hooks/useVersions"; import { cleanSlug } from "@/lib/utils/resource-utils"; import { Suspense } from "react"; import { ResourceDisplay } from "./ResourceDisplay"; import { getDisplayValueFromType } from "./ScriptInfoBlocks"; import Alerts from "./ScriptItems/Alerts"; import DefaultPassword from "./ScriptItems/DefaultPassword"; import Description from "./ScriptItems/Description"; import InstallCommand from "./ScriptItems/InstallCommand"; import Tooltips from "./ScriptItems/Tooltips"; import InterFaces from "./ScriptItems/InterFaces"; import Buttons from "./ScriptItems/Buttons"; interface ScriptItemProps { item: Script; setSelectedScript: (script: string | null) => void; } function ScriptHeader({ item }: { item: Script }) { const defaultInstallMethod = item.install_methods?.[0]; const os = defaultInstallMethod?.resources?.os || "Proxmox Node"; const version = defaultInstallMethod?.resources?.version || ""; return (
((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)} height={400} alt={item.name} unoptimized />

{item.name} {getDisplayValueFromType(item.type)}

Added {extractDate(item.date_created)} {os} {version}
{/* */}
{defaultInstallMethod?.resources && ( )} {item.install_methods.find((method) => method.type === "alpine")?.resources && ( method.type === "alpine")!.resources!} /> )}
); } function VersionInfo({ item }: { item: Script }) { const { data: versions = [], isLoading } = useVersions(); if (isLoading || versions.length === 0) { return

Loading versions...

; } const matchedVersion = versions.find((v: AppVersion) => { const cleanName = v.name.replace(/[^a-z0-9]/gi, "").toLowerCase(); return cleanName === cleanSlug(item.slug) || cleanName.includes(cleanSlug(item.slug)); }); if (!matchedVersion) return null; return {matchedVersion.version}; } export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) { const closeScript = () => { window.history.pushState({}, document.title, window.location.pathname); setSelectedScript(null); }; return (

Selected Script

}>

How to {item.type === "misc" ? "use" : "install"}

); }