new termscp site

This commit is contained in:
veeso
2023-07-05 12:33:17 +02:00
parent 00a6c53178
commit b7d4c68ebe
25 changed files with 996 additions and 1224 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 77 KiB

74
site/changelog.html Normal file
View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en_US">
<head>
<title>
termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3/SMB | termscp
</title>
<meta property="og:description"
content="termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/S3. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible" />
<meta name="description"
content="termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/S3. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible" />
<meta property="og:title" content="termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3 | termscp" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="index, follow" />
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
<meta property="og:image:type" content="image/jpg" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="640" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="termscp" />
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="https://termscp.veeso.dev" />
<!-- Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
crossorigin="anonymous" />
<!-- tailwind -->
<link href="output.css" rel="stylesheet" />
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
</head>
<body>
<div id="layout">
<!-- Menu -->
<header id="menu"></header>
<main>
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
</main>
<footer id="footer"></footer>
</div>
<!-- Scripts -->
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- Showdown JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- Local -->
<script src="js/lang.min.js"></script>
<script src="js/core.js"></script>
<script src="js/events.js"></script>
<script src="js/resolvers.js"></script>
<!-- ko-fi -->
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
<script>
kofiWidgetOverlay.draw("veeso", {
type: "floating-chat",
"floating-chat.donateButton.text": "Support me",
"floating-chat.donateButton.background-color": "#31363b",
"floating-chat.donateButton.text-color": "#fff",
});
</script>
</body>
</html>

View File

@@ -1,45 +0,0 @@
.start h1 {
font-size: 2.5em;
}
.start h2 {
font-size: 2em;
}
.start h3 {
font-size: 1.6em;
}
.start h2 i,
h3 i {
color: #606060;
}
.start .sub-system {
padding: 0px 2em;
}
.start .sub-system .installation {
padding: 0px 2em;
width: 80%;
}
.start .installation {
padding: 2px 4em;
width: 80%;
}
.start .installation p {
font-size: 1.3em;
font-weight: 300;
}
.start .installation li {
font-size: 1.1em;
font-weight: 300;
}
.start .installation a {
text-decoration: none;
color: dodgerblue;
}

View File

@@ -1,121 +0,0 @@
/** Intro */
.intro {
text-align: center;
}
.intro .title {
font-size: 5em;
}
.intro .logo {
border-radius: 25%;
height: auto;
width: 256px;
}
.intro .caption {
font-size: 2em;
font-weight: 300;
width: 100%;
}
.intro .get-started {
background-color: #404040;
border-radius: 0.5em;
color: snow;
font-size: 1.5em;
}
.intro .get-started a {
color: snow;
text-decoration: none;
}
.intro .features {
align-content: stretch;
align-items: flex-start;
border-top: 1px solid #eee;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-top: 2.5rem;
padding: 1.2rem 0;
}
.intro .feature {
flex: auto;
}
@media (min-width: 600px) {
.intro .feature {
flex-grow: 1;
flex-basis: 30%;
max-width: 30%;
}
}
.intro .feature h3 {
color: #101010;
font-size: 1.5em;
font-weight: 400;
}
.intro .feature p {
color: #303030;
}
.intro .preview {
border-radius: 5px;
padding: 5% 10%;
width: 80%;
}
.intro .preview video {
height: auto;
width: 100%;
}
.intro .discover {
align-content: stretch;
align-items: flex-start;
border-top: 1px solid #eee;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-left: 0;
margin-top: 2.5rem;
padding: 1.2rem 0;
width: 100%;
}
@media (min-width: 600px) {
.intro .discover {
margin-left: 20%;
width: 60%;
}
}
.intro .discover .hook {
flex-grow: 1;
flex-basis: 30%;
font-size: 1.5em;
max-width: 30%;
}
.intro .discover .hook a {
text-decoration: none;
color: #404040;
}
.intro .discover .hook a i {
font-size: 0.8em;
}
.intro .discover .hook a {
transition: all 0.4s ease-in;
}
.intro .discover .hook a:hover {
color: dodgerblue;
}

View File

@@ -1,197 +0,0 @@
html {
scroll-behavior: smooth;
}
body {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
pre {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
color: #d0d0d0;
background-color: #222629;
border-radius: 3px;
word-wrap: normal;
border-radius: 0.5em;
}
pre .function {
color: #f08d49;
}
pre .string {
color: #7ec699;
}
h1,
h2,
h3,
h4,
h5 {
font-weight: 300;
}
header {
margin: 0 2em 0 0;
}
.img-circle {
border-radius: 50%;
}
.pull-left {
float: left;
}
.pull-right {
float: right;
}
section.page {
width: 100%;
height: auto;
border-top: 1px solid #aaa;
display: inline-block;
padding-bottom: 2em;
}
section.page hr {
margin: 1em 0 1em 0;
}
.container {
width: 90%;
height: auto;
margin-left: auto;
margin-right: auto;
overflow: auto;
}
.container header a {
color: inherit;
text-decoration: none;
border-bottom: dotted 1px #80808080;
cursor: text;
}
.container header a i {
color: #606060;
}
/** Footer */
footer {
text-align: center;
background-color: #eee;
padding: 1em;
}
footer .contacts {
list-style: none;
cursor: default;
margin-block-start: 0;
padding-inline-start: 0;
}
footer .contacts li {
display: inline-block;
}
footer .contacts a {
border: 0;
font-size: 3em;
color: #606060;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
text-align: center;
text-decoration: none;
}
footer .contacts a i {
transition: all 0.4s ease-in;
}
footer .contacts li a:hover i {
color: #202020 !important;
}
.footer--vat {
color: #404040;
font-weight: 300;
text-align: center;
}
.footer--address {
color: #505050;
font-size: 0.8em;
font-weight: 300;
text-align: center;
}
.footer--copyright {
color: #606060;
font-size: 0.7em;
font-weight: 300;
text-align: center;
}
.footer--link {
color: #606060;
}
.alert {
border: 1px solid transparent;
border-radius: 0.25rem;
margin-top: 1rem;
margin-bottom: 1rem;
padding: 0.5rem;
position: relative;
}
.alert-center {
margin-left: auto;
margin-right: auto;
width: 50%;
}
.alert-warning {
background-color: #fff3cd;
border-color: #ffeeba;
color: #856404;
}
.alert-danger {
background-color: #f8d7da;
border-color: #f5c6cb;
color: #721c24;
}
.alert-success {
background-color: #d4edda;
border-color: #c3e6cb;
color: #155724;
}
.alert-primary {
background-color: #cce5ff;
border-color: #b8daff;
color: #004085;
}
/* ko-fi */
.floatingchat-container-wrap {
left: auto !important;
right: 16px !important;
}
.floating-chat-kofi-popup-iframe {
left: auto !important;
right: 16px !important;
}

View File

@@ -12,7 +12,6 @@
} }
.markdown p { .markdown p {
color: #202020;
font-size: 1.1em; font-size: 1.1em;
} }
@@ -46,16 +45,11 @@
.markdown blockquote { .markdown blockquote {
border-left: 0.25em solid #ccc; border-left: 0.25em solid #ccc;
color: #606060;
font-size: 90%; font-size: 90%;
padding: 0.1em; padding: 0.1em;
padding-left: 0.5em; padding-left: 0.5em;
} }
.markdown blockquote p {
color: #606060;
}
.markdown pre code { .markdown pre code {
background-color: inherit; background-color: inherit;
font-size: 100%; font-size: 100%;
@@ -68,6 +62,12 @@
padding: 0.2em 0.4em; padding: 0.2em 0.4em;
} }
@media (prefers-color-scheme: dark) {
.markdown code {
background-color: #404040;
}
}
.markdown table { .markdown table {
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
@@ -82,14 +82,6 @@
border-top: 1px solid #c6cbd1; border-top: 1px solid #c6cbd1;
} }
.markdown table tr {
background-color: white;
}
.markdown table tr:nth-child(even) {
background-color: #dfe2e5;
}
.markdown table td, .markdown table td,
.markdown table th { .markdown table th {
border: 1px solid #c6cbd1; border: 1px solid #c6cbd1;

View File

@@ -1,268 +0,0 @@
/** Menu */
#menu {
margin-left: -20vw; /* "#menu" width */
width: 20vw;
position: fixed;
top: 0;
left: 0;
bottom: 0;
z-index: 1000; /* so the menu or its navicon stays above all content */
background: #f0f0f0;
overflow-y: auto;
}
/*
All anchors inside the menu should be styled like this.
*/
#menu a {
color: #606060;
border: none;
padding: 0.6em 0 0.6em 0.6em;
font-size: 1.4em;
}
/*
Remove all background/borders, since we are applying them to #menu.
*/
#menu .pure-menu,
#menu .pure-menu ul {
border: none;
background: transparent;
}
/*
Add that light border to separate items into groups.
*/
#menu .pure-menu ul,
#menu .pure-menu .menu-item-divided {
border-top: 1px solid #808080;
}
#menu .pure-menu i {
margin-right: 1ch;
}
#menu .pure-menu-item i {
font-size: 0.6em;
}
/*
Change color of the anchor links on hover/focus.
*/
#menu .pure-menu li a:hover,
#menu .pure-menu li a:focus {
background: #ccc;
}
/*
This styles the selected menu item `<li>`.
*/
#menu .pure-menu-selected {
background: #ddd;
}
#menu .pure-menu-selected i {
color: dodgerblue;
}
/*
This styles a link within a selected menu item `<li>`.
*/
#menu .pure-menu-selected a {
color: dodgerblue;
font-weight: 500;
}
/*
This styles the menu heading.
*/
#menu .pure-menu-heading {
color: #202020;
margin: 0;
margin: 10% 5% 10% 5%;
position: relative;
font-weight: 700;
}
#menu .pure-menu-heading .avatar {
width: 30%;
border-radius: 0.5em;
}
#menu .pure-menu-heading h1 {
font-size: 1.4em;
text-transform: none;
}
#menu .pure-menu-heading p {
color: #404040;
font-size: 1.1em;
font-weight: 300;
text-transform: none;
white-space: normal;
}
#menu .pure-menu-bottom {
bottom: 0;
display: none;
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
@media (min-width: 640px) {
#menu .pure-menu-bottom {
display: block;
}
}
#menu .pure-menu-bottom a {
font-size: 1.5em;
color: #606060;
display: inline-block;
text-align: center;
border: 0;
text-decoration: none;
text-align: center;
white-space: normal;
}
#menu .pure-menu-bottom a:hover {
color: #404040;
}
#menu .pure-menu-bottom ul {
list-style: none;
cursor: default;
margin-block-start: 0;
padding-inline-start: 0;
}
#menu .pure-menu-bottom ul li {
display: inline-block;
text-align: center;
}
/* -- Dynamic Button For Responsive Menu -------------------------------------*/
/*
The button to open/close the Menu is custom-made and not part of Pure. Here's
how it works:
*/
/*
`.menu-link` represents the responsive menu toggle that shows/hides on
small screens.
*/
.menu-link {
position: fixed;
display: block; /* show this only on small screens */
top: 0;
left: 0; /* "#menu width" */
background: #eee;
background: rgba(0, 0, 0, 0.7);
font-size: 10px; /* change this value to increase/decrease button size */
z-index: 10;
width: 2em;
height: auto;
padding: 2.1em 1.6em;
}
.menu-link:hover,
.menu-link:focus {
background: #202020;
}
.menu-link span {
position: relative;
display: block;
}
.menu-link span,
.menu-link span:before,
.menu-link span:after {
background-color: #fff;
pointer-events: none;
width: 100%;
height: 0.2em;
}
.menu-link span:before,
.menu-link span:after {
position: absolute;
margin-top: -0.6em;
content: " ";
}
.menu-link span:after {
margin-top: 0.6em;
}
/* -- Responsive Styles (Media Queries) ------------------------------------- */
#layout,
#menu,
.menu-link {
-webkit-transition: all 0.2s ease-out;
-moz-transition: all 0.2s ease-out;
-ms-transition: all 0.2s ease-out;
-o-transition: all 0.2s ease-out;
transition: all 0.2s ease-out;
}
#layout {
position: relative;
left: 0;
padding-left: 0;
}
#layout.active #menu {
left: 20vw;
width: 240px;
}
#layout.active .menu-link {
left: 240px;
}
/*
Hides the menu at `640px`, but modify this based on your app's needs.
*/
@media (min-width: 640px) {
.header {
padding-left: 2em;
padding-right: 2em;
}
#layout {
padding-left: 20vw; /* left col width "#menu" */
left: 0;
}
#menu {
left: 20vw;
}
.menu-link {
position: fixed;
left: 20vw;
display: none;
}
#layout.active .menu-link {
left: 20vw;
}
}
@media (max-width: 640px) {
/* Only apply this when the window is small. Otherwise, the following
case results in extra padding on the left:
* Make the window small.
* Tap the menu to trigger the active state.
* Make the window large again.
*/
#main.active {
position: relative;
left: 20vw;
}
}

View File

@@ -1,38 +0,0 @@
.updates h1 {
font-size: 2.5em;
}
.updates h2 {
font-size: 2em;
}
.updates h3 {
font-size: 1.6em;
}
.updates h2 i,
h3 i {
color: #606060;
}
.updates .desc {
font-size: 1.1em;
text-align: justify;
}
.updates ol {
font-size: 1.2em;
}
.wall-of-text {
color: #444;
line-height: 1.8em;
margin: 0 auto;
text-align: justify;
width: 90%;
}
.tl-dr {
font-size: 1.2em;
font-weight: bold;
}

75
site/get-started.html Normal file
View File

@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en_US">
<head>
<title>
get started with termscp | termscp
</title>
<meta property="og:description"
content="Install termscp within a couple of minutes with the shell script" />
<meta name="description"
content="Install termscp within a couple of minutes with the shell script" />
<meta property="og:title" content="get started with termscp | termscp" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="index, follow" />
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
<meta property="og:image:type" content="image/jpg" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="640" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="termscp" />
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="https://termscp.veeso.dev" />
<!-- Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
crossorigin="anonymous" />
<!-- tailwind -->
<link href="output.css" rel="stylesheet" />
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
</head>
<body>
<div id="layout">
<!-- Menu -->
<header id="menu"></header>
<main>
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
</main>
<footer id="footer"></footer>
</div>
<!-- Scripts -->
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- Showdown JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- Local -->
<script src="js/lang.min.js"></script>
<script src="js/core.js"></script>
<script src="js/events.js"></script>
<script src="js/resolvers.js"></script>
<!-- ko-fi -->
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
<script>
kofiWidgetOverlay.draw("veeso", {
type: "floating-chat",
"floating-chat.donateButton.text": "Support me",
"floating-chat.donateButton.background-color": "#31363b",
"floating-chat.donateButton.text-color": "#fff",
});
</script>
</body>
</html>

View File

@@ -0,0 +1,38 @@
<!DOCTYPE html>
<div class="flex flex-col bg-brand text-gray-200 justify-around items-center gap-12 p-8 sm:pb-24">
<div class="flex flex-row justify-around items-center gap-16 w-3/6 sm:w-full">
<div>
<a href="https://github.com/veeso/termscp" class="text-3xl sm:text-xl no-underline" target="_blank"><i
class="devicon-github-original"></i></a>
</div>
<div>
<a href="https://crates.io/crates/termscp" class="text-3xl sm:text-xl no-underline" target="_blank"><i
class="devicon-rust-plain"></i></a>
</div>
<div>
<a href="https://community.chocolatey.org/packages/termscp" class="text-3xl sm:text-xl no-underline"
target="_blank"><i class="devicon-windows8-plain"></i></a>
</div>
<div>
<a href="https://ko-fi.com/veeso" target="_blank" class="text-3xl sm:text-xl no-underline"><i
class="fa fa-coffee"></i></a>
</div>
</div>
<div class="flex flex-col justify-around gap-1 items-center w-full">
<!-- vat number -->
<p class="text-sm font-thin">
<span>P.IVA IT03104140300 </span>
</p>
<p class="text-xs font-thin">
<span>Via Antonio Marangoni 33, 33100, Udine (UD)</span>
</p>
<!-- Copyright -->
<p class="text-xs font-thin">
<span>Christian Visintin © </span><span resolve-copyright></span>
<span>&nbsp;|&nbsp;</span>
<a class="text-xs font-thin" href="https://veeso.dev/en/privacy" target="_blank">Privacy policy</a>
<span>&nbsp;|&nbsp;</span>
<a class="text-xs font-thin" href="https://veeso.dev/en/cookie-policy" target="_blank">Cookie policy</a>
</p>
</div>
</div>

View File

@@ -0,0 +1,97 @@
<!DOCTYPE html>
<div
class="flex flex-row fixed bg-gray-100 dark:bg-brand text-brand dark:text-gray-100 border-b border-gray-400 dark:border-gray-800 items-center justify-between w-screen h-auto py-4 px-8">
<!-- Desktop menu-->
<div class="sm:hidden flex flex-row justify-start items-center gap-12 w-full">
<h2 class="lg:text-xl md:text-lg dark:text-gray-100">
<a href="/">
<img class="w-[32px] h-auto m-auto inline-block mr-2" alt="logo"
src="assets/images/termscp.webp" />&nbsp;termscp
</a>
</h2>
<h2 class="lg:text-xl md:text-lg dark:text-gray-100">
<a translate="menu.getStarted" href="/get-started.html"></a>
</h2>
<h2 class="lg:text-xl md:text-lg dark:text-gray-100">
<a translate="menu.updates" href="/updates.html"></a>
</h2>
<h2 class="lg:text-xl md:text-lg dark:text-gray-100">
<a translate="menu.manual" href="/user-manual.html"></a>
</h2>
<h2 class="lg:text-xl md:text-lg dark:text-gray-100">
<a translate="menu.changelog" href="/changelog.html"></a>
</h2>
<!-- End region -->
<div class="flex flex-row self-end justify-end items-center gap-8 flex-1">
<!-- Dark/light theme toggle -->
<button id="theme-toggle" type="button" onclick="toggleTheme()"
class="text-brand dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg lg:text-2xl md:text-lg p-2.5">
<svg id="theme-toggle-dark-icon" class="w-5 h-5 hidden" fill="currentColor" viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg">
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
</svg>
<svg id="theme-toggle-light-icon" class="w-5 h-5 hidden" fill="currentColor" viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg">
<path
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
fill-rule="evenodd" clip-rule="evenodd"></path>
</svg>
</button>
<!-- Socials -->
<div>
<a href="https://github.com/veeso/termscp" class="lg:text-2xl md:text-lg dark:text-gray-100" target="_blank"><i
class="devicon-github-original"></i></a>
</div>
<div>
<a href="https://crates.io/crates/termscp" class="lg:text-2xl md:text-lg dark:text-gray-100" target="_blank"><i
class="devicon-rust-plain"></i></a>
</div>
<div>
<a href="https://www.linkedin.com/in/christian-visintin/" class="lg:text-2xl md:text-lg dark:text-gray-100"
target="_blank"><i class="devicon-linkedin-plain"></i></a>
</div>
<div>
<a href="https://twitter.com/veeso_dev" target="_blank" class="lg:text-2xl md:text-lg dark:text-gray-100"><i
class="devicon-twitter-plain"></i></a>
</div>
</div>
</div>
<!-- Mobile topbar -->
<div class="sm:flex hidden flex-row justify-start items-center gap-8 w-full">
<h2 class="text-2xl dark:text-gray-100">
<a href="/">
<img class="w-[32px] h-auto m-auto inline-block mr-2" alt="logo"
src="assets/images/termscp.webp" />&nbsp;termscp
</a>
</h2>
<div id="menu-icon" class="justify-self-end flex-1 flex justify-end">
<i onclick="onToggleMenu()" class="fa fa-bars text-2xl cursor-pointer"></i>
</div>
</div>
</div>
<!-- Mobile menu -->
<div id="mobile-menu"
class="hidden transition-all fixed top-0 left-0 h-screen bg-brand text-white w-screen flex-col justify-start items-center p-8">
<div class="flex flex-row justify-end items-end w-full">
<div id="menu-icon" class="justify-self-end flex-1 flex justify-end">
<i onclick="onToggleMenu()" class="fa fa-bars text-2xl cursor-pointer"></i>
</div>
</div>
<div class="flex flex-col justify-start items-center w-full gap-4">
<h2 class="text-2xl text-white">
<a translate="menu.intro" href="/"></a>
</h2>
<h2 class="text-2xl text-white">
<a translate="menu.getStarted" href="/get-started.html"></a>
</h2>
<h2 class="text-2xl text-white">
<a translate="menu.updates" href="/updates.html"></a>
</h2>
<h2 class="text-2xl text-white">
<a translate="menu.manual" href="/user-manual.html"></a>
</h2>
<h2 class="text-2xl text-white">
<a translate="menu.changelog" href="/changelog.html"></a>
</h2>
</div>
</div>

View File

@@ -1,17 +1,15 @@
<head> <!DOCTYPE html>
<link rel="stylesheet" href="css/get-started.css" />
</head>
<body> <body>
<section id="start" class="container start"> <section id="start" class="flex flex-col mx-auto items-center justify-center w-full px-12 gap-8 dark:text-gray-100">
<h1 translate="getStarted.title">Get started</h1> <h1 translate="getStarted.title" class="text-3xl font-thin">Get started</h1>
<section> <section class="w-full">
<h2> <h2 class="text-2xl font-thin">
<i class="fa fa-rocket"></i>&nbsp;<span translate="getStarted.quickSetup">Quick setup</span> <i class="fa fa-rocket"></i>&nbsp;<span translate="getStarted.quickSetup">Quick setup</span>
</h2> </h2>
<div class="installation"> <div class="installation">
<div class="alert alert-primary"> <div class="p-4 my-4 text-sm text-blue-800 rounded-lg bg-blue-50">
<p> <p class="text-lg">
<i class="fas fa-info-circle"></i> <i class="fas fa-info-circle"></i>
<span translate="getStarted.suggested">We strongly suggest this method to install termscp</span> <span translate="getStarted.suggested">We strongly suggest this method to install termscp</span>
</p> </p>
@@ -23,8 +21,8 @@
<pre><span class="function">curl</span> --proto <span class="string">'=https'</span> --tlsv1.2 -sSLf <span class="string">"https://git.io/JBhDb"</span> | sh</pre> <pre><span class="function">curl</span> --proto <span class="string">'=https'</span> --tlsv1.2 -sSLf <span class="string">"https://git.io/JBhDb"</span> | sh</pre>
</div> </div>
</section> </section>
<section> <section class="w-full">
<h2> <h2 class="text-2xl font-thin">
<i class="devicon-windows8-plain"></i>&nbsp;<span translate="getStarted.windows.title">Windows users</span> <i class="devicon-windows8-plain"></i>&nbsp;<span translate="getStarted.windows.title">Windows users</span>
</h2> </h2>
<div class="installation"> <div class="installation">
@@ -44,13 +42,13 @@
<pre><span class="function">choco</span> install <span class="string">termscp</span> -s .</pre> <pre><span class="function">choco</span> install <span class="string">termscp</span> -s .</pre>
</div> </div>
</section> </section>
<section> <section class="w-full">
<h2> <h2 class="text-2xl font-thin">
<i class="devicon-linux-plain"></i>&nbsp;<span translate="getStarted.linuxUsers">Linux users</span> <i class="devicon-linux-plain"></i>&nbsp;<span translate="getStarted.linuxUsers">Linux users</span>
</h2> </h2>
<div class="sub-system"> <div class="sub-system">
<div class="alert alert-warning"> <div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
<p> <p class="text-lg">
<i class="fas fa-exclamation-triangle"></i> <i class="fas fa-exclamation-triangle"></i>
<span translate="getStarted.notConfident">Opt for these methods instead if you don't feel confident using <span translate="getStarted.notConfident">Opt for these methods instead if you don't feel confident using
the shell script</span> the shell script</span>
@@ -104,16 +102,16 @@ sudo <span class="function">rpm</span> -U <span class="string">termscp.rpm</span
</div> </div>
</div> </div>
</section> </section>
<section> <section class="w-full">
<h2> <h2 class="text-2xl font-thin">
<i class="devicon-apple-plain"></i>&nbsp;<span translate="getStarted.macos.title">MacOS users</span> <i class="devicon-apple-plain"></i>&nbsp;<span translate="getStarted.macos.title">MacOS users</span>
</h2> </h2>
<div class="installation"> <div class="installation">
<div class="alert alert-warning"> <div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
<p> <p class="text-lg">
<i class="fas fa-exclamation-triangle"></i> <i class="fas fa-exclamation-triangle"></i>
<span translate="getStarted.notConfident">Opt for this method instead if you don't feel confident using the <span translate="getStarted.notConfident">Opt for these methods instead if you don't feel confident using
shell script</span> the shell script</span>
</p> </p>
</div> </div>
<p> <p>
@@ -123,13 +121,13 @@ sudo <span class="function">rpm</span> -U <span class="string">termscp.rpm</span
<pre><span class="function">brew</span> install <span class="string">veeso/termscp/termscp</span></pre> <pre><span class="function">brew</span> install <span class="string">veeso/termscp/termscp</span></pre>
</div> </div>
</section> </section>
<section> <section class="w-full">
<h2> <h2 class="text-2xl font-thin">
<i class="devicon-rust-plain"></i>&nbsp;<span translate="getStarted.cargo.title">Install with Cargo</span> <i class="devicon-rust-plain"></i>&nbsp;<span translate="getStarted.cargo.title">Install with Cargo</span>
</h2> </h2>
<div class="installation"> <div class="installation">
<div class="alert alert-warning"> <div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
<p> <p class="text-lg">
<i class="fas fa-exclamation-triangle"></i> <i class="fas fa-exclamation-triangle"></i>
<span translate="getStarted.noBinary">Opt for this method instead if binaries for your platform are not <span translate="getStarted.noBinary">Opt for this method instead if binaries for your platform are not
available</span> available</span>
@@ -142,10 +140,10 @@ sudo <span class="function">rpm</span> -U <span class="string">termscp.rpm</span
<span translate="getStarted.cargo.requirements">To install termscp via Cargo, these requirements must be <span translate="getStarted.cargo.requirements">To install termscp via Cargo, these requirements must be
satisfied:</span> satisfied:</span>
</p> </p>
<ul> <ul class="list-disc px-8">
<li> <li>
Linux: Linux:
<ul> <ul class="list-disc px-12">
<li>pkg-config</li> <li>pkg-config</li>
<li>libssh2</li> <li>libssh2</li>
<li>openssl-dev</li> <li>openssl-dev</li>
@@ -153,7 +151,7 @@ sudo <span class="function">rpm</span> -U <span class="string">termscp.rpm</span
</li> </li>
<li> <li>
FreeBSD: FreeBSD:
<ul> <ul class="list-disc px-12">
<li>libssh</li> <li>libssh</li>
<li>dbus</li> <li>dbus</li>
<li>pkg-conf</li> <li>pkg-conf</li>

83
site/html/home.html Normal file
View File

@@ -0,0 +1,83 @@
<!DOCTYPE html>
<section id="intro" class="flex flex-col mx-auto items-center justify-center w-full px-4 dark:bg-brand dark:text-gray-100">
<h1 class="text-3xl text-center font-thin">termscp</h1>
<img class="w-[256px] h-auto m-auto" alt="logo" src="assets/images/termscp.webp" />
<h2 class="text-xl font-thin text-center py-6" translate="intro.caption">
A feature rich terminal UI file transfer and explorer with support for
SCP/SFTP/FTP/S3/SMB
</h2>
<button class="bg-brand hover:bg-gray-800 text-white font-thin text-xl py-2 px-4 rounded-xl max-w-fit">
<a href="/get-started.html" class="no-underline" translate="intro.getStarted">Get started →</a>
</button>
<div class="p-4 my-4 text-sm text-green-800 rounded-lg bg-green-50">
<p class="text-lg">
<span translate="intro.versionAlert">termscp 0.12.0 is NOW out! Download it from</span>&nbsp;
<a href="/get-started.html" translate="intro.here">here!</a>
</p>
</div>
<div class="grid grid-cols-3 sm:grid-cols-1 gap-8 py-8 w-4/6 sm:w-full">
<div class="feature">
<h3 translate="intro.features.handy.title" class="text-center text-lg">Handy UI</h3>
<p translate="intro.features.handy.body" class="text-center">
Explore and operate on the remote and on the local machine file system
with a handy UI.
</p>
</div>
<div class="feature">
<h3 translate="intro.features.crossPlatform.title" class="text-center text-lg">Cross platform</h3>
<p translate="intro.features.crossPlatform.body" class="text-center">
Runs on Windows, MacOS, Linux and BSD
</p>
</div>
<div class="feature">
<h3 translate="intro.features.customizable.title" class="text-center text-lg">Customizable</h3>
<p translate="intro.features.customizable.body" class="text-center">
Customize the file explorer, the text editor to use and default
options
</p>
</div>
<div class="feature">
<h3 translate="intro.features.bookmarks.title" class="text-center text-lg">Bookmarks</h3>
<p translate="intro.features.bookmarks.body" class="text-center">
Connect to your favourite hosts through built-in bookmarks and recent
connections support
</p>
</div>
<div class="feature">
<h3 translate="intro.features.security.title" class="text-center text-lg">Security first</h3>
<p translate="intro.features.security.body" class="text-center">
Save your password into your operating system key vault
</p>
</div>
<div class="feature">
<h3 translate="intro.features.performance.title" class="text-center text-lg">Eye on performance</h3>
<p translate="intro.features.performance.body" class="text-center">
termscp has been developed keeping an eye on performance to prevent
cpu usage
</p>
</div>
</div>
<div class="w-4/6 sm:w-5/6">
<video autoplay muted loop>
<source src="assets/videos/explorer.mp4" type="video/mp4" resolve-video-fallback="assets/images/explorer.gif" />
</video>
</div>
<hr class="h-px my-8 bg-gray-800 border-0" />
<div class="flex flex-row sm:flex-col justify-around gap-12">
<div class="hook">
<h3 class="text-center text-gray-500 dark:text-gray-100 font-light text-xl">
<a href="/get-started.html" class="no-underline hover:underline" translate="intro.footer.getStarted">Get started</a>
</h3>
</div>
<div class="hook">
<h3 class="text-center text-gray-500 dark:text-gray-100 font-light text-xl">
<a href="/user-manual.html" class="no-underline hover:underline" translate="intro.footer.manual">User manual</a>
</h3>
</div>
<div class="hook">
<h3 class="text-center text-gray-500 dark:text-gray-100 font-light text-xl">
<a href="/updates.html" class="no-underline hover:underline" translate="intro.footer.updates">Install updates</a>
</h3>
</div>
</div>
</section>

View File

@@ -1,96 +0,0 @@
<head>
<link rel="stylesheet" href="css/intro.css" />
</head>
<body>
<section id="intro" class="container intro">
<h1 class="title">termscp</h1>
<img class="logo" alt="logo" src="assets/images/termscp.webp" />
<h2 class="caption" translate="intro.caption">
A feature rich terminal UI file transfer and explorer with support for
SCP/SFTP/FTP/S3
</h2>
<button class="pure-button get-started">
<a href="#get-started" translate="intro.getStarted">Get started →</a>
</button>
<div class="alert alert-center alert-success">
<p>
<span translate="intro.versionAlert"
>termscp 0.12.0 is NOW out! Download it from</span
>&nbsp;
<a href="#get-started" translate="intro.here">here!</a>
</p>
</div>
<div class="features">
<div class="feature">
<h3 translate="intro.features.handy.title">Handy UI</h3>
<p translate="intro.features.handy.body">
Explore and operate on the remote and on the local machine file system
with a handy UI.
</p>
</div>
<div class="feature">
<h3 translate="intro.features.crossPlatform.title">Cross platform</h3>
<p translate="intro.features.crossPlatform.body">
Runs on Windows, MacOS, Linux and BSD
</p>
</div>
<div class="feature">
<h3 translate="intro.features.customizable.title">Customizable</h3>
<p translate="intro.features.customizable.body">
Customize the file explorer, the text editor to use and default
options
</p>
</div>
<div class="feature">
<h3 translate="intro.features.bookmarks.title">Bookmarks</h3>
<p translate="intro.features.bookmarks.body">
Connect to your favourite hosts through built-in bookmarks and recent
connections support
</p>
</div>
<div class="feature">
<h3 translate="intro.features.security.title">Security first</h3>
<p translate="intro.features.security.body">
Save your password into your operating system key vault
</p>
</div>
<div class="feature">
<h3 translate="intro.features.performance.title">Eye on performance</h3>
<p translate="intro.features.performance.body">
termscp has been developed keeping an eye on performance to prevent
cpu usage
</p>
</div>
</div>
<div class="preview">
<video autoplay muted loop>
<source
src="assets/videos/explorer.mp4"
type="video/mp4"
resolve-video-fallback="assets/images/explorer.gif"
/>
</video>
</div>
<div class="discover">
<div class="hook">
<h3>
<a href="#get-started" translate="intro.footer.getStarted"
>Get started</a
>
</h3>
</div>
<div class="hook">
<h3>
<a href="#user-manual" translate="intro.footer.manual">User manual</a>
</h3>
</div>
<div class="hook">
<h3>
<a href="#updates" translate="intro.footer.updates"
>Install updates</a
>
</h3>
</div>
</div>
</section>
</body>

View File

@@ -2,25 +2,16 @@
<link rel="stylesheet" href="css/updates.css" /> <link rel="stylesheet" href="css/updates.css" />
</head> </head>
<body> <body>
<section id="updates" class="container updates"> <section id="updates" class="flex flex-col mx-auto items-center justify-center w-full px-12 gap-8 dark:text-gray-100">
<h1 translate="updates.title">Keeping termscp up to date</h1> <h1 translate="updates.title" class="text-3xl font-thin">Keeping termscp up to date</h1>
<div class="alert alert-warning">
<p>
<i class="fas fa-exclamation-triangle"></i>
<span translate="updates.disclaimer">
Updating termscp with this method is only available for 0.7.x versions
or higher. If you have an older version, you have to install updates
using the</span>&nbsp;<a href="#get-started">install.sh script</a>
</p>
</div>
<!-- Reasons --> <!-- Reasons -->
<section> <section>
<h2> <h2 class="text-2xl font-thin">
<i class="fa fa-question-circle"></i>&nbsp;<span translate="updates.reasons.title">Why should you install <i class="fa fa-question-circle"></i>&nbsp;<span translate="updates.reasons.title">Why should you install
updates</span> updates</span>
</h2> </h2>
<div class="wall-of-text"> <div class="wall-of-text">
<p translate="updates.reasons.wallOfText"> <p translate="updates.reasons.wallOfText" class="text-gray-700 dark:text-gray-300">
Termscp is an application that is still in its early stage of Termscp is an application that is still in its early stage of
development, the first version has been released in december in 2020 development, the first version has been released in december in 2020
and practically there's only one and practically there's only one
@@ -42,7 +33,7 @@
awesome features 🦄 you can't miss and the application is getting more awesome features 🦄 you can't miss and the application is getting more
reliable and stable after each update 😄 reliable and stable after each update 😄
</p> </p>
<p class="tl-dr"> <p class="italic text-xl text-gray-700 dark:text-gray-300">
<span>TL;DR</span> <span>TL;DR</span>
<span translate="updates.reasons.tldr"></span> <span translate="updates.reasons.tldr"></span>
</p> </p>
@@ -50,26 +41,26 @@
</section> </section>
<!-- Gui method --> <!-- Gui method -->
<section> <section>
<h2><i class="fa fa-desktop"></i>&nbsp;<span translate="updates.gui.title">GUI method</span></h2> <h2 class="text-2xl font-thin"><i class="fa fa-desktop"></i>&nbsp;<span translate="updates.gui.title">GUI method</span></h2>
<div class="installation"> <div class="installation">
<p translate="updates.gui.body" class="description"> <p translate="updates.gui.body" class="text-gray-700 dark:text-gray-300">
The GUI method just consists in starting termscp with no options, you The GUI method just consists in starting termscp with no options, you
then should be in front of the authentication form. If there's an then should be in front of the authentication form. If there's an
update available a message like "termscp x.y.z is OUT! Update and read update available a message like "termscp x.y.z is OUT! Update and read
release notes with CTRL+R". All you have to do at this point to update release notes with CTRL+R". All you have to do at this point to update
termscp, is: termscp, is:
</p> </p>
<ol> <ol class="list-decimal px-8 text-gray-700 dark:text-gray-300">
<li translate="updates.gui.steps.st">press CTRL+R. The release notes should now be displayed.</li> <li translate="updates.gui.steps.st">press CTRL+R. The release notes should now be displayed.</li>
<li translate="updates.gui.steps.nd">Select "YES" in the "Install update?" radio input</li> <li translate="updates.gui.steps.nd">Select "YES" in the "Install update?" radio input</li>
<li translate="updates.gui.steps.rd">Press "ENTER"</li> <li translate="updates.gui.steps.rd">Press "ENTER"</li>
</ol> </ol>
<p translate="updates.gui.then" class="description"> <p translate="updates.gui.then" class="text-gray-700 dark:text-gray-300">
If everything worked correctly a green message "termscp x.y.z has been If everything worked correctly a green message "termscp x.y.z has been
installed!" will be displayed. Just restart termscp and enjoy the installed!" will be displayed. Just restart termscp and enjoy the
update 😄 update 😄
</p> </p>
<div class="alert alert-warning"> <div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
<p> <p>
<i class="fas fa-exclamation-triangle"></i> <i class="fas fa-exclamation-triangle"></i>
<span translate="updates.gui.pex"> <span translate="updates.gui.pex">
@@ -82,20 +73,20 @@
</section> </section>
<!-- CLI method --> <!-- CLI method -->
<section> <section>
<h2><i class="fa fa-glasses"></i>&nbsp;<span translate="updates.cli.title">CLI method</span></h2> <h2 class="text-2xl font-thin"><i class="fa fa-glasses"></i>&nbsp;<span translate="updates.cli.title">CLI method</span></h2>
<div class="installation"> <div class="installation">
<p translate="updates.cli.body" class="description"> <p translate="updates.cli.body" class="text-gray-700 dark:text-gray-300">
If you prefer, you can install a new update just using the dedicated If you prefer, you can install a new update just using the dedicated
CLI option: CLI option:
</p> </p>
<pre><span class="function">termscp</span> --update</pre> <pre><span class="function">termscp</span> --update</pre>
<div class="alert alert-warning"> <div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
<p> <p>
<i class="fas fa-exclamation-triangle"></i> <i class="fas fa-exclamation-triangle"></i>
<span translate="updates.cli.pex">Run with sudo if necessary (Debian/FreeBSD/RedHat users)</span> <span translate="updates.cli.pex">Run with sudo if necessary (Debian/FreeBSD/RedHat users)</span>
</p> </p>
</div> </div>
<p translate="updates.cli.then" class="description"> <p translate="updates.cli.then" class="text-gray-700 dark:text-gray-300">
Once started, you will be prompted whether to install or not the Once started, you will be prompted whether to install or not the
update. Confirm the installation and ta-dah, the new version of update. Confirm the installation and ta-dah, the new version of
termscp should now be available on your machine termscp should now be available on your machine

View File

@@ -1,272 +1,75 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en_US"> <html lang="en_US" class="dark">
<head>
<title> <head>
termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3 <title>
</title> termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3/SMB | termscp
<meta </title>
property="og:description" <meta property="og:description"
content="termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/S3. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible" content="a WinSCP alternative for Linux and MacOS with support for SCP/SFTP/FTP/S3/SMB. Command line file transfer with user interface compatible with all the operating systems." />
/> <meta name="description"
<meta content="a WinSCP alternative for Linux and MacOS with support for SCP/SFTP/FTP/S3/SMB. Command line file transfer with user interface compatible with all the operating systems." />
name="description" <meta property="og:title" content="termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3/SMB | termscp" />
content="termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/S3. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible" <meta charset="utf-8" />
/> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta <meta name="robots" content="index, follow" />
property="og:title" <meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
content="termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3" <meta property="og:image:type" content="image/jpg" />
/> <meta property="og:image:width" content="1280" />
<meta charset="utf-8" /> <meta property="og:image:height" content="640" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta property="og:type" content="website" />
<meta name="robots" content="index, follow" /> <meta property="og:site_name" content="termscp" />
<meta <meta property="og:locale" content="en_US" />
property="og:image" <meta property="og:url" content="https://termscp.veeso.dev" />
content="https://termscp.veeso.dev/assets/images/og_preview.jpg" <!-- Icons -->
/> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
<meta property="og:image:type" content="image/jpg" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<meta property="og:image:width" content="1024" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
<meta property="og:image:height" content="820" /> integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
<meta property="og:type" content="website" /> crossorigin="anonymous" />
<meta property="og:site_name" content="termscp" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
<meta property="og:locale" content="en_US" /> integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
<meta property="og:url" content="https://termscp.veeso.dev" /> crossorigin="anonymous" />
<!-- Pure.css --> <!-- tailwind -->
<link <link href="output.css" rel="stylesheet" />
rel="stylesheet" <!-- Favicons -->
href="https://unpkg.com/purecss@2.0.5/build/pure-min.css" <link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
/> <link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
<!-- Icons --> <link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
<link </head>
rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" <body>
/> <div id="layout" class="dark:bg-brand dark:text-gray-100">
<link
rel="stylesheet" <!-- Menu -->
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" <header id="menu"></header>
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" <main>
crossorigin="anonymous" <div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
/> </main>
<link <footer id="footer"></footer>
rel="stylesheet" </div>
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css" <!-- Scripts -->
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA==" <!-- jQuery -->
crossorigin="anonymous" <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
/> <!-- Showdown JS-->
<!-- Main --> <script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
<link rel="stylesheet" href="css/markdown.css" /> integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
<link rel="stylesheet" href="css/menu.css" /> crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="css/main.css" /> <!-- Local -->
<!-- Favicons --> <script src="js/lang.min.js"></script>
<link <script src="js/core.js"></script>
rel="icon" <script src="js/events.js"></script>
type="image/png" <script src="js/resolvers.js"></script>
sizes="96x96" <!-- ko-fi -->
href="assets/images/favicon-96x96.png" <script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
/> <script>
<link kofiWidgetOverlay.draw("veeso", {
rel="icon" type: "floating-chat",
type="image/png" "floating-chat.donateButton.text": "Support me",
sizes="32x32" "floating-chat.donateButton.background-color": "#31363b",
href="assets/images/favicon-32x32.png" "floating-chat.donateButton.text-color": "#fff",
/> });
<link </script>
rel="icon" </body>
type="image/png"
sizes="16x16"
href="assets/images/favicon-16x16.png"
/>
</head>
<body>
<div id="layout">
<!-- Menu toggle -->
<a href="#menu" id="menu-burger" class="menu-link">
<!-- Hamburger icon -->
<span></span>
</a>
<!-- Menu -->
<header id="menu">
<div class="pure-menu">
<div class="pure-menu-heading">
<div class="pic-box">
<img class="avatar" alt="logo" src="assets/images/termscp.webp" />
</div>
<h1>termscp</h1>
<p translate="menu.desc">
A feature rich terminal UI file transfer
</p>
<a href="https://github.com/veeso/termscp/stargazers/">
<img
src="https://img.shields.io/github/stars/veeso/termscp.svg?style=social&label=Star&maxAge=2592000"
/>
</a>
</div>
<ul class="pure-menu-list">
<li class="pure-menu-item pure-menu-selected">
<a href="#intro" class="pure-menu-link" translate="menu.intro"
>Intro</a
>
</li>
<li class="pure-menu-item">
<a
href="#get-started"
class="pure-menu-link"
translate="menu.getStarted"
>Get started</a
>
</li>
<li class="pure-menu-item">
<a href="#updates" class="pure-menu-link" translate="menu.updates"
>Install updates</a
>
</li>
<li class="pure-menu-item">
<a
href="#user-manual"
class="pure-menu-link"
translate="menu.manual"
>User manual</a
>
</li>
<li class="pure-menu-item">
<a
href="#changelog"
class="pure-menu-link"
translate="menu.changelog"
>Release history</a
>
</li>
<li class="pure-menu-item">
<a
href="https://github.com/veeso/termscp"
class="pure-menu-link"
target="_blank"
>Github&nbsp;<i class="fas fa-external-link-alt"></i
></a>
</li>
<li class="pure-menu-item">
<a
href="https://veeso.dev/"
class="pure-menu-link"
target="_blank"
><span translate="menu.author">About the author</span>&nbsp;<i
class="fas fa-external-link-alt"
></i
></a>
</li>
<li class="pure-menu-item">
<a
href="https://ko-fi.com/veeso"
class="pure-menu-link"
target="_blank"
><span translate="menu.support">Support me</span>&nbsp;<i
class="fas fa-external-link-alt"
></i
></a>
</li>
</ul>
<div class="pure-menu-bottom">
<ul>
<li>
<a href="https://github.com/veeso/termscp" target="_blank"
><i class="devicon-github-original"></i
></a>
</li>
<li>
<a href="https://crates.io/crates/termscp" target="_blank"
><i class="devicon-rust-plain"></i
></a>
</li>
<li>
<a
href="https://community.chocolatey.org/packages/termscp"
target="_blank"
><i class="devicon-windows8-plain"></i
></a>
</li>
<li>
<a href="https://ko-fi.com/veeso" target="_blank"
><i class="fa fa-coffee"></i
></a>
</li>
</ul>
</div>
</div>
</header>
<main>
<div id="main"></div>
</main>
<footer>
<div class="container">
<ul class="contacts">
<li>
<a href="https://github.com/veeso/termscp" target="_blank"
><i class="devicon-github-original"></i
></a>
</li>
<li>
<a href="https://crates.io/crates/termscp" target="_blank"
><i class="devicon-rust-plain"></i
></a>
</li>
<li>
<a
href="https://community.chocolatey.org/packages/termscp"
target="_blank"
><i class="devicon-windows8-plain"></i
></a>
</li>
<li>
<a href="https://ko-fi.com/veeso" target="_blank"
><i class="fa fa-coffee"></i
></a>
</li>
</ul>
<!-- vat number -->
<p class="footer--vat">
<span>P.IVA IT03104140300 </span>
</p>
<p class="footer--address">
<span>Via Antonio Marangoni 33, 33100, Udine (UD)</span>
</p>
<!-- Copyright -->
<p class="footer--copyright">
<span>Christian Visintin © </span><span resolve-copyright></span>
<span>&nbsp;|&nbsp;</span>
<a class="footer--link" href="https://veeso.dev/en/privacy" target="_blank"
>Privacy policy</a
>
<span>&nbsp;|&nbsp;</span>
<a class="footer--link" href="https://veeso.dev/en/cookie-policy" target="_blank"
>Cookie policy</a
>
</p>
</div>
</footer>
</div>
<!-- Scripts -->
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- Showdown JS-->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<!-- Local -->
<script src="js/lang.min.js"></script>
<script src="js/core.js"></script>
<script src="js/events.js"></script>
<script src="js/resolvers.js"></script>
<!-- ko-fi -->
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
<script>
kofiWidgetOverlay.draw("veeso", {
type: "floating-chat",
"floating-chat.donateButton.text": "Support me",
"floating-chat.donateButton.background-color": "#323842",
"floating-chat.donateButton.text-color": "#fff",
});
</script>
</body>
</html> </html>

132
site/input.css Normal file
View File

@@ -0,0 +1,132 @@
@import "css/markdown.css";
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: "Sora";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwWa-xsaQ.woff2)
format("woff2");
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: "Sora";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwV6-x.woff2)
format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: "Sora";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwWa-xsaQ.woff2)
format("woff2");
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: "Sora";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwV6-x.woff2)
format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
U+FEFF, U+FFFD;
}
html {
scroll-behavior: smooth;
}
body {
font-family: "Sora", sans-serif;
margin: 0;
min-width: 100vw;
overflow-x: hidden;
padding: 0;
}
main {
padding-top: 5rem;
}
p {
font-weight: 300;
}
input {
font-family: "Sora", sans-serif;
font-size: 1em;
}
textarea {
font-family: "Sora", sans-serif;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
button {
box-sizing: border-box;
cursor: pointer;
}
button,
input {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
pre {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
color: #d0d0d0;
background-color: #222629;
border-radius: 3px;
word-wrap: normal;
border-radius: 0.5em;
}
pre .function {
color: #f08d49;
}
pre .string {
color: #7ec699;
}

View File

@@ -33,3 +33,99 @@ function languageSupported(lang) {
function setSiteLanguage(lang) { function setSiteLanguage(lang) {
setLanguage(lang); setLanguage(lang);
} }
const converter = new showdown.Converter({ tables: true });
/**
* @description load page associated to hash
* @param {string} hash
*/
function loadPage(path) {
switch (path) {
case "/":
case "/index.html":
loadHtml("home.html");
break;
case "/get-started.html":
loadHtml("get-started.html");
break;
case "/user-manual.html":
loadUserManual();
break;
case "/updates.html":
loadHtml("updates.html");
break;
case "/changelog.html":
loadMarkdown(
"https://raw.githubusercontent.com/veeso/termscp/main/CHANGELOG.md"
);
break;
}
}
function loadHtml(page) {
const url = "html/" + page;
$("#main").load(url, function () {
onPageLoaded();
});
}
function loadMenu() {
$("#menu").load("html/components/menu.html", function () {
onPageLoaded();
});
}
function loadFooter() {
$("#footer").load("html/components/footer.html", function () {
onPageLoaded();
});
}
function loadMarkdown(page) {
getMarkdown(page, function (md) {
const div = jQuery("<div/>", {
id: page,
class: "container markdown",
});
div.html(converter.makeHtml(md));
$("#main").empty();
$("#main").append(div);
onPageLoaded();
});
}
/**
* @description get markdown and pass result to onLoaded
* @param {string} url
* @param {function} onLoaded
*/
function getMarkdown(url, onLoaded) {
$.ajax({
url,
type: "GET",
dataType: "text",
success: onLoaded,
});
}
function loadUserManual() {
// Load language
const lang = getNavigatorLanguage();
if (lang === "en") {
loadMarkdown(
`https://raw.githubusercontent.com/veeso/termscp/main/docs/man.md`
);
} else {
loadMarkdown(
`https://raw.githubusercontent.com/veeso/termscp/main/docs/${lang}/man.md`
);
}
}
// startup
$(function () {
loadPage(window.location.pathname);
loadMenu();
loadFooter();
});

View File

@@ -1,133 +1,81 @@
const hashBlacklist = ["#menu"];
const converter = new showdown.Converter({ tables: true });
/**
* @description handle hash change
*/
function onHashChange() {
const hash = location.hash;
if (!hashBlacklist.includes(hash) && hash.length > 0) {
selectMenuEntry(location.hash);
loadPage(hash);
} else if (hash.length === 0 || hash === "#") {
loadPage("#intro");
}
}
/**
* @description select menu entry
* @param {*} hash
*/
function selectMenuEntry(hash) {
// Remove current entry
$(".pure-menu-selected").removeClass("pure-menu-selected");
$('a[href$="' + hash + '"]')
.parent()
.addClass("pure-menu-selected");
}
/**
* @description load page associated to hash
* @param {string} hash
*/
function loadPage(hash) {
switch (hash) {
case "#intro":
loadHtml("intro.html");
break;
case "#get-started":
loadHtml("get-started.html");
break;
case "#user-manual":
loadUserManual();
break;
case "#updates":
loadHtml("updates.html");
break;
case "#changelog":
loadMarkdown(
"https://raw.githubusercontent.com/veeso/termscp/main/CHANGELOG.md"
);
break;
}
window.scrollTo(0, 0);
}
function loadHtml(page) {
const url = "html/" + page;
$("#main").load(url, function () {
onPageLoaded();
});
}
function loadMarkdown(page) {
getMarkdown(page, function (md) {
const div = jQuery("<div/>", {
id: page,
class: "container markdown",
});
div.html(converter.makeHtml(md));
$("#main").empty();
$("#main").append(div);
onPageLoaded();
});
}
/**
* @description get markdown and pass result to onLoaded
* @param {string} url
* @param {function} onLoaded
*/
function getMarkdown(url, onLoaded) {
$.ajax({
url,
type: "GET",
dataType: "text",
success: onLoaded,
});
}
function onMenuBurgerClick() {
const active = $("#menu").hasClass("active");
if (active) {
$("#layout").removeClass("active");
$("#menu").removeClass("active");
} else {
$("#layout").addClass("active");
$("#menu").addClass("active");
}
}
function loadUserManual() {
// Load language
const lang = getNavigatorLanguage();
if (lang === "en") {
loadMarkdown(
`https://raw.githubusercontent.com/veeso/termscp/main/docs/man.md`
);
} else {
loadMarkdown(
`https://raw.githubusercontent.com/veeso/termscp/main/docs/${lang}/man.md`
);
}
}
function onPageLoaded() { function onPageLoaded() {
reloadTranslations(); reloadTranslations();
setThemeToggle();
setTheme(getTheme());
} }
// Register function onToggleMenu() {
window.onhashchange = onHashChange; const mobileMenu = $("#mobile-menu");
let wasVisible = false;
// if not visible set flex and slide in, otherwise slide out
if (!mobileMenu.is(":visible")) {
mobileMenu.css("display", "flex");
mobileMenu.addClass("animate__animated animate__slideInLeft");
} else {
mobileMenu.addClass("animate__animated animate__slideOutLeft");
wasVisible = true;
}
// on animation end remove animation, if visible set hidden
mobileMenu.on("animationend", () => {
mobileMenu.removeClass(
"animate__animated animate__slideOutLeft animate__slideInLeft"
);
if (wasVisible) {
mobileMenu.css("display", "none");
}
mobileMenu.off("animationend");
});
}
function getTheme() {
const theme = localStorage.getItem("theme");
if (!theme) {
return window.matchMedia("(prefers-color-scheme: dark)").matches
? "theme-dark"
: "theme-light";
}
return theme;
}
function setThemeToggle() {
if (getTheme() === "theme-dark") {
$("#theme-toggle-dark-icon").css("display", "block");
$("#theme-toggle-light-icon").css("display", "none");
} else {
$("#theme-toggle-dark-icon").css("display", "none");
$("#theme-toggle-light-icon").css("display", "block");
}
}
// function to set a given theme/color-scheme
function setTheme(themeName) {
localStorage.setItem("theme", themeName);
if (themeName === "theme-dark") {
document.documentElement.classList.add("dark");
} else {
document.documentElement.classList.remove("dark");
}
setThemeToggle();
}
// function to toggle between light and dark theme
function toggleTheme() {
console.log("theme", getTheme());
if (getTheme() === "theme-dark") {
setTheme("theme-light");
} else {
setTheme("theme-dark");
}
}
// Startup // Startup
$(function () { $(function () {
onHashChange();
// Init language // Init language
setSiteLanguage(getNavigatorLanguage()); setSiteLanguage(getNavigatorLanguage());
// Burger event listener
$("#menu-burger").on("click", onMenuBurgerClick); // init theme
$(".pure-menu-heading").on("click", function () { setTheme(getTheme());
location.hash = "#";
onHashChange();
});
}); });

3
site/output.css Normal file

File diff suppressed because one or more lines are too long

2
site/robots.txt Normal file
View File

@@ -0,0 +1,2 @@
User-Agent: *
Allow: /

29
site/sitemap.xml Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://termscp.veeso.dev/</loc>
<lastmod>2023-07-05</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://termscp.veeso.dev/get-started.html</loc>
<lastmod>2023-07-05</lastmod>
<priority>0.95</priority>
</url>
<url>
<loc>https://termscp.veeso.dev/updates.html</loc>
<lastmod>2023-07-05</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://termscp.veeso.dev/user-manual.html</loc>
<lastmod>2023-07-05</lastmod>
<priority>0.90</priority>
</url>
<url>
<loc>https://termscp.veeso.dev/changelog.html</loc>
<lastmod>2023-07-05</lastmod>
<priority>0.50</priority>
</url>
</urlset>

75
site/updates.html Normal file
View File

@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en_US">
<head>
<title>
Install termscp updates | termscp
</title>
<meta property="og:description"
content="How to update termscp. Keep termscp up to date with the built-in command." />
<meta name="description"
content="How to update termscp. Keep termscp up to date with the built-in command." />
<meta property="og:title" content="Install termscp updates | termscp" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="index, follow" />
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
<meta property="og:image:type" content="image/jpg" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="640" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="termscp" />
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="https://termscp.veeso.dev" />
<!-- Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
crossorigin="anonymous" />
<!-- tailwind -->
<link href="output.css" rel="stylesheet" />
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
</head>
<body>
<div id="layout">
<!-- Menu -->
<header id="menu"></header>
<main>
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
</main>
<footer id="footer"></footer>
</div>
<!-- Scripts -->
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- Showdown JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- Local -->
<script src="js/lang.min.js"></script>
<script src="js/core.js"></script>
<script src="js/events.js"></script>
<script src="js/resolvers.js"></script>
<!-- ko-fi -->
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
<script>
kofiWidgetOverlay.draw("veeso", {
type: "floating-chat",
"floating-chat.donateButton.text": "Support me",
"floating-chat.donateButton.background-color": "#31363b",
"floating-chat.donateButton.text-color": "#fff",
});
</script>
</body>
</html>

75
site/user-manual.html Normal file
View File

@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en_US">
<head>
<title>
termscp user manual | termscp
</title>
<meta property="og:description"
content="How to use termscp. User manual for termscp. How to setup ssh keys in termscp? How to set color themes in termscp?" />
<meta name="description"
content="How to use termscp. User manual for termscp. How to setup ssh keys in termscp? How to set color themes in termscp?" />
<meta property="og:title" content="termscp user manual | termscp" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="index, follow" />
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
<meta property="og:image:type" content="image/jpg" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="640" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="termscp" />
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="https://termscp.veeso.dev" />
<!-- Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
crossorigin="anonymous" />
<!-- tailwind -->
<link href="output.css" rel="stylesheet" />
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
</head>
<body>
<div id="layout">
<!-- Menu -->
<header id="menu"></header>
<main>
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
</main>
<footer id="footer"></footer>
</div>
<!-- Scripts -->
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- Showdown JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- Local -->
<script src="js/lang.min.js"></script>
<script src="js/core.js"></script>
<script src="js/events.js"></script>
<script src="js/resolvers.js"></script>
<!-- ko-fi -->
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
<script>
kofiWidgetOverlay.draw("veeso", {
type: "floating-chat",
"floating-chat.donateButton.text": "Support me",
"floating-chat.donateButton.background-color": "#31363b",
"floating-chat.donateButton.text-color": "#fff",
});
</script>
</body>
</html>

26
tailwind.config.js Normal file
View File

@@ -0,0 +1,26 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./site/**/*.{html,js}"],
darkMode: "class",
theme: {
screens: {
sm: { max: "640px" },
md: "768px",
lg: "1024px",
xl: "1280px",
"2xl": "1536px",
},
extend: {
colors: {
brand: "#31363b",
},
fontSize: {
xl: "1.5rem",
"2xl": "2rem",
"3xl": "3.5rem",
"4xl": "7rem",
},
},
},
plugins: [],
};