From 566dfe33307e33e4cb54dc6eae17fb373a09684e Mon Sep 17 00:00:00 2001 From: MrPaulBlack Date: Sat, 13 Nov 2021 10:42:07 +0100 Subject: [PATCH] [simple theme] update to ion icons 5 and drop webfont * update from ionicons-npm to ionicons ver.5 * drop the webfont built by grunt for icons * built icons.html template for inlining icons with jinja2 into html * update icon to use mostly the outline version * add icons to categories and do not display them on mobile to save space * remove all legacy ion icon font files from simple theme * icons.html is added in this commit since make statc.build.restore requires git to know the file already * cleanup error-dialog --- searx/static/themes/simple/fonts/ion.css | 139 --------- searx/static/themes/simple/fonts/ion.html | 268 ------------------ searx/static/themes/simple/fonts/ion.svg | 105 ------- searx/static/themes/simple/fonts/ion.ttf | Bin 3936 -> 0 bytes searx/static/themes/simple/fonts/ion.woff | Bin 4856 -> 0 bytes searx/static/themes/simple/fonts/ion.woff2 | Bin 2040 -> 0 bytes searx/static/themes/simple/gruntfile.js | 153 +++++----- searx/static/themes/simple/package.json | 14 +- .../static/themes/simple/src/fonts/magnet.svg | 1 - .../themes/simple/src/generated/ion.less | 181 ------------ .../static/themes/simple/src/less/search.less | 75 ++--- .../static/themes/simple/src/less/style.less | 22 +- .../themes/simple/src/less/toolkit.less | 13 +- searx/templates/simple/categories.html | 20 +- searx/templates/simple/icons.html | 36 +++ searx/templates/simple/index.html | 4 +- searx/templates/simple/macros.html | 11 +- .../templates/simple/messages/no_results.html | 22 +- searx/templates/simple/preferences.html | 9 +- .../simple/result_templates/images.html | 4 +- .../simple/result_templates/map.html | 5 +- .../simple/result_templates/torrent.html | 10 +- searx/templates/simple/results.html | 23 +- searx/templates/simple/search.html | 4 +- searx/templates/simple/simple_search.html | 4 +- searx/templates/simple/stats.html | 4 +- utils/lib_static.sh | 1 + 27 files changed, 260 insertions(+), 868 deletions(-) delete mode 100644 searx/static/themes/simple/fonts/ion.css delete mode 100644 searx/static/themes/simple/fonts/ion.html delete mode 100644 searx/static/themes/simple/fonts/ion.svg delete mode 100644 searx/static/themes/simple/fonts/ion.ttf delete mode 100644 searx/static/themes/simple/fonts/ion.woff delete mode 100644 searx/static/themes/simple/fonts/ion.woff2 delete mode 100644 searx/static/themes/simple/src/fonts/magnet.svg delete mode 100644 searx/static/themes/simple/src/generated/ion.less create mode 100644 searx/templates/simple/icons.html diff --git a/searx/static/themes/simple/fonts/ion.css b/searx/static/themes/simple/fonts/ion.css deleted file mode 100644 index 100524941..000000000 --- a/searx/static/themes/simple/fonts/ion.css +++ /dev/null @@ -1,139 +0,0 @@ -/* Generated by grunt-webfont */ - - - -@font-face { - font-family:"ion"; - src:url("../fonts/ion.eot?31a1b735188db616a2142d17947e8a45"); - src:url("../fonts/ion.eot?31a1b735188db616a2142d17947e8a45#iefix") format("embedded-opentype"), - url("../fonts/ion.woff2?31a1b735188db616a2142d17947e8a45") format("woff2"), - url("../fonts/ion.woff?31a1b735188db616a2142d17947e8a45") format("woff"), - url("../fonts/ion.ttf?31a1b735188db616a2142d17947e8a45") format("truetype"), - url("../fonts/ion.svg?31a1b735188db616a2142d17947e8a45#ion") format("svg"); - font-weight:normal; - font-style:normal; -} - -.ion-icon { - - font-family:"ion"; - - display:inline-block; - line-height:1; - font-weight:normal; - font-style:normal; - speak:none; - text-decoration:inherit; - text-transform:none; - text-rendering:auto; - -webkit-font-smoothing:antialiased; - -moz-osx-font-smoothing:grayscale; -} - - -/* Icons */ - - -.ion-navicon-round:before { - content:"\f101"; -} - - -.ion-search:before { - content:"\f102"; -} - - -.ion-play:before { - content:"\f103"; -} - - -.ion-link:before { - content:"\f104"; -} - - -.ion-chevron-up:before { - content:"\f105"; -} - - -.ion-chevron-left:before { - content:"\f106"; -} - - -.ion-chevron-right:before { - content:"\f107"; -} - - -.ion-arrow-down-a:before { - content:"\f108"; -} - - -.ion-arrow-up-a:before { - content:"\f109"; -} - - -.ion-arrow-swap:before { - content:"\f10a"; -} - - -.ion-arrow-dropdown:before { - content:"\f10b"; -} - - -.ion-globe:before { - content:"\f10c"; -} - - -.ion-time:before { - content:"\f10d"; -} - - -.ion-location:before { - content:"\f10e"; -} - - -.ion-warning:before { - content:"\f10f"; -} - - -.ion-error:before { - content:"\f110"; -} - - -.ion-film-outline:before { - content:"\f111"; -} - - -.ion-music-note:before { - content:"\f112"; -} - - -.ion-more-vertical:before { - content:"\f113"; -} - - -.ion-magnet:before { - content:"\f114"; -} - - -.ion-close:before { - content:"\f115"; -} diff --git a/searx/static/themes/simple/fonts/ion.html b/searx/static/themes/simple/fonts/ion.html deleted file mode 100644 index 0a7b49c60..000000000 --- a/searx/static/themes/simple/fonts/ion.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - ion - - - -

ion

- -
- -
ion-navicon-round
- -
ion-search
- -
ion-play
- -
ion-link
- -
ion-chevron-up
- -
ion-chevron-left
- -
ion-chevron-right
- -
ion-arrow-down-a
- -
ion-arrow-up-a
- -
ion-arrow-swap
- -
ion-arrow-dropdown
- -
ion-globe
- -
ion-time
- -
ion-location
- -
ion-warning
- -
ion-error
- -
ion-film-outline
- -
ion-music-note
- -
ion-more-vertical
- -
ion-magnet
- -
ion-close
- -
- - - -

Usage

-
<i class="ion-icon ion-name"></i>
- - - - - - - diff --git a/searx/static/themes/simple/fonts/ion.svg b/searx/static/themes/simple/fonts/ion.svg deleted file mode 100644 index 01c2ce025..000000000 --- a/searx/static/themes/simple/fonts/ion.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - -Created by FontForge 20190801 at Mon Jun 21 10:06:22 2021 - By alexandre - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/searx/static/themes/simple/fonts/ion.ttf b/searx/static/themes/simple/fonts/ion.ttf deleted file mode 100644 index 78264a5717dd56fafb5fa7d0901235f8b5ae30e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3936 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 diff --git a/searx/static/themes/simple/fonts/ion.woff b/searx/static/themes/simple/fonts/ion.woff deleted file mode 100644 index 84dd558889db2f1782b1b281e248561d231568d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4856 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 WzF9N6j=3%#=)y1w*0U!q2mk=Ke9rU$ diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index f10d00cf3..43f61c0d2 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -8,8 +8,8 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), watch: { scripts: { - files: ['src/**'], - tasks: ['eslint', 'copy', 'concat', 'uglify', 'htmlmin', 'less:development', 'less:production'] + files: ['gruntfile.js', 'src/**'], + tasks: ['eslint', 'copy', 'concat', 'svg2jinja', 'uglify', 'htmlmin', 'less:development', 'less:production'] } }, eslint: { @@ -106,70 +106,6 @@ module.exports = function(grunt) { } } }, - webfont: { - icons: { - // src: 'node_modules/ionicons-npm/src/*.svg', - src: [ - 'node_modules/ionicons-npm/src/navicon-round.svg', - 'node_modules/ionicons-npm/src/search.svg', - 'node_modules/ionicons-npm/src/play.svg', - 'node_modules/ionicons-npm/src/link.svg', - 'node_modules/ionicons-npm/src/chevron-up.svg', - 'node_modules/ionicons-npm/src/chevron-left.svg', - 'node_modules/ionicons-npm/src/chevron-right.svg', - 'node_modules/ionicons-npm/src/arrow-down-a.svg', - 'node_modules/ionicons-npm/src/arrow-up-a.svg', - 'node_modules/ionicons-npm/src/arrow-swap.svg', - 'node_modules/ionicons-npm/src/telephone.svg', - 'node_modules/ionicons-npm/src/android-arrow-dropdown.svg', - 'node_modules/ionicons-npm/src/android-globe.svg', - 'node_modules/ionicons-npm/src/android-time.svg', - 'node_modules/ionicons-npm/src/location.svg', - 'node_modules/ionicons-npm/src/alert-circled.svg', - 'node_modules/ionicons-npm/src/android-alert.svg', - 'node_modules/ionicons-npm/src/ios-film-outline.svg', - 'node_modules/ionicons-npm/src/music-note.svg', - 'node_modules/ionicons-npm/src/ion-close-round.svg', - 'node_modules/ionicons-npm/src/android-more-vertical.svg', - 'src/fonts/magnet.svg', - 'node_modules/ionicons-npm/src/android-close.svg', - ], - dest: 'fonts', - destLess: 'src/generated', - options: { - font: 'ion', - hashes : true, - syntax: 'bem', - styles : 'font,icon', - types : 'eot,woff2,woff,ttf,svg', - order : 'eot,woff2,woff,ttf,svg', - stylesheets : ['css', 'less'], - relativeFontPath : '../fonts/', - autoHint : false, - normalize : false, - // ligatures : true, - optimize : true, - // fontHeight : 400, - rename : function(name) { - basename = path.basename(name); - if (basename === 'android-alert.svg') { - return 'error.svg'; - } - if (basename === 'alert-circled.svg') { - return 'warning.svg'; - } - if (basename === 'ion-close-round.svg') { - return 'close.svg'; - } - return basename.replace(/(ios|md|android)-/i, ''); - }, - templateOptions: { - baseClass: 'ion-icon', - classPrefix: 'ion-' - } - } - } - }, less: { development: { options: { @@ -197,6 +133,89 @@ module.exports = function(grunt) { } }, }, + svg2jinja: { + all: { + src: { + 'warning': 'node_modules/ionicons/dist/svg/alert-outline.svg', + 'close': 'node_modules/ionicons/dist/svg/close-outline.svg', + 'chevron-up-outline': 'node_modules/ionicons/dist/svg/chevron-up-outline.svg', + 'chevron-right': 'node_modules/ionicons/dist/svg/chevron-forward-outline.svg', + 'chevron-left': 'node_modules/ionicons/dist/svg/chevron-back-outline.svg', + 'menu-outline': 'node_modules/ionicons/dist/svg/menu-outline.svg', + 'ellipsis-vertical-outline': 'node_modules/ionicons/dist/svg/ellipsis-vertical-outline.svg', + 'magnet-outline': 'node_modules/ionicons/dist/svg/magnet-outline.svg', + 'globe-outline': 'node_modules/ionicons/dist/svg/globe-outline.svg', + 'search-outline': 'node_modules/ionicons/dist/svg/search-outline.svg', + 'image-outline': 'node_modules/ionicons/dist/svg/image-outline.svg', + 'play-outline': 'node_modules/ionicons/dist/svg/play-outline.svg', + 'newspaper-outline': 'node_modules/ionicons/dist/svg/newspaper-outline.svg', + 'location-outline': 'node_modules/ionicons/dist/svg/location-outline.svg', + 'musical-notes-outline': 'node_modules/ionicons/dist/svg/musical-notes-outline.svg', + 'layers-outline': 'node_modules/ionicons/dist/svg/layers-outline.svg', + 'school-outline': 'node_modules/ionicons/dist/svg/school-outline.svg', + 'file-tray-full-outline': 'node_modules/ionicons/dist/svg/file-tray-full-outline.svg', + 'people-outline': 'node_modules/ionicons/dist/svg/people-outline.svg', + }, + dest: '../../../templates/simple/icons.html', + }, + }, + }); + + + grunt.registerMultiTask('svg2jinja', 'Create Jinja2 macro', function() { + const ejs = require('ejs'), svgo = require('svgo'); + const icons = {} + for(const iconName in this.data.src) { + const svgFileName = this.data.src[iconName]; + try { + const svgContent = grunt.file.read(svgFileName, { encoding: 'utf8' }) + const svgoResult = svgo.optimize(svgContent, { + path: svgFileName, + multipass: true, + plugins: [ + { + name: "removeTitle", + }, + { + name: "removeXMLNS", + }, + { + name: "addAttributesToSVGElement", + params: { + attributes: [ + { "aria-hidden": "true" } + ] + } + } + ] + }); + icons[iconName] = svgoResult.data.replace("'", "\\'"); + } catch (err) { + grunt.log.error(err); + } + } + const template = `{# this file was generated by searx/static/themes/simple/gruntfile.js #} +{%- set icons = { +<% for (const iconName in icons) { %> '<%- iconName %>':'<%- icons[iconName] %>', +<% } %> +} +-%} + +{% macro icon(action, alt) -%} + {{ icons[action] | replace("ionicon", "ion-icon") | safe }} +{%- endmacro %} + +{% macro icon_small(action) -%} + {{ icons[action] | replace("ionicon", "ion-icon-small") | safe }} +{%- endmacro %} + +{% macro icon_big(action, alt) -%} + {{ icons[action] | replace("ionicon", "ion-icon-big") | safe }} +{%- endmacro %} +`; + const result = ejs.render(template, { icons }); + grunt.file.write(this.data.dest, result, { encoding: 'utf8' }); + grunt.log.ok(this.data.dest + " created"); }); grunt.loadNpmTasks('grunt-contrib-watch'); @@ -207,7 +226,6 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-contrib-cssmin'); - grunt.loadNpmTasks('grunt-webfont'); grunt.loadNpmTasks('grunt-stylelint'); grunt.loadNpmTasks('grunt-eslint'); @@ -218,6 +236,7 @@ module.exports = function(grunt) { 'stylelint', 'copy', 'concat', + 'svg2jinja', 'uglify', 'htmlmin', 'less:development', diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json index 4ef608db7..3676672bd 100644 --- a/searx/static/themes/simple/package.json +++ b/searx/static/themes/simple/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "grunt-cli": "^1.4.3", + "eslint": "^8.0.1", "grunt": "~1.4.1", - "grunt-contrib-copy": "^1.0.0", "grunt-contrib-concat": "~2.0.0", + "grunt-contrib-copy": "^1.0.0", "grunt-contrib-cssmin": "^4.0.0", "grunt-contrib-jshint": "~3.1.1", "grunt-contrib-less": "~3.0.0", @@ -11,15 +11,15 @@ "grunt-xmlmin": "~0.1.8", "grunt-contrib-htmlmin": "~3.1.0", "grunt-contrib-watch": "~1.1.0", - "grunt-stylelint": "^0.16.0", "grunt-eslint": "^23.0.0", - "grunt-webfont": "^1.7.2", - "ionicons-npm": "^2.0.1", - "eslint": "^8.0.1", + "grunt-stylelint": "^0.16.0", + "ionicons": "^5.5.4", "less": "^4.1.1", "less-plugin-clean-css": "^1.5.1", "stylelint": "^13.13.1", - "stylelint-config-standard": "^22.0.0" + "stylelint-config-standard": "^22.0.0", + "ejs": "^3.1.6", + "svgo": "^2.8.0" }, "dependencies": { "autocomplete-js": "2.7.1", diff --git a/searx/static/themes/simple/src/fonts/magnet.svg b/searx/static/themes/simple/src/fonts/magnet.svg deleted file mode 100644 index 1a1defdb8..000000000 --- a/searx/static/themes/simple/src/fonts/magnet.svg +++ /dev/null @@ -1 +0,0 @@ -image/svg+xmlAlexandre Flament diff --git a/searx/static/themes/simple/src/generated/ion.less b/searx/static/themes/simple/src/generated/ion.less deleted file mode 100644 index 67158206f..000000000 --- a/searx/static/themes/simple/src/generated/ion.less +++ /dev/null @@ -1,181 +0,0 @@ -// Generated by grunt-webfont - - - -@font-face { - font-family:"ion"; - src:url("../fonts/ion.eot?31a1b735188db616a2142d17947e8a45"); - src:url("../fonts/ion.eot?31a1b735188db616a2142d17947e8a45#iefix") format("embedded-opentype"), - url("../fonts/ion.woff2?31a1b735188db616a2142d17947e8a45") format("woff2"), - url("../fonts/ion.woff?31a1b735188db616a2142d17947e8a45") format("woff"), - url("../fonts/ion.ttf?31a1b735188db616a2142d17947e8a45") format("truetype"), - url("../fonts/ion.svg?31a1b735188db616a2142d17947e8a45#ion") format("svg"); - font-weight:normal; - font-style:normal; -} - -.ion-icon { - &:before { - font-family:"ion"; - } - display:inline-block; - line-height:1; - font-weight:normal; - font-style:normal; - speak:none; - text-decoration:inherit; - text-transform:none; - text-rendering:auto; - -webkit-font-smoothing:antialiased; - -moz-osx-font-smoothing:grayscale; -} - - -// Icons - -.ion-navicon-round { - &:before { - content:"\f101"; - } -} - - -.ion-search { - &:before { - content:"\f102"; - } -} - - -.ion-play { - &:before { - content:"\f103"; - } -} - - -.ion-link { - &:before { - content:"\f104"; - } -} - - -.ion-chevron-up { - &:before { - content:"\f105"; - } -} - - -.ion-chevron-left { - &:before { - content:"\f106"; - } -} - - -.ion-chevron-right { - &:before { - content:"\f107"; - } -} - - -.ion-arrow-down-a { - &:before { - content:"\f108"; - } -} - - -.ion-arrow-up-a { - &:before { - content:"\f109"; - } -} - - -.ion-arrow-swap { - &:before { - content:"\f10a"; - } -} - - -.ion-arrow-dropdown { - &:before { - content:"\f10b"; - } -} - - -.ion-globe { - &:before { - content:"\f10c"; - } -} - - -.ion-time { - &:before { - content:"\f10d"; - } -} - - -.ion-location { - &:before { - content:"\f10e"; - } -} - - -.ion-warning { - &:before { - content:"\f10f"; - } -} - - -.ion-error { - &:before { - content:"\f110"; - } -} - - -.ion-film-outline { - &:before { - content:"\f111"; - } -} - - -.ion-music-note { - &:before { - content:"\f112"; - } -} - - -.ion-more-vertical { - &:before { - content:"\f113"; - } -} - - -.ion-magnet { - &:before { - content:"\f114"; - } -} - - -.ion-close { - &:before { - content:"\f115"; - } -} - diff --git a/searx/static/themes/simple/src/less/search.less b/searx/static/themes/simple/src/less/search.less index b4818ba5d..99aa02a34 100644 --- a/searx/static/themes/simple/src/less/search.less +++ b/searx/static/themes/simple/src/less/search.less @@ -16,6 +16,40 @@ "spacer categories"; } +.category { + display: inline-block; + position: relative; + margin-right: 1rem; + padding: 0; + + input { + display: none; + } + + label { + svg { + padding-right: 0.2rem; + } + + cursor: pointer; + padding: 0.2rem 0; + display: inline-flex; + text-transform: capitalize; + font-size: 0.9em; + border-bottom: 2px solid transparent; + .disable-user-select; + + div.category_name { + margin: auto 0; + } + } + + input[type="checkbox"]:checked + label { + color: var(--color-categories-item-selected-font); + border-bottom: 2px solid var(--color-categories-item-border-selected); + } +} + #search_logo { grid-area: logo; display: flex; @@ -79,7 +113,7 @@ border-collapse: separate; box-sizing: border-box; margin: 0; - padding: 8px; + padding: 10px; background: none repeat scroll 0 0 var(--color-search-background); border: 1px solid var(--color-search-border); border-radius: 0; @@ -156,7 +190,6 @@ #categories { width: 100%; - margin: 0; text-align: left; overflow-x: scroll; overflow-y: hidden; @@ -188,7 +221,7 @@ } .search_box { - // hack, should bew 100% ? + // hack, should be 100% ? width: 99%; margin: 0.1em; padding: 0 0.1em 0 0; @@ -219,9 +252,15 @@ .category { display: block; width: 100%; + margin: 0; label { - padding: 10px !important; + padding: 0.8rem !important; + margin: 0 !important; + + svg { + display: none; + } } } } @@ -239,7 +278,6 @@ } #categories { - margin: 0 10px 0 0; .disable-user-select; &::-webkit-scrollbar { @@ -248,33 +286,6 @@ } } -.category { - display: inline-block; - position: relative; - margin: 0 3px; - padding: 0; - - input { - display: none; - } - - label { - cursor: pointer; - padding: 0.3rem 0.75rem 0.5rem 0.75rem; - margin: 0; - display: block; - text-transform: capitalize; - font-size: 0.9em; - border-bottom: 2px solid transparent; - .disable-user-select; - } - - input[type="checkbox"]:checked + label { - color: var(--color-categories-item-selected-font); - border-bottom: 2px solid var(--color-categories-item-border-selected); - } -} - #categories_container { position: relative; } diff --git a/searx/static/themes/simple/src/less/style.less b/searx/static/themes/simple/src/less/style.less index b93317fa3..a26c57db1 100644 --- a/searx/static/themes/simple/src/less/style.less +++ b/searx/static/themes/simple/src/less/style.less @@ -10,7 +10,6 @@ @import "../../__common__/less/stats.less"; @import "../../__common__/less/result_templates.less"; @import (inline) "../../node_modules/normalize.css/normalize.css"; -@import "../generated/ion.less"; @import "definitions.less"; @import "mixins.less"; @import "code.less"; @@ -28,10 +27,23 @@ @import "search.less"; // ion-icon -.ion-icon-big { - .ion-icon; +.ion-icon { + display: inline-block; + vertical-align: bottom; + line-height: 1; + text-decoration: inherit; +} - font-size: 149%; +.ion-icon-small { + width: 1rem; + height: 1rem; + .ion-icon; +} + +.ion-icon-big { + width: 1.5rem; + height: 1.5rem; + .ion-icon; } // Main LESS-Code @@ -530,7 +542,7 @@ article[data-vim-selected].category-social { #linkto_preferences { position: absolute; right: 10px; - top: 2rem; + top: 2.2rem; padding: 0; border: 0; display: block; diff --git a/searx/static/themes/simple/src/less/toolkit.less b/searx/static/themes/simple/src/less/toolkit.less index f11275576..195cd9af4 100644 --- a/searx/static/themes/simple/src/less/toolkit.less +++ b/searx/static/themes/simple/src/less/toolkit.less @@ -121,20 +121,13 @@ div.selectable_url { // dialog .dialog() { position: relative; - padding: 1em 1em 1em 2.7em; + display: flex; + padding: 1rem; margin: 0 0 1em 0; border: 1px solid var(--color-toolkit-dialog-border); text-align: left; .rounded-corners; - &::before { - position: absolute; - top: 0.5em; - left: 0.5em; - font-family: "ion"; // stylelint-disable font-family-no-missing-generic-family-keyword - font-size: 1.5em; - } - .close { float: right; position: relative; @@ -177,7 +170,6 @@ div.selectable_url { color: var(--color-error); background: var(--color-error-background); border-color: var(--color-error); - .ion-error(); } .dialog-warning { @@ -186,7 +178,6 @@ div.selectable_url { color: var(--color-warning); background: var(--color-warning-background); border-color: var(--color-warning); - .ion-warning(); } .dialog-modal { diff --git a/searx/templates/simple/categories.html b/searx/templates/simple/categories.html index 0c121eaed..71fdca90a 100644 --- a/searx/templates/simple/categories.html +++ b/searx/templates/simple/categories.html @@ -1,7 +1,25 @@ +{% from 'simple/icons.html' import icon_big %} +{%- set category_icons = { + 'general': 'search-outline', + 'images': 'image-outline', + 'videos': 'play-outline', + 'news': 'newspaper-outline', + 'map': 'location-outline', + 'music': 'musical-notes-outline', + 'it': 'layers-outline', + 'science': 'school-outline', + 'files': 'file-tray-full-outline', + 'social media': 'people-outline', +} -%}
{{- '' -}}
{%- for category in categories -%} -
+
+ +
{%- endfor -%} {%- if display_tooltip %}
{{ _('Click on the magnifier to perform search') }}
{% endif -%}
{{- '' -}} diff --git a/searx/templates/simple/icons.html b/searx/templates/simple/icons.html new file mode 100644 index 000000000..ffd5041ca --- /dev/null +++ b/searx/templates/simple/icons.html @@ -0,0 +1,36 @@ +{# this file was generated by searx/static/themes/simple/gruntfile.js #} +{%- set icons = { + 'warning':'', + 'close':'', + 'chevron-up-outline':'', + 'chevron-right':'', + 'chevron-left':'', + 'menu-outline':'', + 'ellipsis-vertical-outline':'', + 'magnet-outline':'', + 'globe-outline':'', + 'search-outline':'', + 'image-outline':'', + 'play-outline':'', + 'newspaper-outline':'', + 'location-outline':'', + 'musical-notes-outline':'', + 'layers-outline':'', + 'school-outline':'', + 'file-tray-full-outline':'', + 'people-outline':'', + +} +-%} + +{% macro icon(action, alt) -%} + {{ icons[action] | replace("ionicon", "ion-icon") | safe }} +{%- endmacro %} + +{% macro icon_small(action) -%} + {{ icons[action] | replace("ionicon", "ion-icon-small") | safe }} +{%- endmacro %} + +{% macro icon_big(action, alt) -%} + {{ icons[action] | replace("ionicon", "ion-icon-big") | safe }} +{%- endmacro %} diff --git a/searx/templates/simple/index.html b/searx/templates/simple/index.html index 8a017694e..1e4ea0c48 100644 --- a/searx/templates/simple/index.html +++ b/searx/templates/simple/index.html @@ -1,10 +1,10 @@ {% extends "simple/base.html" %} -{% from 'simple/macros.html' import icon %} +{% from 'simple/icons.html' import icon_big %} {% block meta %} {% endblock %} {% block content %} - +

SearXNG

{% include 'simple/simple_search.html' %} diff --git a/searx/templates/simple/macros.html b/searx/templates/simple/macros.html index 92c6c9ef2..26aa71891 100644 --- a/searx/templates/simple/macros.html +++ b/searx/templates/simple/macros.html @@ -1,12 +1,3 @@ - -{% macro icon(action, alt) -%} - -{%- endmacro %} - -{% macro icon_small(action) -%} - -{%- endmacro %} - {% macro draw_favicon(favicon) -%} {{ favicon }} @@ -43,7 +34,7 @@ {%- macro result_sub_footer(result, proxify) -%}
{% for engine in result.engines %}{{ engine }}{% endfor %} - {{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "cache_link") }}‎ {% if proxify and proxify_results %} {{ result_link(proxify(result.url), icon('link') + _('proxied'), "proxyfied_link") }} {% endif %} + {{ result_link("https://web.archive.org/web/" + result.url, icon_small('ellipsis-vertical-outline') + _('cached'), "cache_link") }}‎ {% if proxify and proxify_results %} {{ result_link(proxify(result.url), icon('link') + _('proxied'), "proxyfied_link") }} {% endif %}
{{- '' -}}
{{- '' -}} {%- endmacro -%} diff --git a/searx/templates/simple/messages/no_results.html b/searx/templates/simple/messages/no_results.html index a3ab97758..b98f834e6 100644 --- a/searx/templates/simple/messages/no_results.html +++ b/searx/templates/simple/messages/no_results.html @@ -1,17 +1,19 @@ -{% from 'simple/macros.html' import icon %} +{% from 'simple/icons.html' import icon_big %} {% if unresponsive_engines %} {% else %}