"use client"; import { X } from "lucide-react"; import { Suspense } from "react"; import Image from "next/image"; import type { AppVersion, Script } from "@/lib/types"; import { cleanSlug } from "@/lib/utils/resource-utils"; import { Separator } from "@/components/ui/separator"; import { useVersions } from "@/hooks/use-versions"; import { basePath } from "@/config/site-config"; import { extractDate } from "@/lib/time"; import { getDisplayValueFromType } from "./script-info-blocks"; import DefaultPassword from "./script-items/default-password"; import InstallCommand from "./script-items/install-command"; import { ResourceDisplay } from "./resource-display"; import Description from "./script-items/description"; import ConfigFile from "./script-items/config-file"; import InterFaces from "./script-items/interfaces"; import Tooltips from "./script-items/tool-tips"; import Buttons from "./script-items/buttons"; import Alerts from "./script-items/alerts"; type 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 === "pve" ? "use" : item.type === "addon" ? "apply" : "install"}

{item.config_path && ( <>

Location of config file

)}
); }