From 6932d908b2a8f693f0d93b5e235380ac1f5bf854 Mon Sep 17 00:00:00 2001 From: Danny Harpigny <dannyhpy@disroot.org> Date: Tue, 30 Jul 2024 11:37:38 +0200 Subject: [PATCH] --- .editorconfig | 14 ++++ css/index.css | 68 ++++++++++++++++++ css/theme.css | 43 ++++++++++++ img/about.png | Bin 0 -> 17575 bytes img/favicon.png | Bin 0 -> 343 bytes index.html | 140 ++++++++++++-------------------------- index.js => js/index.js | 10 +-- opensearchdescription.xml | 6 +- 8 files changed, 175 insertions(+), 106 deletions(-) create mode 100644 .editorconfig create mode 100644 css/index.css create mode 100644 css/theme.css create mode 100644 img/about.png create mode 100644 img/favicon.png rename index.js => js/index.js (92%) diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d57dffd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.css] +indent_style = space +indent_size = 2 + +[*.js] +indent_style = space +indent_size = 2 diff --git a/css/index.css b/css/index.css new file mode 100644 index 0000000..eadd4e9 --- /dev/null +++ b/css/index.css @@ -0,0 +1,68 @@ +#main { + display: flex; + flex-flow: column; + + width: 100%; + + text-align: center; +} + +@media screen and (min-width: 360px) { + #main { + margin: auto; + width: 360px; + } +} + +#about img { + width: 100%; + height: auto; +} + +#search { + display: flex; + flex-direction: column; + align-items: center; +} + +#search > * { + margin: 0.25rem; +} + +.search-inputs { + width: 100%; + height: 2rem; + + display: flex; +} + +.search-inputs > * { + height: 100%; +} + +.search-inputs input[name="query"] { + width: 100%; + box-sizing: border-box; +} + +.search-radio-buttons { + display: flex; + flex-wrap: wrap; +} + +.search-radio-buttons > .category { + display: flex; +} + +.search-radio-buttons > .category:not(:last-child) { + margin-right: 1rem; +} + +.search-radio-buttons > .category > input[type="radio"] { + margin: 0; + margin-right: 0.25rem; +} + +#status { + font-size: smaller; +} diff --git a/css/theme.css b/css/theme.css new file mode 100644 index 0000000..a3ef962 --- /dev/null +++ b/css/theme.css @@ -0,0 +1,43 @@ +:root { + --primary-color: #bc5151; +} + +body { + background: url('https://www.tromsite.com/wp-content/uploads/2018/09/tromsite-bg-pattern-light-5.png'); + background-repeat: repeat; + background-attachment: fixed; + + font-family: sans-serif; +} + +a { + color: var(--primary-color); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.search-inputs input[name="query"] { + border: 1px solid darkgrey; + border-radius: 0.5rem 0 0 0.5rem; +} + +.search-inputs input[type="submit"] { + background-color: var(--primary-color); + + color: white; + cursor: pointer; + + border: none; + border-radius: 0 0.5rem 0.5rem 0; +} + +.search-radio-buttons input[type="radio"] { + accent-color: var(--primary-color); +} + +#status { + color: gray; +} diff --git a/img/about.png b/img/about.png new file mode 100644 index 0000000000000000000000000000000000000000..29e5278cebdff8ccd86473a1b186cafd981a6d0d GIT binary patch literal 17575 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 literal 0 HcmV?d00001 diff --git a/img/favicon.png b/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8d332ebb0d9b9fd22e8833f1bd7f4267e443c4 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSoB=)|t_%z_jg5`>1P1bW8JGbD z8B2ovf*Bm1-ADs*lDyqr7&=&GJwVC}JR*yM#$5+tMkkHg6+l7u5>H=O_807O9NHpb zbGF9=g^qi=IEGl9-aFZwk6Dq!q0_tXk)~~z_aV(_>pv?!!&6i5ow&@%VqrK_;aG}a z%7@OW=0|kTw{2i$eKSX}C}OdOPZQfV?QiUpH9dATs?L1YBhRN$s%x3z9J64aJ&VuO z>~)L=4(1Bld=2s&@)`a!y}41evFxk9{c-UHtXZl#u6el`y;*DDoc&ffK}24{@|?St zkB{8$lc{g&CY<>2+xJQ3g7fb_H?SRVn*86T&Vw_dE@OhqN+C}tU#3tnbe*&`-;>ec aIydV-<|Q*+>ed6j#Ng@b=d#Wzp$P!t5OdD} literal 0 HcmV?d00001 diff --git a/index.html b/index.html index efaf8f0..1c22b1f 100644 --- a/index.html +++ b/index.html @@ -1,110 +1,54 @@ <!DOCTYPE html> <html lang="en"> <head> - <title></title> + <title>TROM Search</title> <meta charset="UTF-8"> <meta name="referrer" content="no-referrer"> <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="theme-color" content="#bc5151"> + <link rel="shortcut icon" href="img/favicon.png"> <link rel="search" title="TROM Search" type="application/opensearchdescription+xml" href="opensearchdescription.xml"> - <style> - * { margin: 0; } - html, body { width: 100%; height: 100%; } -body { - background: url('https://www.tromsite.com/wp-content/uploads/2018/09/tromsite-bg-pattern-light-5.png') !important; background-repeat: repeat !important; background-attachment: fixed !important; - height: auto !important;} - - -#search:before { - content: url("https://www.tromsite.com/wp-content/uploads/2021/02/trom-logo-dark.png"); - transform: scale(.6); - display: block; - width: 100%; -margin: 0 auto;} - - #search-box { - position: fixed; - left: 50%; - top: 1rem; - transform: translateX(-50%); - } - - #info { - color: black; - text-align: center; - font-weight: bold; - } - - #info.error { color: #7b7b7b; margin-top: 20px;font-size: 13px;font-style: italic;} - - #search input[name="query"] { - width: 500px; - height: 40px; - background-color: white; - border: 2px solid darkgrey; - border-radius: 4px; - box-sizing: border-box; - } - - #search { - display: flex; - flex-direction: column; - align-items: center; - } - - #search-inputs { - display: flex; - align-items: center; - margin-bottom: 10px; - } - - #search input[type="submit"] { - height: 40px; - background-color: #bc5151; - color: white; - font-weight: bold; - border: none; - border-radius: 4px; - margin-left: 10px; - cursor: pointer; - padding: 0 10px; - box-sizing: border-box; - width: 20%; - } - - .search-radio-buttons { - display: flex; - justify-content: center; - width: 100%; - } - - #search label { - margin-left: 5px; - margin-right: 15px; - } - </style> - <script type="module" src="index.js"></script> + <link rel="stylesheet" type="text/css" href="css/index.css"> + <link rel="stylesheet" type="text/css" href="css/theme.css"> + <script type="module" src="js/index.js"></script> </head> <body> - <div id="search-box"> - <form id="search"> - <div id="search-inputs"> - <input name="query" type="text" placeholder="Query"> - <input type="submit" value="Search"> - </div> - <div class="search-radio-buttons"> - <input type="radio" id="search-category-all" name="category" value="all" checked> - <label for="search-category-all">All</label> - <input type="radio" id="search-category-images" name="category" value="images"> - <label for="search-category-images">Images</label> - <input type="radio" id="search-category-news" name="category" value="news"> - <label for="search-category-news">News</label> - <input type="radio" id="search-category-videos" name="category" value="videos"> - <label for="search-category-videos">Videos</label> - <input type="radio" id="search-category-files" name="category" value="files"> - <label for="search-category-videos">Files</label> - </div> - </form> - <p id="info"></p> + <div id="main"> + <div id="about"> + <img src="img/about.png"> + <p class="description">This is a <a href="https://www.trade-free.org">trade-free</a> tool, part of the <a href="https://trom.tf">trom.tf</a> suite of trade-free services.</p> + </div> + <main> + <form id="search"> + <div class="search-inputs"> + <input name="query" type="text" placeholder="Query"> + <input type="submit" value="Search"> + </div> + <div class="search-radio-buttons"> + <div class="category"> + <input type="radio" id="search-category-all" name="category" value="all" checked> + <label for="search-category-all">All</label> + </div> + <div class="category"> + <input type="radio" id="search-category-images" name="category" value="images"> + <label for="search-category-images">Images</label> + </div> + <div class="category"> + <input type="radio" id="search-category-news" name="category" value="news"> + <label for="search-category-news">News</label> + </div> + <div class="category"> + <input type="radio" id="search-category-videos" name="category" value="videos"> + <label for="search-category-videos">Videos</label> + </div> + <div class="category"> + <input type="radio" id="search-category-files" name="category" value="files"> + <label for="search-category-files">Files</label> + </div> + </div> + </form> + </main> + <p id="status"></p> </div> </body> </html> diff --git a/index.js b/js/index.js similarity index 92% rename from index.js rename to js/index.js index 156216c..828a0f7 100644 --- a/index.js +++ b/js/index.js @@ -2,12 +2,12 @@ const storageType = 'localStorage' let data = {} -const infoEl = document.getElementById('info') +const statusEl = document.getElementById('status') const formEl = document.getElementById('search') const errors = { missingQuery: new TypeError('Query is missing.'), - noFoundInstances: new TypeError('No instances were found.'), + noFoundInstances: new Error('No instances were found.'), } function buildSearchURL (opts = {}) { @@ -102,7 +102,7 @@ if (location.search.length > 0) { } } -infoEl.textContent = `${data.instances.length} instances` -if (data.instances.length > 0) { - infoEl.classList.add('error') +statusEl.textContent = `${data.instances.length} instances` +if (data.instances.length === 0) { + statusEl.classList.add('error') } diff --git a/opensearchdescription.xml b/opensearchdescription.xml index 23de862..a8082a5 100644 --- a/opensearchdescription.xml +++ b/opensearchdescription.xml @@ -2,6 +2,6 @@ <ShortName>TROM</ShortName> <Description>TROM Search</Description> <InputEncoding>UTF-8</InputEncoding> - <Url type="application/opensearchdescription+xml" rel="self" template="https://testsearch.trom.tf/opensearchdescription.xml"></Url> - <Url type="text/html" template="https://testsearch.trom.tf/?q={searchTerms}"></Url> -</OpenSearchDescription> \ No newline at end of file + <Url type="application/opensearchdescription+xml" rel="self" template="https://search.trom.tf/opensearchdescription.xml"></Url> + <Url type="text/html" template="https://search.trom.tf/?q={searchTerms}"></Url> +</OpenSearchDescription>