"use client"; import { useState } from "react"; import { PlusIcon, XMarkIcon } from "@heroicons/react/24/outline"; export default function ServerConfigForm() { const [serverName, setServerName] = useState("Server Name"); const [licenseKey, setLicenseKey] = useState(""); const [discordInvite, setDiscordInvite] = useState("https://discord.discord.gg/serverinvite"); const [language, setLanguage] = useState("English"); const [serverLogoUrl, setServerLogoUrl] = useState("https://cybersecures.eu/app/main/theme/assets/img/uploads/41eef524a401f5751cb260a061236eba.png?v=1737290234"); const [requireSteam, setRequireSteam] = useState(false); const [logIpInfo, setLogIpInfo] = useState(false); const [minOnlineSeconds, setMinOnlineSeconds] = useState(45); const [exemptGroups, setExemptGroups] = useState(["owner"]); const [adminGroups, setAdminGroups] = useState(["admin", "staff"]); const [newExemptGroup, setNewExemptGroup] = useState(""); const [newAdminGroup, setNewAdminGroup] = useState(""); const inventorySystems = ["esx", "qb", "ox"]; const [enabledInventory, setEnabledInventory] = useState([]); function addExemptGroup() { const trimmed = newExemptGroup.trim(); if (trimmed && !exemptGroups.includes(trimmed)) { setExemptGroups([...exemptGroups, trimmed]); setNewExemptGroup(""); } } function removeExemptGroup(name: string) { setExemptGroups(exemptGroups.filter((g) => g !== name)); } function addAdminGroup() { const trimmed = newAdminGroup.trim(); if (trimmed && !adminGroups.includes(trimmed)) { setAdminGroups([...adminGroups, trimmed]); setNewAdminGroup(""); } } function removeAdminGroup(name: string) { setAdminGroups(adminGroups.filter((g) => g !== name)); } function toggleInventory(name: string) { if (enabledInventory.includes(name)) { setEnabledInventory(enabledInventory.filter((i) => i !== name)); } else { setEnabledInventory([...enabledInventory, name]); } } return (

Server Configuration

setRequireSteam(!requireSteam)} /> setLogIpInfo(!logIpInfo)} /> setMinOnlineSeconds(Number(v))} type="number" />

Inventory Configuration

{inventorySystems.map((inv) => ( ))}
); } function InputField({ label, value, onChange, type = "text", placeholder = "" }: any) { return (
onChange(e.target.value)} className="w-full p-2 rounded bg-[#1D2129] border border-gray-600 text-white" />
); } function SelectField({ label, value, onChange, options }: any) { return (
); } function Toggle({ label, enabled, onToggle }: any) { return (
{label}
); } function GroupInput({ title, groups, newGroup, setNewGroup, onAdd, onRemove }: any) { return (

{title}

{groups.map((group: string) => ( {group} ))}
setNewGroup(e.target.value)} className="flex-grow p-2 rounded bg-[#1D2129] border border-gray-600 text-white" />
); }