Files
Silk-Fly-Launcher/renderer/index.html

253 lines
14 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Silk Fly Launcher</title>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'; img-src 'self' https://*.nexusmods.com" />
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="app">
<video autoplay muted loop class="background-video" id="background-video" src="assets/background/Silksong.mp4" type="video/mp4"></video>
<!-- Sidebar -->
<aside class="sidebar">
<div class="logo" onclick="navigate('home')">
<img src="assets/logo.png" alt="Silk Fly Launcher Logo" class="logo-img" />
<h5 class="logo-title">Silk Fly Launcher</h5>
</div>
<nav class="nav">
<div class="nav-section">
<span class="nav-title">Execute Silksong</span>
<button class="horizontal-div" onclick="launch('vanilla')">
<img src="assets/icons/start-vanilla.svg" class="icons invert-color" />
Run Vanilla
</button>
<button class="horizontal-div" onclick="launch('modded')">
<img src="assets/icons/start-modded.svg" class="icons invert-color" />
Run Modded
</button>
</div>
<div class="nav-section">
<span class="nav-title">Mods</span>
<button class="horizontal-div" onclick="navigate('mods-installed')">
<img src="assets/icons/folder.svg" class="icons invert-color" />
Installed
</button>
<button class="horizontal-div" onclick="navigate('mods-online')">
<img src="assets/icons/cloud.svg" class="icons invert-color" />
Online
</button>
</div>
<div class="nav-section">
<span class="nav-title">Settings</span>
<button class="horizontal-div" onclick="navigate('general-settings')">
<img src="assets/icons/settings.svg" class="icons invert-color" />
General
</button>
</div>
</nav>
</aside>
<!-- Main content -->
<main class="content">
<h1 id="title">Silk Fly Launcher</h1>
<div class="view" id="view"></div>
<div class="toast-div" id="toast-div"></div>
</main>
</div>
<!-- Template -->
<template id="home-template">
<h2>About</h2>
<div class="horizontal-div separated-div">
<div class="horizontal-div">
<img src="assets/logo.png" alt="Silk Fly Launcher Logo" class="big-logo-img" />
<div>
<h3>Silk Fly Launcher</h3>
<p class="transparent-text">v1.0.0</p>
</div>
</div>
<div class="horizontal-div">
<img onclick="electronAPI.openExternalLink('https://github.com/Gabi-Zar/Silk-Fly-Launcher')" src="assets/icons/github.svg" alt="Github logo" class="logo-img invert-color" />
</div>
</div>
<br />
<ul>
<li>Silk Fly Launcher is a launcher and mod manager for Silksong mods from Nexus, built with Electron.</li>
<li>This product is licensed under the <a href="" class="link" onclick="electronAPI.openWindow('LICENSE')">GNU General Public License Version 3</a>.</li>
<li>This product uses third-party modules or assets under <a href="" class="link" onclick="electronAPI.openWindow('THIRD-PARTY-LICENSES')">third-party licenses</a>.</li>
<li>
Found a bug or have a feature request? Please
<a href="" class="link" onclick="electronAPI.openExternalLink('https://github.com/Gabi-Zar/Silk-Fly-Launcher/issues')">create an issue on GitHub</a>.
</li>
<li>Made with ♥ by <a href="" class="link" onclick="electronAPI.openExternalLink('https://github.com/Gabi-Zar')">GabiZar</a>.</li>
</ul>
<br />
</template>
<template id="installed-mods-template">
<h2>List Of Installed Mods</h2>
<div class="horizontal-div">
<form class="horizontal-div search-form" id="search-form">
<input class="input" id="search-input" type="text" placeholder="Search For Mods..." />
<button class="default-button" onclick="searchInstalledMods()">Search</button>
</form>
<div class="list-div">
<div class="default-button smaller-button" id="sort-button" onclick="toggleSortMenu()">Sort</div>
<div class="list-menu longer-button list-menu-inverted" id="sort-menu">
<li id="name" onclick="changeSort('name')">by name</li>
<li id="downloads" onclick="changeSort('downloads')">by downloads count</li>
<li id="endorsements" onclick="changeSort('endorsements')">by endorsements count</li>
<li id="createdAt" onclick="changeSort('createdAt')">by date of creation</li>
<li id="updatedAt" onclick="changeSort('updatedAt')">by date of updating</li>
<li id="size" onclick="changeSort('size')">by size</li>
</div>
</div>
<button class="default-button square-button" onclick="inverseSort()"><img class="icons invert-color" id="sort-order-image" src="assets/icons/sort-order-1.svg" /></button>
</div>
<div class="mods-container" id="mods-container"></div>
</template>
<template id="online-mods-template">
<h2>List Of Nexus Mods</h2>
<div class="horizontal-div">
<form class="horizontal-div search-form" id="search-form">
<input class="input" id="search-input" type="text" placeholder="Search For Mods..." />
<button class="default-button" onclick="searchNexusMods()">Search</button>
</form>
<div class="list-div">
<div class="default-button smaller-button" id="sort-button" onclick="toggleSortMenu()">Sort</div>
<div class="list-menu longer-button list-menu-inverted" id="sort-menu">
<li id="name" onclick="changeSort('name')">by name</li>
<li id="downloads" onclick="changeSort('downloads')">by downloads count</li>
<li id="endorsements" onclick="changeSort('endorsements')">by endorsements count</li>
<li id="createdAt" onclick="changeSort('createdAt')">by date of creation</li>
<li id="updatedAt" onclick="changeSort('updatedAt')">by date of updating</li>
<li id="size" onclick="changeSort('size')">by size</li>
</div>
</div>
<button class="default-button square-button" onclick="inverseSort()"><img class="icons invert-color" id="sort-order-image" src="assets/icons/sort-order-1.svg" /></button>
</div>
<div class="mods-container" id="mods-container"></div>
</template>
<template id="installed-mod-template">
<div class="mod-container">
<div class="mod-text">
<div class="horizontal-div">
<h3 id="mod-title">Unknown Title</h3>
<p id="mod-author">Unknown author</p>
<p id="mod-endorsements-number">? likes</p>
<p id="mod-downloads-number">? download</p>
</div>
<p id="mod-description" class="long-text">No description provided</p>
<p class="transparent-text" id="mod-version">V1.0.0 last update on 01/01/2026</p>
<br />
<div class="horizontal-div">
<a href="www.nexusmods.com/hollowknightsilksong/mods" class="default-button" id="uninstall-mod-button">Uninstall</a>
<a href="www.nexusmods.com/hollowknightsilksong/mods" class="default-button" id="external-link">Website</a>
</div>
</div>
<img class="mod-icon" src="assets/placeholder_icon.png" alt="mod icon" id="mod-icon" />
</div>
</template>
<template id="mod-template">
<div class="mod-container">
<div class="mod-text">
<div class="horizontal-div">
<h3 id="mod-title">Unknown Title</h3>
<p id="mod-author">Unknown author</p>
<p id="mod-endorsements-number">? likes</p>
<p id="mod-downloads-number">? download</p>
</div>
<p id="mod-description" class="long-text">No description provided</p>
<p class="transparent-text" id="mod-version">V1.0.0 last update on 01/01/2026</p>
<br />
<div class="horizontal-div">
<a href="www.nexusmods.com/hollowknightsilksong/mods" class="default-button" id="download-mod-button">Download</a>
<a href="www.nexusmods.com/hollowknightsilksong/mods" class="default-button" id="external-link">Website</a>
</div>
</div>
<img class="mod-icon" src="assets/placeholder_icon.png" alt="mod icon" id="mod-icon" />
</div>
</template>
<template id="settings-template">
<h2>General settings</h2>
<div class="horizontal-div">
<label>Enter Silksong path: </label>
<input type="text" class="input" id="silksong-path-input" name="silksong-path-input" />
<button class="default-button" onclick="autoDetectGamePath()">Auto Detect</button>
</div>
<br />
<div class="horizontal-div">
<label>Themes: </label>
<div class="list-div">
<div class="default-button longer-button" id="themes-button" onclick="toggleThemesMenu()">Silksong</div>
<div class="list-menu longer-button" id="themes-menu">
<li id="Silksong" onclick="changeTheme('Silksong')">Silksong</li>
<li id="Citadel of song" onclick="changeTheme('Citadel of song')">Citadel of song</li>
<li id="Cradle" onclick="changeTheme('Cradle')">Cradle</li>
<li id="Abyss" onclick="changeTheme('Abyss')">Abyss</li>
<li id="Greyroot" onclick="changeTheme('Greyroot')">Greyroot</li>
<li id="Surface" onclick="changeTheme('Surface')">Surface</li>
<li id="Steel" onclick="changeTheme('Steel')">Steel</li>
</div>
</div>
<label class="lace-pin-checkbox-container">
<input type="checkbox" name="lace-pin" id="lace-pin" />
<span class="checkmark"></span>
Lace Pin
</label>
</div>
<br />
<h2>BepInEx</h2>
<p class="transparent-text" id="bepinex-version-text"></p>
<br />
<div class="horizontal-div">
<button class="default-button" onclick="installBepinex()">Install</button>
<button class="important-button" onclick="uninstallBepinex()">Uninstall</button>
<button class="default-button" onclick="backupBepinex()">Backup</button>
<button class="important-button" onclick="deleteBepinexBackup()">Delete Backup</button>
</div>
<br />
<h2>Nexus</h2>
<p class="transparent-text" id="bepinex-version-text"></p>
<div class="horizontal-div">
<label for="nexus-api-label">Enter your nexus api: </label>
<input type="text" class="input" id="nexus-api-input" name="nexus-api-input" />
<img class="nexus-check-image" id="nexus-check-image" src="assets/icons/cross.svg" />
<button class="default-button" onclick="verifyNexusAPI()">Verify</button>
</div>
<br />
<h2>Import/Export</h2>
<div class="horizontal-div">
<button class="default-button" onclick="importData()">Import Data</button>
<button class="default-button" onclick="exportData()">Export Data</button>
<button class="important-button" onclick="deleteData()">Delete All Data</button>
</div>
<br />
<h2>Debugging</h2>
<div class="horizontal-div">
<h3>Versions:</h3>
<ul id="versions-list">
<li id="Silk-Fly-Launcher"></li>
<li id="Electron"></li>
<li id="Node"></li>
<li id="Chromium"></li>
</ul>
<p id="version-text"></p>
</div>
</template>
<script src="renderer.js"></script>
</body>
</html>