This commit is contained in:
meaz 2023-06-15 17:39:32 +02:00
parent 4f010c26fd
commit 1a7a76a94e
Signed by: meaz
GPG Key ID: CD7A47B2F1ED43B4
60 changed files with 1512 additions and 873 deletions

View File

@ -18,14 +18,21 @@ Restart searx: `service uwsgi restart`
## How to edit/change this theme
All changes need to be done to Simple theme and then compiled. So:
- You have clone the upstream repo first: `git clone https://github.com/searxng/searxng.git searx`.
- Copy the `beetroot_static/src/less/definitions.less` and the `beetroot_static/src/less/disroot.less` from the beetroot theme repo to the clone (in `static/themes/simple/src/less/`).
- Edit the `static/themes/simple/src/less/definitions.less` and `static/themes/simple/src/less/disroot.less` files copied in the clone with the colors and rules you want.
- Once finished, build the theme: in searx root-src folder, as the searx user, do `make themes.simple`.
- Copy the content of the `static/themes/simple/css` folder obtained in the clone back to this repo (if you didn't change any images, you don't have to copy the `images` folder again). Don't forget to also copy `definitions.less` and `disroot.less`, if you changed those, back to the beetroot repo.
Simply clone the theme to your machine.
All changes done to the the templates do not require compilation, only searxng reload.
When changing static elements (css, images etc), edit files in `src/`. Once done run `grunt` to compile. To do so, in your running searxng instance, your first need to:
```
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.profile
nvm install 18.16.0 # or whatever version you want
npm install -g npm
cd searx/static/themes/beetroot
npm install
npm install -g grunt-cli
```
Then you can run `grunt` from `searx/static/themes/beetroot`. Those compiled files can be found in `searx/static/themes/beetroot/css`
If you want to test in live mode all your changes to the `Simple` theme, do `LIVE_THEME=simple make run` from searx-src folder and edit the `static/themes/simple/src/less/definitions.less` and `static/themes/simple/src/less/disroot.less` files as you wish.
If you want to test in live mode all your changes to the `beetroot` theme, you need working searx instance with your changes pulled into it. You can then either select the theme from UI or run searx with theme by running `LIVE_THEME=beetroot make run` from searx-src folder and edit.
## Screenshots
@ -37,4 +44,4 @@ If you want to test in live mode all your changes to the `Simple` theme, do `LIV
### Dark mode
![Dark mode](img/Dark01.png)
![Dark mode](img/Dark02.png)
![Dark mode](img/Dark03.png)
![Dark mode](img/Dark03.png)

View File

@ -0,0 +1,28 @@
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 12
},
"rules": {
"indent": ["error", 2],
"keyword-spacing": ["error", { "before": true, "after": true }],
"no-trailing-spaces": 2,
"space-before-function-paren": ["error", "always"],
"space-infix-ops": "error",
"comma-spacing": ["error", { "before": false, "after": true }],
"brace-style": ["error", "1tbs", { "allowSingleLine": true }],
"curly": ["error", "multi-line"],
"block-spacing": ["error", "always"],
"dot-location": ["error", "property"],
"key-spacing": ["error", { "beforeColon": false, "afterColon": true }],
"spaced-comment": ["error", "always", {
"line": { "markers": ["*package", "!", "/", ",", "="] },
"block": { "balanced": true, "markers": ["*package", "!", ",", ":", "::", "flow-include"], "exceptions": ["*"] }
}]
}
}

2
beetroot_static/.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
leaflet.css -diff
leaflet.js -diff

2
beetroot_static/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/node_modules
package-lock.json

View File

@ -0,0 +1,8 @@
{
"proto": true,
"globals": {
"browser": true,
"jQuery": false,
"devel": true
}
}

View File

@ -0,0 +1,7 @@
{
"extends": "stylelint-config-standard",
"rules": {
"declaration-empty-line-before": null,
"no-invalid-position-at-import-rule": null
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,86 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="92mm"
height="92mm"
viewBox="0 0 92 92"
width="52.916668mm"
height="52.916668mm"
viewBox="0 0 52.916668 52.916668"
version="1.1"
id="svg283"
sodipodi:docname="favicon.svg"
id="svg310"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
inkscape:export-filename="favicon.png"
inkscape:export-xdpi="72.058701"
inkscape:export-ydpi="72.058701"
sodipodi:docname="favicon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs287" />
<sodipodi:namedview
id="namedview285"
id="namedview312"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.2805933"
inkscape:cx="187.45122"
inkscape:cy="180.87399"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:zoom="0.72426347"
inkscape:cx="312.7315"
inkscape:cy="530.1938"
inkscape:window-width="2560"
inkscape:window-height="1403"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg283" />
inkscape:current-layer="layer1" />
<defs
id="defs307" />
<g
id="g12851-2"
transform="matrix(0.27333337,0,0,0.27333337,-18.69294,-5.0517884)"
style="stroke:#50152c;stroke-opacity:0.992157"
inkscape:export-filename="/home/fekete/Nextcloud-Antilopa/Disroot/Artwork/Icons/new_pngs/search.png"
inkscape:export-xdpi="1080.73"
inkscape:export-ydpi="1080.73">
<path
inkscape:connector-curvature="0"
id="path3814-0-7-1"
d="m 80.033739,36.455764 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.77413 41.675291,79.3245 91.536091,95.16289 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 118.24672,100.40622 84.338699,71.780528 80.033739,36.455764 Z"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<path
inkscape:connector-curvature="0"
id="path3814-0-8"
d="m 313.2893,37.799153 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774131 -41.67531,79.324501 -91.53611,95.162891 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808383 85.94998,-78.133147 z"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<path
inkscape:connector-curvature="0"
id="rect3804-7"
d="m 201.77833,175.2842 12.07511,-13.9057 c 4.0785,-4.69679 19.95774,2.45971 35.60368,16.04598 l 130.50177,113.32219 c 15.64593,13.58626 24.95835,28.30512 20.87985,33.00192 l -12.07512,13.9057 c -4.07849,4.69679 -19.95774,-2.45971 -35.60367,-16.04598 L 222.65818,208.28612 C 207.01224,194.69986 197.69983,179.981 201.77833,175.2842 Z"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<circle
r="107.58125"
cy="149.35568"
cx="196.89389"
id="path2987-9"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<circle
r="72.430138"
cy="149.10315"
cx="196.64131"
id="path3757-9-0"
style="fill:#ffffff;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-width:0.713454;stroke-opacity:0.992157" />
<circle
r="27.274118"
cy="150.79912"
cx="197.85327"
id="path3800-2"
style="fill:#50132a;fill-opacity:1;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<circle
r="5.5558391"
cy="141.34952"
cx="208.98526"
id="path3802-3"
style="fill:#ffffff;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-13.768987,-8.1793908)">
<g
id="g1653"
transform="matrix(0.88194444,0,0,0.88194444,-127.34211,86.672446)">
<circle
r="30"
cx="189.99998"
cy="-59"
id="circle23-562"
style="color:#000000;fill:#50162d;fill-opacity:0.988462;stroke-width:2.51156;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path3814-0-7"
d="m 173.4803,-75.896588 c -0.79401,1.699956 -1.13509,3.544158 -0.91736,5.444019 0.55949,4.881886 4.64781,8.846622 10.20851,10.612989 -0.73893,-2.498986 -0.59564,-5.011485 0.29437,-7.343251 -5.32384,-1.581717 -9.10541,-4.774181 -9.58552,-8.713757 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.111524" />
<path
inkscape:connector-curvature="0"
id="path3814-0"
d="m 199.494,-75.746767 c 0.79401,1.699956 1.13509,3.544157 0.91736,5.444018 -0.55949,4.881887 -4.64782,8.846622 -10.20852,10.61299 0.73894,-2.498986 0.59565,-5.011485 -0.29437,-7.343251 5.32385,-1.581717 9.10542,-4.774182 9.58553,-8.713757 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.111524" />
<path
inkscape:connector-curvature="0"
id="rect3804"
d="m 187.0578,-60.413821 1.34667,-1.550826 c 0.45485,-0.523807 2.22578,0.274318 3.97068,1.789519 l 14.55414,12.638196 c 1.7449,1.515201 2.78347,3.156714 2.32861,3.680522 l -1.34667,1.550825 c -0.45485,0.523807 -2.22577,-0.274317 -3.97068,-1.789519 L 189.38641,-56.7333 c -1.7449,-1.5152 -2.78346,-3.156713 -2.32861,-3.680521 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.111524" />
<circle
r="11.997941"
cy="-63.305485"
cx="186.51306"
id="path2987"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.111524" />
<circle
r="9.4527321"
cy="-63.333649"
cx="186.48489"
id="path3757"
style="fill:#50152c;fill-opacity:0.992157;fill-rule:nonzero;stroke:none;stroke-width:0.0931117" />
<circle
r="8.0777321"
cy="-63.333649"
cx="186.48489"
id="path3757-9"
style="fill:#ffffff;fill-opacity:0.992157;fill-rule:nonzero;stroke:none;stroke-width:0.0795676" />
<circle
r="3.0417314"
cy="-63.144508"
cx="186.62006"
id="path3800"
style="fill:#50152c;fill-opacity:0.992157;fill-rule:nonzero;stroke:none;stroke-width:0.111524" />
<circle
r="0.61961198"
cy="-64.198372"
cx="187.86154"
id="path3802"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.111524" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 174 KiB

View File

@ -1,65 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="853.677"
height="146.304"
viewBox="0 0 225.869 38.71"
width="184.84857"
height="170.00002"
viewBox="0 0 48.907851 44.979173"
version="1.1"
id="svg6"
sodipodi:docname="searxng.svg"
id="svg2514"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
inkscape:export-filename="searxng.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
sodipodi:docname="search.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
id="namedview2516"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.017006"
inkscape:cx="426.74283"
inkscape:cy="81.120468"
inkscape:zoom="0.5946522"
inkscape:cx="554.10541"
inkscape:cy="518.79065"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:window-height="1019"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
inkscape:current-layer="layer1"
showguides="false" />
<defs
id="defs2511" />
<g
aria-label="SearXNG"
style="line-height:1.25;fill:#50162d;fill-opacity:1"
font-style="normal"
font-weight="400"
font-size="50.8px"
font-family="sans-serif"
fill="#487cff"
fill-opacity="1"
stroke="none"
stroke-width=".264583"
id="g4">
<path
d="M56.494 102.704q-1.168-1.22-3.048-2.032-1.88-.813-4.42-.813-3.15 0-5.08 1.32-1.93 1.27-1.93 3.455 0 2.337 3.708 3.607l7.671 2.641q3.963 1.321 5.842 3.404 1.88 2.083 1.88 5.13 0 4.065-2.185 7.011-2.184 2.896-5.943 4.42-3.76 1.524-8.484 1.524-5.334 0-9.042-1.778-3.709-1.829-5.537-5.131-.204-.356-.204-.711 0-.356.407-.61l4.013-2.438q.356-.254.762-.254.61 0 1.118.66 1.32 1.626 2.387 2.54 1.118.864 2.693 1.321 1.625.457 4.165.457 3.2 0 5.182-1.168 1.981-1.22 1.981-3.76 0-1.27-.914-2.082-.915-.864-2.947-1.575l-7.417-2.49q-3.657-1.218-5.588-3.555-1.88-2.388-1.88-5.436 0-3.759 2.134-6.655 2.134-2.895 5.69-4.47 3.607-1.575 7.874-1.575 4.369 0 7.67 1.575 3.354 1.524 5.182 3.962.407.508.407.762t-.356.458l-4.52 2.997q-.052.05-.204.05-.305 0-1.067-.761zM77.004 132.37q-3.607 0-6.401-1.472-2.794-1.474-4.318-4.115-1.524-2.693-1.524-6.198 0-4.165 1.981-7.874 2.032-3.759 5.537-5.994 3.556-2.286 7.925-2.286 5.334 0 8.484 3.15 3.15 3.149 3.15 8.686 0 1.473-.204 2.845-.101.406-.355.61-.204.152-.813.152h-17.12q-.813 0-.813 2.184 0 2.388 1.524 3.709 1.575 1.27 4.064 1.27 1.93 0 3.607-.813 1.677-.813 3.302-2.54.254-.254.508-.254.153 0 .66.203l3.353 1.575q.61.203.61.66 0 .254-.254.66-2.946 3.303-5.893 4.573-2.895 1.27-7.01 1.27zm6.451-16.56q1.22 0 1.22-1.981 0-1.93-1.169-3.251-1.168-1.372-3.251-1.372-2.54 0-4.521 1.93-1.93 1.88-2.235 4.674zM109.411 129.374q-3.048 2.997-8.331 2.997-3.556 0-5.588-1.829t-2.032-4.775q0-3.607 2.387-5.893 2.388-2.337 5.995-3.353 3.657-1.067 7.569-1.168l1.829-.153q.965 0 1.117-.965l.153-1.067q.05-.254.05-.812 0-3.048-3.505-3.048-4.013 0-5.943 3.15-.254.355-.66.355-.305 0-.458-.051l-4.927-1.168q-.508-.102-.508-.66 0-.509.254-1.017 3.352-5.486 12.649-5.486 5.486 0 8.026 1.93 2.591 1.93 2.591 5.334 0 .457-.102 1.473l-2.54 17.78q-.05.66-.203.813-.152.102-.711.102h-5.232q-.508 0-.66-.305-.153-.305-.204-1.016l.05-1.32q0-.407-.253-.407-.254 0-.813.559zm2.184-9.754v-.305q0-.203-.101-.254-.102-.101-.407-.05l-1.828.152q-2.947.203-5.487 1.473t-2.54 3.912q0 1.219.864 1.98.914.712 2.438.712 1.321 0 2.49-.356 1.168-.406 2.031-1.066 1.88-1.423 2.083-2.896zM123.864 131.863q-.61 0-.915-.356-.254-.355-.152-.914l3.505-24.943q.05-.457.152-.559.153-.152.56-.152h6.044q.915 0 .712 1.067l-.356 2.286v.203q0 .355.203.355.153 0 .457-.304 1.778-1.88 3.963-2.998 2.184-1.117 3.962-1.117 1.067 0 1.575.152.508.153.457.61l-.813 5.69q-.05.558-.203.71-.101.153-.406.102-1.727-.254-3.455-.254-1.32 0-2.794.711-1.473.66-2.54 1.778-1.016 1.067-1.168 2.134l-2.083 14.834q-.101.66-.355.812-.204.153-.966.153zM176.481 130.085q.457.813.457 1.219 0 .305-.254.457-.254.102-.762.102h-7.06q-.61 0-.966-.153-.305-.152-.508-.61l-5.639-11.734q-.254-.508-.508-.508-.152 0-.559.559l-9.042 11.836q-.254.407-.61.508-.304.102-1.066.102h-5.944q-1.016 0-1.016-.66 0-.458.762-1.525l13.005-16.306q.559-.61.559-1.067 0-.356-.102-.559l-8.484-16.56q-.152-.255-.152-.509 0-.508.762-.508h7.417q.66 0 .914.153.254.152.508.66l4.928 10.363q.152.407.355.407.204 0 .508-.407l8.027-10.566q.305-.407.559-.508.304-.102.965-.102h6.553q.61 0 .61.559 0 .406-.305.914l-12.599 15.647q-.508.66-.508.914 0 .203.153.508zM218.113 94.17q.355 0 .457.202.101.153.05.56l-5.13 36.372q-.05.356-.254.457-.153.102-.559.102h-5.182q-.66 0-1.168-.813l-13.106-22.708q-.153-.254-.305-.254-.305 0-.356.56l-3.15 22.402q-.1.508-.304.66-.153.153-.711.153h-5.588q-.813 0-.712-1.118l5.08-35.814q.102-.508.204-.61.152-.152.66-.152h6.147q.508 0 .762.254.305.203.559.711l11.988 21.184q.254.406.508.406.407 0 .458-.61l2.946-21.284q.05-.407.203-.508.203-.153.66-.153zM236.44 132.37q-4.572 0-7.925-1.93-3.353-1.93-5.131-5.435-1.727-3.556-1.727-8.331 0-6.3 2.489-11.532 2.49-5.283 7.061-8.382 4.572-3.099 10.516-3.099 4.064 0 7.163 1.575 3.15 1.575 4.876 4.166 1.728 2.54 1.83 5.435 0 .508-.102.762-.051.203-.254.254l-6.96 1.016h-.05q-.204 0-.356-.254-.102-.254-.254-1.016-.356-2.54-1.93-4.115-1.525-1.574-4.319-1.574-3.607 0-5.994 2.641-2.337 2.642-3.455 6.807-1.117 4.115-1.117 8.586 0 4.368 1.625 6.299 1.677 1.88 4.877 1.88 3.099 0 5.233-1.728 2.133-1.727 3.15-4.216l.304-1.423q.152-.254.152-.355 0-.305-.61-.305h-6.248q-.304 0-.406-.102-.102-.152-.05-.558l.456-4.166q.051-.559.508-.559l14.53.051q.609 0 .761.203.203.153.102.66l-2.49 17.577q-.05.66-.812.66h-1.524q-.457 0-.711-.152-.204-.152-.356-.61l-.864-3.708q-.05-.254-.355-.254t-.66.407q-1.677 2.083-4.37 3.454-2.692 1.372-6.603 1.372z"
style="-inkscape-font-specification:'Libre Franklin';fill:#50162d;fill-opacity:1"
transform="translate(-29.722 -93.661)"
font-style="normal"
font-variant="normal"
font-weight="400"
font-stretch="normal"
font-size="50.8px"
font-family="Libre Franklin"
fill="#487cff"
fill-opacity="1"
stroke-width=".264583"
id="path2" />
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-94.368149,-21.031308)">
<g
id="g12851-2"
transform="matrix(0.14750574,0,0,0.14750574,83.934984,15.918245)"
style="stroke:#50152c;stroke-opacity:0.992157"
inkscape:export-filename="../../../searxng-beetroot/beetroot_static/img/searxng.png"
inkscape:export-xdpi="1080.73"
inkscape:export-ydpi="1080.73">
<path
inkscape:connector-curvature="0"
id="path3814-0-7-1"
d="m 80.033739,36.455764 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.77413 41.675291,79.3245 91.536091,95.16289 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 118.24672,100.40622 84.338699,71.780528 80.033739,36.455764 Z"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<path
inkscape:connector-curvature="0"
id="path3814-0-8"
d="m 313.2893,37.799153 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774131 -41.67531,79.324501 -91.53611,95.162891 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808383 85.94998,-78.133147 z"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<path
inkscape:connector-curvature="0"
id="rect3804-7"
d="m 201.77833,175.2842 12.07511,-13.9057 c 4.0785,-4.69679 19.95774,2.45971 35.60368,16.04598 l 130.50177,113.32219 c 15.64593,13.58626 24.95835,28.30512 20.87985,33.00192 l -12.07512,13.9057 c -4.07849,4.69679 -19.95774,-2.45971 -35.60367,-16.04598 L 222.65818,208.28612 C 207.01224,194.69986 197.69983,179.981 201.77833,175.2842 Z"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<circle
r="107.58125"
cy="149.35568"
cx="196.89389"
id="path2987-9"
style="fill:#50142b;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<circle
r="72.430138"
cy="149.10315"
cx="196.64131"
id="path3757-9-0"
style="fill:#ffffff;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-width:0.713454;stroke-opacity:0.992157" />
<circle
r="27.274118"
cy="150.79912"
cx="197.85327"
id="path3800-2"
style="fill:#50132a;fill-opacity:1;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
<circle
r="5.5558391"
cy="141.34952"
cx="208.98526"
id="path3802-3"
style="fill:#ffffff;fill-opacity:0.992157;fill-rule:nonzero;stroke:#50152c;stroke-opacity:0.992157" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"searxng.head.min.js","sources":["../src/js/head/00_init.js"],"sourcesContent":["/* SPDX-License-Identifier: AGPL-3.0-or-later */\n(function (w, d) {\n 'use strict';\n\n // add data- properties\n var script = d.currentScript || (function () {\n var scripts = d.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n w.searxng = {\n settings: JSON.parse(atob(script.getAttribute('client_settings')))\n };\n\n // update the css\n var hmtlElement = d.getElementsByTagName(\"html\")[0];\n hmtlElement.classList.remove('no-js');\n hmtlElement.classList.add('js');\n\n})(window, document);\n"],"names":["w","d","script","currentScript","scripts","getElementsByTagName","length","searxng","settings","JSON","parse","atob","getAttribute","hmtlElement","classList","remove","add","window","document"],"mappings":"CACA,SAAWA,EAAGC,gBAIZ,IAAIC,EAASD,EAAEE,eAAkB,WAC/B,IAAIC,EAAUH,EAAEI,qBAAqB,UACrC,OAAOD,EAAQA,EAAQE,OAAS,GAFD,GAKjCN,EAAEO,QAAU,CACVC,SAAUC,KAAKC,MAAMC,KAAKT,EAAOU,aAAa,sBAIhD,IAAIC,EAAcZ,EAAEI,qBAAqB,QAAQ,GACjDQ,EAAYC,UAAUC,OAAO,SAC7BF,EAAYC,UAAUE,IAAI,OAhB5B,CAkBGC,OAAQC"}
{"version":3,"file":"searxng.head.min.js","sources":["../src/js/head/00_init.js"],"sourcesContent":["/* SPDX-License-Identifier: AGPL-3.0-or-later */\n(function (w, d) {\n 'use strict';\n\n // add data- properties\n var script = d.currentScript || (function () {\n var scripts = d.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n w.searxng = {\n settings: JSON.parse(atob(script.getAttribute('client_settings')))\n };\n\n // update the css\n var hmtlElement = d.getElementsByTagName(\"html\")[0];\n hmtlElement.classList.remove('no-js');\n hmtlElement.classList.add('js');\n\n})(window, document);\n"],"names":["w","d","script","currentScript","scripts","getElementsByTagName","length","searxng","settings","JSON","parse","atob","getAttribute","hmtlElement","classList","remove","add","window","document"],"mappings":"CACA,SAAWA,EAAGC,GACZ,aAGA,IAAIC,EAASD,EAAEE,eAAkB,WAC/B,IAAIC,EAAUH,EAAEI,qBAAqB,QAAQ,EAC7C,OAAOD,EAAQA,EAAQE,OAAS,EACjC,EAAE,EAEHN,EAAEO,QAAU,CACVC,SAAUC,KAAKC,MAAMC,KAAKT,EAAOU,aAAa,iBAAiB,CAAC,CAAC,CACnE,EAGA,IAAIC,EAAcZ,EAAEI,qBAAqB,MAAM,EAAE,GACjDQ,EAAYC,UAAUC,OAAO,OAAO,EACpCF,EAAYC,UAAUE,IAAI,IAAI,CAE/B,GAAEC,OAAQC,QAAQ"}

File diff suppressed because one or more lines are too long

View File

@ -11,10 +11,10 @@
"grunt-eslint": "^24.0.0",
"grunt-stylelint": "^0.16.0",
"grunt-image": "^6.4.0",
"ionicons": "^6.0.2",
"ionicons": "^7.1.0",
"less": "^4.1.3",
"less-plugin-clean-css": "^1.5.1",
"sharp": "^0.31.0",
"sharp": "^0.32.0",
"stylelint": "^13.13.1",
"stylelint-config-standard": "^22.0.0",
"ejs": "^3.1.8",

View File

@ -11,10 +11,10 @@
--color-base-font-rgb: 68, 68, 68;
--color-base-background: #fff;
--color-base-background-mobile: #f2f5f8;
--color-url-font: var(--disroot-green);
--color-url-visited-font: var(--disroot-blueish);
--color-url-font: #334999;
--color-url-visited-font: #9822c3;
/// Header Colors
--color-header-background: var(--disroot-purple);
--color-header-background: #fdfbff;
--color-header-border: #ddd;
/// Footer Colors
--color-footer-background: #fdfbff;
@ -28,7 +28,7 @@
--color-backtotop-border: #ddd;
--color-backtotop-background: #fff;
/// Button Colors
--color-btn-background: var(--disroot-purple);
--color-btn-background: #3050ff;
--color-btn-font: #fff;
--color-show-btn-background: #bbb;
--color-show-btn-font: #000;
@ -46,8 +46,8 @@
--color-success: #42db34;
--color-success-background: lighten(#42db34, 40%);
/// Categories Colors
--color-categories-item-selected-font: var(--disroot-purple-even-lighter);
--color-categories-item-border-selected: var(--disroot-purple-even-lighter);
--color-categories-item-selected-font: #3050ff;
--color-categories-item-border-selected: #3050ff;
/// Autocomplete Colors
--color-autocomplete-font: #000;
--color-autocomplete-border: #bbb;
@ -62,11 +62,11 @@
--color-result-border: #ddd;
--color-result-url-font: #000;
--color-result-vim-selected: #f7f7f7;
--color-result-vim-arrow: var(--disroot-purple);
--color-result-vim-arrow: #000bbb;
--color-result-description-highlight-font: #000;
--color-result-link-font: var(--disroot-purple);
--color-result-link-font-highlight: var(--disroot-purple-even-lighter);
--color-result-link-visited-font: var(--disroot-green);
--color-result-link-font: #000bbb;
--color-result-link-font-highlight: #000bbb;
--color-result-link-visited-font: #9822c3;
--color-result-publishdate-font: #777;
--color-result-engines-font: #545454;
--color-result-search-url-border: #ddd;
@ -102,13 +102,13 @@
--color-toolkit-input-text-font: #222;
--color-toolkit-checkbox-onoff-off-background: #ddd;
--color-toolkit-checkbox-onoff-on-background: #ddd;
--color-toolkit-checkbox-onoff-on-mark-background: var(--disroot-purple);
--color-toolkit-checkbox-onoff-on-mark-background: #3050ff;
--color-toolkit-checkbox-onoff-on-mark-color: #fff;
--color-toolkit-checkbox-onoff-off-mark-background: #aaa;
--color-toolkit-checkbox-onoff-off-mark-color: #fff;
--color-toolkit-checkbox-label-background: #ddd;
--color-toolkit-checkbox-label-border: #ddd;
--color-toolkit-checkbox-input-border: var(--disroot-purple);
--color-toolkit-checkbox-input-border: #3050ff;
--color-toolkit-engine-tooltip-border: #ddd;
--color-toolkit-engine-tooltip-background: #fff;
--color-toolkit-loader-border: rgba(0, 0, 0, 0.2);
@ -123,10 +123,10 @@
--color-base-font-rgb: 187, 187, 187;
--color-base-background: #222428;
--color-base-background-mobile: #222428;
--color-url-font: var(--disroot-green);
--color-url-visited-font: var(--disroot-blueish-lighter);
--color-url-font: #8af;
--color-url-visited-font: #c09cd9;
/// Header Colors
--color-header-background: var(--disroot-purple-darker);
--color-header-background: #1e1e22;
--color-header-border: #333;
/// Footer Colors
--color-footer-background: #1e1e22;
@ -140,7 +140,7 @@
--color-backtotop-border: #333;
--color-backtotop-background: #2b2e36;
/// Button Colors
--color-btn-background: var(--disroot-purple);
--color-btn-background: #58f;
--color-btn-font: #222;
--color-show-btn-background: #555;
--color-show-btn-font: #fff;
@ -158,8 +158,8 @@
--color-success: #79f56e;
--color-success-background: darken(#42db34, 40%);
/// Categories Colors
--color-categories-item-selected-font: var(--disroot-purple-even-lighter);
--color-categories-item-border-selected: var(--disroot-purple-even-lighter);
--color-categories-item-selected-font: #58f;
--color-categories-item-border-selected: #58f;
/// Autocomplete Colors
--color-autocomplete-font: #fff;
--color-autocomplete-border: #555;
@ -174,11 +174,11 @@
--color-result-border: #333;
--color-result-url-font: #fff;
--color-result-vim-selected: #1f1f23cc;
--color-result-vim-arrow: var(--disroot-purple);
--color-result-vim-arrow: #8af;
--color-result-description-highlight-font: #fff;
--color-result-link-font: var(--disroot-purple-lighter);
--color-result-link-font-highlight: var(--disroot-purple-even-lighter);
--color-result-link-visited-font: var(--disroot-green);
--color-result-link-font: #8af;
--color-result-link-font-highlight: #8af;
--color-result-link-visited-font: #c09cd9;
--color-result-publishdate-font: #888;
--color-result-engines-font: #a4a4a4;
--color-result-search-url-border: #555;
@ -214,13 +214,13 @@
--color-toolkit-input-text-font: #fff;
--color-toolkit-checkbox-onoff-off-background: #313338;
--color-toolkit-checkbox-onoff-on-background: #313338;
--color-toolkit-checkbox-onoff-on-mark-background: var(--disroot-purple);
--color-toolkit-checkbox-onoff-on-mark-background: #58f;
--color-toolkit-checkbox-onoff-on-mark-color: #222;
--color-toolkit-checkbox-onoff-off-mark-background: #ddd;
--color-toolkit-checkbox-onoff-off-mark-color: #222;
--color-toolkit-checkbox-label-background: #222;
--color-toolkit-checkbox-label-border: #333;
--color-toolkit-checkbox-input-border: var(--disroot-purple-lighter);
--color-toolkit-checkbox-input-border: #58f;
--color-toolkit-engine-tooltip-border: #333;
--color-toolkit-engine-tooltip-background: #222;
--color-toolkit-loader-border: rgba(255, 255, 255, 0.2);
@ -229,8 +229,6 @@
--color-doc-code-background: #300;
}
@import "disroot.less";
/// Dark Theme (autoswitch based on device pref)
@media (prefers-color-scheme: dark) {
:root.theme-auto {
@ -276,4 +274,7 @@
// decoration of the select HTML elements
@select-light-svg-path: "../svg/select-light.svg";
@select-dark-svg-path: "../svg/select-dark.svg";
@select-dark-svg-path: "../svg/select-dark.svg";
//import disroot theme custom changes
@import "disroot.less";

View File

@ -7,17 +7,48 @@
--disroot-purple-lighter: #80264a;
--disroot-purple-even-lighter: #e7518e;
--disroot-purple-darker: #201c1c;
--disroot-dark: #252121;
--disroot-green: #8eb726;
--disroot-green-lighter: #afcf60;
--disroot-green-even-lighter: #cde78c;
--disroot-green-darker: #71911e;
--disroot-blueish: #1f5c60;
--disroot-blueish-lighter: #38989f;
--color-btn-font: white;
--color-url-font: var(--disroot-green);
--color-url-visited-font: var(--disroot-blueish);
--color-header-background: var(--disroot-purple);
--color-btn-background: var(--disroot-purple);
--color-categories-item-selected-font: var(--disroot-purple-even-lighter);
--color-categories-item-border-selected: var(--disroot-purple-even-lighter);
--color-result-vim-arrow: var(--disroot-purple);
--color-result-link-font: var(--disroot-purple);
--color-result-link-font-highlight: var(--disroot-purple-even-lighter);
--color-result-link-visited-font: var(--disroot-green);
--color-toolkit-checkbox-onoff-on-mark-background: var(--disroot-purple);
--color-toolkit-checkbox-input-border: var(--disroot-purple);
--color-search-background-hover: var(--disroot-purple);
}
.dark-themes() {
--color-url-font: var(--disroot-green);
--color-url-visited-font: var(--disroot-blueish-lighter);
--color-header-background: var(--disroot-purple-darker);
--color-btn-background: var(--disroot-purple);
--color-btn-font: var(--color-base-font);
--color-categories-item-selected-font: var(--disroot-purple-even-lighter);
--color-categories-item-border-selected: var(--disroot-purple-even-lighter);
--color-result-vim-arrow: var(--disroot-purple);
--color-result-link-font: var(--disroot-purple-event-lighter);
--color-result-link-font-highlight: #fff;
--color-result-link-visited-font: var(--disroot-green);
--color-toolkit-checkbox-input-border: var(--disroot-purple-lighter);
--color-search-background-hover: var(--disroot-purple-lighter);
--color-base-background: var(--disroot-dark);
--color-base-background-mobile: var(--disroot-dark);
}
// Category color
.category label {
color: #c0bbbb;
color: var(--color-btn-font);
}
// Navbar links in right corner only on results page
@ -40,6 +71,17 @@
fill: var(--disroot-purple-even-lighter);
}
//Logo
.index {
.title {
min-height: 8rem;
}
}
//top margin front page
#main_index {
margin-top: 13vh;
}
// Have a slightly more bright disroot purple color on logo png
// when in dark mode
.theme-dark .index .title {
@ -48,4 +90,44 @@
.theme-dark img.logo {
filter: brightness(1.25);
}
}
// Dashboard
.dashboard {
width: 50%;
margin-left: auto;
margin-right: auto;
margin-top: 60px;
}
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
justify-content: center;
align-items: center;
gap: 1rem;
}
.image-dash {
display: block;
margin-left: auto;
margin-right: auto;
width: 50%;
}
.dashlink-text {
//position: absolute;
bottom: 0;
left: 0;
right: 0;
text-align: center;
color: var(--color-base-font);
}
.image-dash img {
max-width: 100%;
height: auto;
&:hover {
filter: grayscale(1);
}
}

View File

@ -31,6 +31,7 @@
// to center the results
@import "style-center.less";
@import "disroot.less";
// ion-icon
.ion-icon {

381
beetroot_static/test.html Normal file
View File

@ -0,0 +1,381 @@
<!DOCTYPE html>
<html>
<head>
<title>Image Grid</title>
<style>
.image-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(4rem, 1fr));
justify-content: center;
align-items: center;
gap: 10px;
justify-items: center;
}
.image-container {
max-width: 4rem;
}
.image-container img {
max-width: 100%;
height: auto;
}
.image-container p {
text-align: center;
margin: 0;
padding: 5px;
font-size: 14px;
}
</style>
</head>
<body>
<div class="image-grid">
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image1.jpg">
<div><p>Title 1</p></div>
</div>
<div class="image-container">
<img src="image2.jpg">
<div><p>Title 2</p></div>
</div>
<div class="image-container">
<img src="image3.jpg">
<div><p>Title 3</p></div>
</div>
<div class="image-container">
<img src="image4.jpg">
<div><p>Title 4</p></div>
</div>
<div class="image-container">
<img src="image5.jpg">
<div><p>Title 5</p></div>
</div>
<div class="image-container">
<img src="image6.jpg">
<div><p>Title 6</p></div>
</div>
</div>
</body>
</html>

View File

@ -1,4 +1,4 @@
{% extends "simple/base.html" %}
{% extends "beetroot/base.html" %}
{% block content %}
<div class="center">
<h1>{{ _('Page not found') }}</h1>

View File

@ -28,7 +28,7 @@
<link rel="icon" href="{{ url_for('static', filename='img/favicon.svg') }}" type="image/svg+xml">
</head>
<body class="{{ endpoint }}_endpoint" >
<main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}" class="{{body_class}}">
<main id="main_{{ self._TemplateReference__context.name|replace("beetroot/", "")|replace(".html", "") }}" class="{{body_class}}">
{% if errors %}
<div class="dialog-error" role="alert">
<a href="#" class="close" aria-label="close" title="close">×</a>
@ -41,13 +41,18 @@
{% endif %}
<nav id="links_on_top">
{%- from 'simple/icons.html' import icon_big -%}
{%- from 'beetroot/icons.html' import icon_big -%}
{%- block custom_url -%}
<a href="https://user.disroot.org" class="link_on_top_about">{{ icon_big('people-outline') }}<span>{{ _('Account') }}</span></a>
<a href="https://howto.disroot.org" class="link_on_top_about">{{ icon_big('school-outline') }}<span>{{ _('Help') }}</span></a>
<a href="https://status.disroot.org" class="link_on_top_about">{{ icon_big('magnet-outline') }}<span>{{ _('Server Status') }}</span></a>
{%- endblock -%}
{%- block linkto_about -%}
<a href="{{ url_for('info', pagename='about') }}" class="link_on_top_about">{{ icon_big('information-circle-outline') }}<span>{{ _('About') }}</span></a>
{%- endblock -%}
{%- block linkto_donate -%}
{%- if donation_url -%}
<a href="{{ donation_url }}" class="link_on_top_donate">{{ icon_big('heart-outline') }}<span>{{ _('Donate') }}</span></a>
{%- if serverstatus_url -%}
<a href="{{ serverstatus_url }}" class="link_on_top_donate">{{ icon_big('heart-outline') }}<span>{{ _('Status') }}</span></a>
{%- endif -%}
{%- endblock -%}
{%- block linkto_preferences -%}

View File

@ -1,4 +1,4 @@
{% from 'simple/icons.html' import icon_big %}
{% from 'beetroot/icons.html' import icon_big %}
{%- set category_icons = {
'general': 'search-outline',
'images': 'image-outline',

View File

@ -1,12 +1,12 @@
<select class="language" id="language" name="language" aria-label="{{ _('Search language') }}">{{- '' -}}
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }} [all]</option>
<option value="auto" {% if current_language == 'auto' %}selected="selected"{% endif %}>
{{- _('Auto-detect') -}}
{%- if current_language == 'auto' %} ({{ search_language }}){%- endif -%}
</option>
{%- for lang_id,lang_name,country_name,english_name,flag in language_codes | sort(attribute=1) -%}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>
{% if flag %}{{ flag }} {% endif%} {{- lang_name }} {% if country_name %}({{ country_name }}) {% endif %}
{%- for sxng_tag,lang_name,country_name,english_name,flag in sxng_locales | sort(attribute=1) -%}
<option value="{{ sxng_tag }}" {% if sxng_tag == current_language %}selected="selected"{% endif %}>
{% if flag %}{{ flag }} {% endif%} {{- lang_name }} {% if country_name %} - {{ country_name }} {% endif %} [{{sxng_tag}}]
</option>
{%- endfor -%}
</select>

View File

@ -1,8 +1,78 @@
{% extends "simple/base.html" %}
{% from 'simple/icons.html' import icon_big %}
{% extends "beetroot/base.html" %}
{% from 'beetroot/icons.html' import icon_big %}
{% block content %}
<div class="index">
<div class="title"><h1>SearXNG</h1></div>
{% include 'simple/simple_search.html' %}
{% include 'beetroot/simple_search.html' %}
</div>
<div class="dashboard">
<h1 class="title">More disroot apps:</h1>
<div class="dashboard-grid">
<div class="image-dash">
<a class="dashlink" href="https://webmail.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/email_circle.png">
<div class="dashlink-text"><p>Webmail</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://cloud.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/cloud_circle.png">
<div class="dashlink-text"><p>Cloud</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://webchat.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/chat_circle.png">
<div class="dashlink-text"><p>Webchat</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://cryptpad.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/cryptpad_circle.png">
<div class="dashlink-text"><p>Cryptpad</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://fe.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/fe_circle.png">
<div class="dashlink-text"><p>Akkoma</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://git.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/gitea_circle.png">
<div class="dashlink-text"><p>Git</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://upload.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/upload_circle.png">
<div class="dashlink-text"><p>File share</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://pad.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/pads_circle.png">
<div class="dashlink-text"><p>Ether pads</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://bin.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/bin_circle.png">
<div class="dashlink-text"><p>Paste Bin</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://calls.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/jitsi_circle.png">
<div class="dashlink-text"><p>Video Conference</p></div>
</a>
</div>
<div class="image-dash">
<a class="dashlink" href="https://mumble.disroot.org">
<img src="/static/themes/beetroot/img/dashboard/mumble_circle.png">
<div class="dashlink-text"><p>Audio Conference</p></div>
</a>
</div>
</div>
{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends 'simple/page_with_header.html' %}
{% extends 'beetroot/page_with_header.html' %}
{% block title %}{{ active_page.title }} - {% endblock %}
{% block linkto_about %}{% endblock %}
{% block linkto_donate %}{% endblock %}

View File

@ -1,8 +1,8 @@
{% from 'simple/icons.html' import icon_small %}
{% from 'beetroot/icons.html' import icon_small %}
<!-- Draw favicon -->
{% macro draw_favicon(favicon) -%}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='themes/simple/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}">
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='themes/beetroot/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}">
{%- endmacro %}
{% macro result_open_link(url, classes='') -%}

View File

@ -1,4 +1,4 @@
{% from 'simple/icons.html' import icon %}
{% from 'beetroot/icons.html' import icon %}
<div class="alert alert-info fade in" role="alert">
<strong class="lead">{{ icon('info-sign') }} {{ _('Information!') }}</strong>
{{ _('currently, there are no cookies defined.') }}

View File

@ -1,4 +1,4 @@
{% from 'simple/icons.html' import icon_big %}
{% from 'beetroot/icons.html' import icon_big %}
{% if unresponsive_engines %}
<div class="dialog-error" role="alert">
{{ icon_big('warning') }}

View File

@ -1,5 +1,5 @@
{% set body_class = "page_with_header" %}
{% extends "simple/base.html" %}
{% extends "beetroot/base.html" %}
{% block header %}
<a href="{{ url_for('index') }}"><img class="logo" src="{{ url_for('static', filename='img/searxng.png') }}" alt="SearXNG"></a>
{% endblock %}

View File

@ -1,7 +1,7 @@
{% from 'simple/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
{% from 'simple/icons.html' import icon_big %}
{% from 'beetroot/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
{% from 'beetroot/icons.html' import icon_big %}
{% extends "simple/page_with_header.html" %}
{% extends "beetroot/page_with_header.html" %}
{%- macro plugin_preferences(section) -%}
{%- for plugin in plugins -%}
@ -32,7 +32,8 @@
{{ _('View error logs and submit a bug report') -}}
</a>
{%- endif -%}
<p><span class="right">{{ _("!bang for this engine") }}</span>{% for bang in [search_engine.name] + [search_engine.shortcut] %}<span class="bang"> {{ '!' + bang.replace(' ', '_') }}</span>{% endfor %}</p>
<p><span class="right">{{ _("!bang for its categories") }}</span>{% for bang in search_engine.categories %}<span class="bang"> {{ '!' + bang.replace(' ', '_') }}</span>{% endfor %}</p>
</div>
{%- endif -%}
{%- endmacro %}
@ -107,7 +108,7 @@
<fieldset>
<legend>{{ _('Default categories') }}</legend>
{% set display_tooltip = false %}
{% include 'simple/categories.html' %}
{% include 'beetroot/categories.html' %}
</fieldset>
{% endif %}
{% if 'language' not in locked_preferences %}
@ -115,10 +116,10 @@
<legend id="pref_language">{{ _('Search language') }}</legend>
<p class="value">{{- '' -}}
<select name='language' aria-labelledby="pref_language" aria-describedby="desc_language">{{- '' -}}
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
<option value="auto" {% if current_language == 'auto' %}selected="selected"{% endif %}>{{ _('Auto-detect') }}</option>
{%- for lang_id,lang_name,country_name,english_name,flag in language_codes | sort(attribute=1) -%}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{% if flag %}{{ flag }} {% endif%} {{- lang_name }} {% if country_name %}({{ country_name }}) {% endif %}</option>
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }} [all]</option>
<option value="auto" {% if current_language == 'auto' %}selected="selected"{% endif %}>{{ _('Auto-detect') }} [auto]</option>
{%- for sxng_tag,lang_name,country_name,english_name,flag in sxng_locales | sort(attribute=1) -%}
<option value="{{ sxng_tag }}" {% if sxng_tag == current_language %}selected="selected"{% endif %}>{% if flag %}{{ flag }} {% endif%} {{- lang_name }} {% if country_name %} - {{ country_name }} {% endif %} [{{sxng_tag}}]</option>
{%- endfor -%}
</select>{{- '' -}}
</p>
@ -298,18 +299,18 @@
<p>{{ _('Currently used search engines') }}</p>
{{ tabs_open() }}
{% set ns = namespace(checked=true) %}
{% for categ in categories_as_tabs + [OTHER_CATEGORY] %}
{% for categ in categories_as_tabs + [DEFAULT_CATEGORY] %}
{{ tab_header('enginetab', 'category' + categ, _(categ), ns.checked )}}
{% set ns.checked = false %}
{% if categ == OTHER_CATEGORY %}
<p>{{_('This tab does not show up for search results, but you can search the engines listed here via bangs.')}}</p>
{% endif %}
{% if categ == DEFAULT_CATEGORY %}
<p>{{_('This tab dues not exists in the user interface, but you can search in these engines by its !bangs.')}} <a href="{{ url_for('info', pagename='search-syntax') }}">&#9432;</a></p>
{% endif %}
<div class="scrollx">
<table class="striped table_engines">
<tr>{{- "" -}}
<th class="engine_checkbox">{{ _("Allow") }}</th>{{- "" -}}
<th class="name">{{ _("Engine name") }}</th>{{- "" -}}
<th class="shortcut">{{ _("Shortcut") }}</th>{{- "" -}}
<th class="shortcut">{{ _("Bang") }}</th>{{- "" -}}
<th>{{ _("Supports selected language") }}</th>{{- "" -}}
<th>{{ _("SafeSearch") }}</th>{{- "" -}}
<th>{{ _("Time range") }}</th>{{- "" -}}
@ -317,9 +318,12 @@
<th>{{ _("Max time") }}</th>{{- "" -}}
{%- if enable_metrics %}<th>{{ _("Reliability") }}</th>{% endif -%}
</tr>
{% for group, engines in engines_by_category[categ] | group_engines_in_tab %}
{% for group, group_bang, engines in engines_by_category[categ] | group_engines_in_tab %}
{% if loop.length > 1 %}
<tr><th colspan="9" class="engine-group">{{_(group)}}</th></tr>
<tr>
<th class="engine-group" colspan="2">{{_(group)}}</th>
<th class="engine-group" colspan="7">{% if group_bang %}<span class="bang">{{group_bang}}</span>{% endif %}</th>
</tr>{{- "" -}}
{% endif %}
{% for search_engine in engines %}
{% if not search_engine.private %}
@ -329,13 +333,13 @@
<th class="name" data-engine-name="{{ search_engine.name }}">{% if search_engine.enable_http %}{{ icon_big('warning', 'No HTTPS') }}{% endif -%}
<label for="{{ engine_id }}">
{{- search_engine.name -}}
{%- if search_engine.about and search_engine.about.language -%}
{%- if search_engine.about and search_engine.about.language %}
({{search_engine.about.language | upper}})
{%- endif -%}
</label>
{{- engine_about(search_engine) -}}
</th>{{- "" -}}
<td class="shortcut">{{ shortcuts[search_engine.name] }}</td>{{- "" -}}
<td class="shortcut"><span class="bang">{{ '!' + shortcuts[search_engine.name] }}</span></td>{{- "" -}}
<td>{{ checkbox(None, supports[search_engine.name]['supports_selected_language'], true) }}</td>{{- "" -}}
<td>{{ checkbox(None, supports[search_engine.name]['safesearch'], true) }}</td>{{- "" -}}
<td>{{ checkbox(None, supports[search_engine.name]['time_range_support'], true) }}</td>{{- "" -}}
@ -412,7 +416,7 @@
{% endfor %}
</table>
{% else %}
{% include 'simple/messages/no_cookies.html' %}
{% include 'beetroot/messages/no_cookies.html' %}
{% endif %}
<h4>{{ _('Search URL of the currently saved preferences') }} :</h4>
<div class="selectable_url">
@ -439,3 +443,4 @@
</form>
{% endblock %}

View File

@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}

View File

@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}

View File

@ -1,5 +1,5 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'simple/icons.html' import icon_small %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'beetroot/icons.html' import icon_small %}
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}

View File

@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_link with context %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_link with context %}
{{ result_header(result, favicons, image_proxify) -}}
<div class="attributes">

View File

@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}

View File

@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_link with context %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_link with context %}
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}

View File

@ -1,4 +1,4 @@
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{% from 'beetroot/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
{{ result_header(result, favicons, image_proxify) }}
{{ result_sub_header(result) }}

View File

@ -1,5 +1,5 @@
{% extends "simple/base.html" %}
{% from 'simple/icons.html' import icon, icon_big, icon_small %}
{% extends "beetroot/base.html" %}
{% from 'beetroot/icons.html' import icon, icon_big, icon_small %}
{% macro engine_data_form(engine_data) -%}
{% for engine_name, kv_data in engine_data.items() %}
{% for k, v in kv_data.items() %}
@ -10,7 +10,7 @@
{% block title %}{% if query_in_title %}{{- q|e }} - {% endif %}{% endblock %}
{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}&amp;pageno={{ pageno }}&amp;time_range={{ time_range }}&amp;language={{ current_language }}&amp;safesearch={{ safesearch }}&amp;format=rss">{% endblock %}
{% block content %}
{% include 'simple/search.html' %}
{% include 'beetroot/search.html' %}
{% if results and results|map(attribute='template')|unique|list|count == 1 %}
{% set only_template = 'only_template_' + results[0]['template']|default('default')|replace('.html', '') %}
@ -58,7 +58,7 @@
{% if infoboxes %}
<div id="infoboxes">
{% for infobox in infoboxes -%}
{% include 'simple/infobox.html' %}
{% include 'beetroot/infobox.html' %}
{%- endfor %}
</div>
{% endif %}
@ -141,11 +141,11 @@
{% for result in results %}
{% if result.open_group and not only_template %}<div class="template_group_{{ result['template']|replace('.html', '') }}">{% endif %}
{% set index = loop.index %}
{% include get_result_template('simple', result['template']) %}
{% include get_result_template('beetroot', result['template']) %}
{% if result.close_group and not only_template %}</div>{% endif %}
{% endfor %}
{% if not results and not answers %}
{% include 'simple/messages/no_results.html' %}
{% include 'beetroot/messages/no_results.html' %}
{% endif %}
</div>
<div id="backToTop">

View File

@ -2,7 +2,7 @@
<div id="search_header">
<a id="search_logo" href="{{ url_for('index') }}" tabindex="0" title="{{ _('Display the front page') }}">
<span hidden>SearXNG</span>
{% include 'simple/searxng-wordmark.min.svg' without context %}
{% include 'beetroot/searxng-wordmark.min.svg' without context %}
</a>
<div id="search_view">
<div class="search_box">
@ -12,12 +12,12 @@
</div>
</div>
{% set display_tooltip = true %}
{% include 'simple/categories.html' %}
{% include 'beetroot/categories.html' %}
</div>
<div class="search_filters">
{% include 'simple/filters/languages.html' %}
{% include 'simple/filters/time_range.html' %}
{% include 'simple/filters/safesearch.html' %}
{% include 'beetroot/filters/languages.html' %}
{% include 'beetroot/filters/time_range.html' %}
{% include 'beetroot/filters/safesearch.html' %}
</div>
<input type="hidden" name="theme" value="{{ theme }}" >
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}

View File

@ -1,7 +1,7 @@
{% from 'simple/icons.html' import icon_big %}
{% from 'simple/new_issue.html' import new_issue with context %}
{% from 'beetroot/icons.html' import icon_big %}
{% from 'beetroot/new_issue.html' import new_issue with context %}
{% extends "simple/page_with_header.html" %}
{% extends "beetroot/page_with_header.html" %}
{%- macro th_sort(column_order, column_name) -%}
{% if selected_engine_name %}