diff --git a/site/assets/images/og_preview.jpg b/site/assets/images/og_preview.jpg index ba928d0..9b5a6ab 100644 Binary files a/site/assets/images/og_preview.jpg and b/site/assets/images/og_preview.jpg differ diff --git a/site/changelog.html b/site/changelog.html new file mode 100644 index 0000000..8cf1de6 --- /dev/null +++ b/site/changelog.html @@ -0,0 +1,74 @@ + + + + + + termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3/SMB | termscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/css/get-started.css b/site/css/get-started.css deleted file mode 100644 index c633146..0000000 --- a/site/css/get-started.css +++ /dev/null @@ -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; -} diff --git a/site/css/intro.css b/site/css/intro.css deleted file mode 100644 index 86f9670..0000000 --- a/site/css/intro.css +++ /dev/null @@ -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; -} diff --git a/site/css/main.css b/site/css/main.css deleted file mode 100644 index 6ec1e78..0000000 --- a/site/css/main.css +++ /dev/null @@ -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; -} diff --git a/site/css/markdown.css b/site/css/markdown.css index b4bd503..2a2a2b0 100644 --- a/site/css/markdown.css +++ b/site/css/markdown.css @@ -12,7 +12,6 @@ } .markdown p { - color: #202020; font-size: 1.1em; } @@ -46,16 +45,11 @@ .markdown blockquote { border-left: 0.25em solid #ccc; - color: #606060; font-size: 90%; padding: 0.1em; padding-left: 0.5em; } -.markdown blockquote p { - color: #606060; -} - .markdown pre code { background-color: inherit; font-size: 100%; @@ -68,6 +62,12 @@ padding: 0.2em 0.4em; } +@media (prefers-color-scheme: dark) { + .markdown code { + background-color: #404040; + } +} + .markdown table { border-collapse: collapse; border-spacing: 0; @@ -82,14 +82,6 @@ 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 th { border: 1px solid #c6cbd1; diff --git a/site/css/menu.css b/site/css/menu.css deleted file mode 100644 index 729529f..0000000 --- a/site/css/menu.css +++ /dev/null @@ -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 `
  • `. - */ -#menu .pure-menu-selected { - background: #ddd; -} - -#menu .pure-menu-selected i { - color: dodgerblue; -} - -/* - This styles a link within a selected menu item `
  • `. - */ -#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; - } -} diff --git a/site/css/updates.css b/site/css/updates.css deleted file mode 100644 index bb651b3..0000000 --- a/site/css/updates.css +++ /dev/null @@ -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; -} diff --git a/site/get-started.html b/site/get-started.html new file mode 100644 index 0000000..7915a59 --- /dev/null +++ b/site/get-started.html @@ -0,0 +1,75 @@ + + + + + + get started with termscp | termscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/html/components/footer.html b/site/html/components/footer.html new file mode 100644 index 0000000..51871e9 --- /dev/null +++ b/site/html/components/footer.html @@ -0,0 +1,38 @@ + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +

    + P.IVA IT03104140300 +

    +

    + Via Antonio Marangoni 33, 33100, Udine (UD) +

    + +

    + Christian Visintin © +  |  + Privacy policy +  |  + Cookie policy +

    +
    +
    \ No newline at end of file diff --git a/site/html/components/menu.html b/site/html/components/menu.html new file mode 100644 index 0000000..6f95186 --- /dev/null +++ b/site/html/components/menu.html @@ -0,0 +1,97 @@ + +
    + +
    +

    + + logo termscp + +

    +

    + +

    +

    + +

    +

    + +

    +

    + +

    + +
    + + + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + +
    + + \ No newline at end of file diff --git a/site/html/get-started.html b/site/html/get-started.html index e722585..65dd276 100644 --- a/site/html/get-started.html +++ b/site/html/get-started.html @@ -1,17 +1,15 @@ - - - + -
    -

    Get started

    -
    -

    +
    +

    Get started

    +
    +

     Quick setup

    -
    -

    +

    +

    We strongly suggest this method to install termscp

    @@ -23,8 +21,8 @@
    curl --proto '=https' --tlsv1.2 -sSLf "https://git.io/JBhDb" | sh
    -
    -

    +
    +

     Windows users

    @@ -44,13 +42,13 @@
    choco install termscp -s .
    -
    -

    +
    +

     Linux users

    -
    -

    +

    +

    Opt for these methods instead if you don't feel confident using the shell script @@ -104,16 +102,16 @@ sudo rpm -U termscp.rpm

    -
    -

    +
    +

     MacOS users

    -
    -

    +

    +

    - Opt for this method instead if you don't feel confident using the - shell script + Opt for these methods instead if you don't feel confident using + the shell script

    @@ -123,13 +121,13 @@ sudo rpm -U termscp.rpmbrew install veeso/termscp/termscp

    -
    -

    +
    +

     Install with Cargo

    -
    -

    +

    +

    Opt for this method instead if binaries for your platform are not available @@ -142,10 +140,10 @@ sudo rpm -U termscp.rpmTo install termscp via Cargo, these requirements must be satisfied:

    -
      +
      • Linux: -
          +
          • pkg-config
          • libssh2
          • openssl-dev
          • @@ -153,7 +151,7 @@ sudo rpm -U termscp.rpm
          • FreeBSD: -
              +
              • libssh
              • dbus
              • pkg-conf
              • diff --git a/site/html/home.html b/site/html/home.html new file mode 100644 index 0000000..b6735cc --- /dev/null +++ b/site/html/home.html @@ -0,0 +1,83 @@ + +
                +

                termscp

                + logo +

                + A feature rich terminal UI file transfer and explorer with support for + SCP/SFTP/FTP/S3/SMB +

                + +
                +

                + termscp 0.12.0 is NOW out! Download it from  + here! +

                +
                +
                +
                +

                Handy UI

                +

                + Explore and operate on the remote and on the local machine file system + with a handy UI. +

                +
                +
                +

                Cross platform

                +

                + Runs on Windows, MacOS, Linux and BSD +

                +
                +
                +

                Customizable

                +

                + Customize the file explorer, the text editor to use and default + options +

                +
                +
                +

                Bookmarks

                +

                + Connect to your favourite hosts through built-in bookmarks and recent + connections support +

                +
                +
                +

                Security first

                +

                + Save your password into your operating system key vault +

                +
                +
                +

                Eye on performance

                +

                + termscp has been developed keeping an eye on performance to prevent + cpu usage +

                +
                +
                +
                + +
                +
                +
                +
                +

                + Get started +

                +
                +
                +

                + User manual +

                +
                +
                +

                + Install updates +

                +
                +
                +
                \ No newline at end of file diff --git a/site/html/intro.html b/site/html/intro.html deleted file mode 100644 index deb608c..0000000 --- a/site/html/intro.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -
                -

                termscp

                - -

                - A feature rich terminal UI file transfer and explorer with support for - SCP/SFTP/FTP/S3 -

                - -
                -

                - termscp 0.12.0 is NOW out! Download it from  - here! -

                -
                -
                -
                -

                Handy UI

                -

                - Explore and operate on the remote and on the local machine file system - with a handy UI. -

                -
                -
                -

                Cross platform

                -

                - Runs on Windows, MacOS, Linux and BSD -

                -
                -
                -

                Customizable

                -

                - Customize the file explorer, the text editor to use and default - options -

                -
                -
                -

                Bookmarks

                -

                - Connect to your favourite hosts through built-in bookmarks and recent - connections support -

                -
                -
                -

                Security first

                -

                - Save your password into your operating system key vault -

                -
                -
                -

                Eye on performance

                -

                - termscp has been developed keeping an eye on performance to prevent - cpu usage -

                -
                -
                -
                - -
                -
                -
                -

                - Get started -

                -
                -
                -

                - User manual -

                -
                -
                -

                - Install updates -

                -
                -
                -
                - diff --git a/site/html/updates.html b/site/html/updates.html index d14d54a..65cc4a7 100644 --- a/site/html/updates.html +++ b/site/html/updates.html @@ -2,25 +2,16 @@ -
                -

                Keeping termscp up to date

                -
                -

                - - - 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 install.sh script -

                -
                +
                +

                Keeping termscp up to date

                -

                +

                 Why should you install updates

                -

                +

                Termscp is an application that is still in its early stage of development, the first version has been released in december in 2020 and practically there's only one @@ -42,7 +33,7 @@ awesome features 🦄 you can't miss and the application is getting more reliable and stable after each update 😄

                -

                +

                TL;DR

                @@ -50,26 +41,26 @@
                -

                 GUI method

                +

                 GUI method

                -

                +

                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 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 termscp, is:

                -
                  +
                  1. press CTRL+R. The release notes should now be displayed.
                  2. Select "YES" in the "Install update?" radio input
                  3. Press "ENTER"
                  -

                  +

                  If everything worked correctly a green message "termscp x.y.z has been installed!" will be displayed. Just restart termscp and enjoy the update 😄

                  -
                  +

                  @@ -82,20 +73,20 @@

                -

                 CLI method

                +

                 CLI method

                -

                +

                If you prefer, you can install a new update just using the dedicated CLI option:

                termscp --update
                -
                +

                Run with sudo if necessary (Debian/FreeBSD/RedHat users)

                -

                +

                Once started, you will be prompted whether to install or not the update. Confirm the installation and ta-dah, the new version of termscp should now be available on your machine diff --git a/site/index.html b/site/index.html index ab615fe..8d3f333 100644 --- a/site/index.html +++ b/site/index.html @@ -1,272 +1,75 @@ - - - - termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                - - - - - - - -
                -
                -
                -
                -
                -
                  -
                • - -
                • -
                • - -
                • -
                • - -
                • -
                • - -
                • -
                - - - - - -
                -
                -
                - - - - - - - - - - - - - - - + + + + + termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/S3/SMB | termscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                + + + +
                +
                +
                +
                +
                + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/input.css b/site/input.css new file mode 100644 index 0000000..7c321ad --- /dev/null +++ b/site/input.css @@ -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; +} diff --git a/site/js/core.js b/site/js/core.js index 9395d2f..2af3cc5 100644 --- a/site/js/core.js +++ b/site/js/core.js @@ -33,3 +33,99 @@ function languageSupported(lang) { function setSiteLanguage(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("
                ", { + 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(); +}); diff --git a/site/js/events.js b/site/js/events.js index 3c0d87f..03f232e 100644 --- a/site/js/events.js +++ b/site/js/events.js @@ -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("
                ", { - 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() { reloadTranslations(); + setThemeToggle(); + setTheme(getTheme()); } -// Register -window.onhashchange = onHashChange; +function onToggleMenu() { + 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 $(function () { - onHashChange(); // Init language setSiteLanguage(getNavigatorLanguage()); - // Burger event listener - $("#menu-burger").on("click", onMenuBurgerClick); - $(".pure-menu-heading").on("click", function () { - location.hash = "#"; - onHashChange(); - }); + + // init theme + setTheme(getTheme()); }); diff --git a/site/output.css b/site/output.css new file mode 100644 index 0000000..bf2fdca --- /dev/null +++ b/site/output.css @@ -0,0 +1,3 @@ +.markdown{font-family:Arial,Helvetica,sans-serif}.markdown a{color:#1e90ff;text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown p{font-size:1.1em}.markdown h1{font-size:2em}.markdown h2{font-size:1.6em}.markdown h3{font-size:1.4em}.markdown h4{font-size:1.2em}.markdown img{display:none}@media (min-width:600px){.markdown img{display:block;width:60%;margin-left:20%}}.markdown blockquote{border-left:.25em solid #ccc;font-size:90%;padding:.1em .1em .1em .5em}.markdown pre code{background-color:inherit;font-size:100%}.markdown code{background-color:#eee;border-radius:6px;font-size:85%;padding:.2em .4em}@media (prefers-color-scheme:dark){.markdown code{background-color:#404040}}.markdown table{border-collapse:collapse;border-spacing:0;display:block;height:-moz-fit-content;height:fit-content;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}.markdown table tr{border-top:1px solid #c6cbd1}.markdown table td,.markdown table th{border:1px solid #c6cbd1;padding:6px 13px} + +/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.fixed{position:fixed}.left-0{left:0}.top-0{top:0}.m-auto{margin:auto}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mr-2{margin-right:.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-5{height:1.25rem}.h-auto{height:auto}.h-px{height:1px}.h-screen{height:100vh}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5{width:1.25rem}.w-8\/12{width:66.666667%}.w-\[256px\]{width:256px}.w-\[32px\]{width:32px}.w-full{width:100%}.w-screen{width:100vw}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.flex-1{flex:1 1 0%}.cursor-pointer{cursor:pointer}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-12{gap:3rem}.gap-16{gap:4rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.self-end{align-self:flex-end}.justify-self-end{justify-self:end}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-brand{--tw-bg-opacity:1;background-color:rgb(49 54 59/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-12{padding-left:3rem;padding-right:3rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem}.pb-8,.py-8{padding-bottom:2rem}.pt-4{padding-top:1rem}.text-center{text-align:center}.text-2xl{font-size:2rem}.text-3xl{font-size:3.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.5rem}.text-xs{font-size:.75rem;line-height:1rem}.font-light{font-weight:300}.font-thin{font-weight:100}.italic{font-style:italic}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-brand{--tw-text-opacity:1;color:rgb(49 54 59/var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.no-underline{text-decoration-line:none}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@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+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@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+00??,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}@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+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@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+00??,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-size:1em}input,textarea{font-family:Sora,sans-serif}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}button{box-sizing:border-box;cursor:pointer}button,input{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}a,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:.5em}pre .function{color:#f08d49}pre .string{color:#7ec699}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}:is(.dark .dark\:border-gray-800){--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}:is(.dark .dark\:bg-brand){--tw-bg-opacity:1;background-color:rgb(49 54 59/var(--tw-bg-opacity))}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\:hover\:bg-gray-700:hover){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\:focus\:ring-gray-700:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(55 65 81/var(--tw-ring-opacity))}@media (max-width:640px){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:w-5\/6{width:83.333333%}.sm\:w-full{width:100%}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:flex-col{flex-direction:column}.sm\:pb-24{padding-bottom:6rem}.sm\:text-xl{font-size:1.5rem}}@media (min-width:768px){.md\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:text-2xl{font-size:2rem}.lg\:text-xl{font-size:1.5rem}} \ No newline at end of file diff --git a/site/robots.txt b/site/robots.txt new file mode 100644 index 0000000..f6e6d1d --- /dev/null +++ b/site/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Allow: / diff --git a/site/sitemap.xml b/site/sitemap.xml new file mode 100644 index 0000000..dbeb016 --- /dev/null +++ b/site/sitemap.xml @@ -0,0 +1,29 @@ + + + + https://termscp.veeso.dev/ + 2023-07-05 + 1.00 + + + https://termscp.veeso.dev/get-started.html + 2023-07-05 + 0.95 + + + https://termscp.veeso.dev/updates.html + 2023-07-05 + 0.80 + + + https://termscp.veeso.dev/user-manual.html + 2023-07-05 + 0.90 + + + https://termscp.veeso.dev/changelog.html + 2023-07-05 + 0.50 + + \ No newline at end of file diff --git a/site/updates.html b/site/updates.html new file mode 100644 index 0000000..f46d241 --- /dev/null +++ b/site/updates.html @@ -0,0 +1,75 @@ + + + + + + Install termscp updates | termscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                + + + +
                +
                +
                +
                +
                + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/user-manual.html b/site/user-manual.html new file mode 100644 index 0000000..957b83f --- /dev/null +++ b/site/user-manual.html @@ -0,0 +1,75 @@ + + + + + + termscp user manual | termscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                + + + +
                +
                +
                +
                +
                + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..1d6ba27 --- /dev/null +++ b/tailwind.config.js @@ -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: [], +};