"use client"; import { X, HelpCircle } from "lucide-react"; import { Suspense } from "react"; import Image from "next/image"; import type { AppVersion, Script } from "@/lib/types"; import { Separator } from "@/components/ui/separator"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { useVersions } from "@/hooks/use-versions"; import { basePath } from "@/config/site-config"; import { extractDate } from "@/lib/time"; import DisableDescription from "./script-items/disable-description"; 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 null; } const matchedVersion = versions.find((v: AppVersion) => v.slug === item.slug); if (!matchedVersion) return null; return ( {matchedVersion.version} {matchedVersion.pinned && (

This version is pinned. We test each update for breaking changes before releasing new versions.

)}
); } export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) { const closeScript = () => { window.history.pushState({}, document.title, window.location.pathname); setSelectedScript(null); }; return (

Selected Script

}> {item.disable && item.disable_description && ( ) } {!item.disable && ( <>

How to {" "} {item.type === "pve" ? "use" : item.type === "addon" ? "apply" : "install"}

{item.config_path && ( <>

Location of config file

)}
)}
); }