treewide: vectorise iconography

Clear, crisp, resolution independent vector graphics replace the trusty
microscopic PNG. Some minor CSS changes were needed to constrain images
in some locations to make sure they don't consume too much space.

Iconography taken from Mate desktop theme with minor adjustments:

https://github.com/mate-desktop/mate-icon-theme/

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
This commit is contained in:
Paul Donald
2025-04-25 23:39:26 +02:00
parent 7e4d41e9ab
commit ae5d91da90
76 changed files with 139 additions and 73 deletions

View File

@@ -26,7 +26,7 @@ return view.extend({
var log_textarea = E('div', { 'id': 'log_textarea' },
E('img', {
'src': L.resource('icons/loading.gif'),
'src': L.resource('icons/loading.svg'),
'alt': _('Loading...'),
'style': 'vertical-align:middle'
}, _('Collecting data...'))

View File

@@ -45,7 +45,7 @@ return view.extend({
render: function() {
var log_textarea = E('div', { 'id': 'log_textarea' },
E('img', {
'src': L.resource('icons/loading.gif'),
'src': L.resource('icons/loading.svg'),
'alt': _('Loading'),
'style': 'vertical-align:middle'
}, _('Collecting data...'))

View File

@@ -52,8 +52,8 @@
<script>
new TablePooler(5,"/cgi-bin/bmx7-info", {'tunnels':''}, "tunnels_div", function(st){
var tunicon = "<%=resource%>/icons/tunnel.png";
var tunicon_dis = "<%=resource%>/icons/tunnel_disabled.png";
var tunicon = "<%=resource%>/icons/tunnel.svg";
var tunicon_dis = "<%=resource%>/icons/tunnel_disabled.svg";
var applyicon = "<%=resource%>/cbi/apply.gif";
var res = Array();
for ( var k in st.tunnels ) {

View File

@@ -38,7 +38,7 @@
if (legend && output)
{
output.innerHTML =
'<img src="{{ resource }}/icons/loading.gif" alt="{{ _('Loading') }}" style="vertical-align:middle" /> ' +
'<img src="{{ resource }}/icons/loading.svg" alt="{{ _('Loading') }}" style="vertical-align:middle" /> ' +
_('Waiting for command to complete...')
;

View File

@@ -89,7 +89,7 @@ $Id$
var bt_action = document.getElementById('bt_action');
var a_clear_links = document.getElementById('a_clear_links');
var output = document.getElementById('cshark-rc-output');
var loader = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
var loader = '<img src="<%=resource%>/icons/loading.svg" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
var msg = { 'start' : '<%:Waiting for capture to complete...%>', 'stop' : '<%:Waiting for upload to complete...%>' };
var status_msg = msg['start'];

View File

@@ -106,7 +106,7 @@
docker_status_message(
'notice',
'<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> <span style="white-space:pre-line; word-break:break-all; font-family: \'Courier New\', Courier, monospace;">' + loading_msg + '</span>'
'<img src="<%=resource%>/icons/loading.svg" alt="" style="vertical-align:middle" /> <span style="white-space:pre-line; word-break:break-all; font-family: \'Courier New\', Courier, monospace;">' + loading_msg + '</span>'
);
tt = window.setTimeout(tick, 200);

View File

@@ -69,7 +69,7 @@ local target = nx.uname().machine
window.states = { "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple" };
var t_lxc_list = document.getElementById('t_lxc_list');
var loader_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" />';
var loader_html = '<img src="<%=resource%>/icons/loading.svg" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" />';
var output_list = document.getElementById("lxc-list-output");
var output_add = document.getElementById("lxc-add-output");
var loader_add = document.getElementById("lxc-add-loader");

View File

@@ -58,7 +58,7 @@ var CBIBindSelect = form.ListValue.extend({
var item = E([
E('img', {
'title': device.getI18n(),
'src': L.resource('icons/%s%s.png'.format(type, device.isUp() ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(type, device.isUp() ? '' : '_disabled'))
}),
E('span', { 'class': 'hide-open' }, [ name ]),
E('span', { 'class': 'hide-close'}, [ device.getI18n() ])
@@ -91,7 +91,7 @@ var CBIBindSelect = form.ListValue.extend({
var item = E([
E('img', {
'title': device.getI18n(),
'src': L.resource('icons/alias%s.png'.format(net.isUp() ? '' : '_disabled'))
'src': L.resource('icons/alias%s.svg'.format(net.isUp() ? '' : '_disabled'))
}),
E('span', { 'class': 'hide-open' }, [ name ]),
E('span', { 'class': 'hide-close'}, [ device.getI18n() ])
@@ -115,7 +115,7 @@ var CBIBindSelect = form.ListValue.extend({
choices[keys[i]] = E([
E('img', {
'title': _('Absent Interface'),
'src': L.resource('icons/ethernet_disabled.png')
'src': L.resource('icons/ethernet_disabled.svg')
}),
E('span', { 'class': 'hide-open' }, [ keys[i] ]),
E('span', { 'class': 'hide-close'}, [ '%s: "%h"'.format(_('Absent Interface'), keys[i]) ])

View File

@@ -24,7 +24,7 @@ return view.extend({
var log_textarea = E('div', { 'id': 'log_textarea' },
E('img', {
'src': L.resource('icons/loading.gif'),
'src': L.resource('icons/loading.svg'),
'alt': _('Loading…'),
'style': 'vertical-align:middle'
}, _('Collecting data…'))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 651 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

View File

@@ -0,0 +1 @@
<svg width="32" height="32" viewBox="0 0 29.1 29.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="c"><stop stop-color="#fff" offset="0"/><stop stop-color="#fff" stop-opacity="0" offset="1"/></linearGradient><linearGradient id="a"><stop stop-color="#edd400" offset="0"/><stop stop-color="#edd400" stop-opacity="0" offset="1"/></linearGradient><filter id="filter5386" x="-.01972" y="-.02176" width="1.039" height="1.044" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="0.26293105"/></filter><linearGradient id="linearGradient7887" x1="-7.975" x2="-11.01" y1="25.36" y2="-6.568" gradientTransform="matrix(2 0 0 1.933 43.5 .5333)" gradientUnits="userSpaceOnUse"><stop stop-color="#d3d7cf" offset="0"/><stop stop-color="#fff" offset="1"/></linearGradient><linearGradient id="linearGradient7889" x1="-7.852" x2="-5.51" y1="3.755" y2="18.94" gradientUnits="userSpaceOnUse" xlink:href="#c"/><linearGradient id="linearGradient7907" x1="32.81" x2="32.81" y1="21" y2="26.2" gradientTransform="matrix(1.088,0,0,1.086,-1.581,-8.943)" gradientUnits="userSpaceOnUse"><stop stop-color="#2e3436" offset="0"/><stop stop-color="#555753" offset="1"/></linearGradient><linearGradient id="linearGradient7909" x1="28.88" x2="29" y1="29" y2="16" gradientTransform="translate(1,-7)" gradientUnits="userSpaceOnUse" xlink:href="#c"/><linearGradient id="linearGradient7919" x1="30.31" x2="30.31" y1="27.31" y2="24.69" gradientUnits="userSpaceOnUse" xlink:href="#a"/></defs><g transform="matrix(.9999 0 0 .9999 -8.925 -7.411)" enable-background="new"><rect transform="matrix(1.016 0 0 1.016 -.4902 -.2715)" x="15.38" y="2.875" width="32" height="29" rx="3.723" ry="3.723" display="none" fill-rule="evenodd" filter="url(#filter5386)" opacity=".1205"/><g transform="matrix(.8609 0 0 .8609 -2.741 7.746)"><rect x="14.5" y="1.5" width="32" height="29" rx="2.877" ry="2.781" fill="url(#linearGradient7887)" fill-rule="evenodd" stroke="#888a85" stroke-dashoffset=".7" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".9924"/><path transform="matrix(2.143 0 0 2.087 44.43 -.6302)" d="m-12.5 1.498c-0.573 0-1.002 0.429-1.002 1.002v11c0 0.573 0.429 1.002 1.002 1.002h12c0.573 0 1.002-0.429 1.002-1.002v-11c0-0.573-0.429-1.002-1.002-1.002z" fill="none" stroke="url(#linearGradient7889)" stroke-dashoffset=".7" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".9924" stroke-width=".4729"/><path d="m29.48 10.07c-0.639 0-1.155 0.516-1.155 1.154v0.288c0 0.293-0.229 0.543-0.544 0.543h-1.563c-0.639 0-1.155 0.704-1.155 1.342v6.445c0 0.638 0.516 1.154 1.155 1.154h8.564c0.639 0 1.155-0.516 1.155-1.154v-6.445c0-0.638-0.516-1.342-1.155-1.342h-1.563c-0.262 0.02-0.544-0.186-0.544-0.526v-0.305c0-0.638-0.516-1.154-1.155-1.154z" fill="url(#linearGradient7907)" fill-rule="evenodd"/><path d="m29.56 9.438c-1.109 0-1.984 0.909-2.062 2h-0.938c-1.159 0-2.125 0.965-2.125 2.125v5.874c0 1.16 0.966 2.125 2.125 2.125h7.876c1.159 0 2.125-0.965 2.125-2.125v-5.874c0-1.16-0.966-2.125-2.125-2.125h-0.938c-0.08-1.092-0.953-2-2.063-2z" fill="none" stroke="url(#linearGradient7909)" stroke-dashoffset=".7" stroke-linecap="round"/><g transform="translate(1,-8)" fill="none" stroke="url(#linearGradient7919)" stroke-linecap="round" stroke-width="1px"><path d="m26.5 26.5v-2"/><path d="m28.5 26.5v-2"/><path d="m30.5 26.5v-2"/><path d="m32.5 26.5v-2"/></g></g></g><text transform="translate(-96.22 -126.5)" x="100.26" y="142.24" fill="#f0f" font-family="sans-serif" font-size="14.01" stroke-width=".35"><tspan x="100.26" y="142.24">@</tspan></text></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

View File

@@ -0,0 +1,2 @@
<svg width="31.15" height="13.79" viewBox="0 -35.58 119.6 70.61" xmlns="http://www.w3.org/2000/svg"><path d="m1.003-30.84c.74-6.538 10.2-6.1 10.2 0v1.379c6.867 14.74 19.73 22.89 33.83 25.93 7.348 1.597 15.04 1.802 22.42.861 7.359-.943 14.38-3.045 20.38-6.088 9.346-4.736 16.23-11.72 18.06-20.1v-1.98c.74-6.538 10.2-6.1 10.2 0v3.277c2.83 5.868 6.71 10.56 11.07 14.34 3.72 3.234 7.79 5.841 11.87 7.957v4.067c-1.51-.751-3.03-1.542-4.52-2.416v12.42h4.52v6.265h-22.94v19.96h-10.2v-19.97h-94.68v19.96h-10.2v-19.96h-21.48v-6.265h3.778v-12.83c-1.247.751-2.519 1.448-3.778 2.116v-4.109c3.57-1.979 7.101-4.326 10.35-7.179 4.4-3.876 8.294-8.681 11.14-14.73zm65.14 32.01v7.63h-3.492v-7.342c-2.647.149-5.308.149-7.982 0v7.342h-3.492v-7.643c-2.298-.246-4.582-.614-6.841-1.106-.415-.097-.83-.177-1.233-.287v9.023h-3.492v-9.964c-2.739-.818-5.4-1.843-7.982-3.071v13.04h-3.492v-14.84c-2.856-1.624-5.57-3.535-8.074-5.732v20.58h-3.492v-23.97c-1.961-2.101-3.764-4.423-5.375-6.961v30.94h94.7v-28.59c-1.4 2.265-3.12 4.381-5.14 6.346v22.23h-3.499v-19.22c-2.385 1.842-5.046 3.507-7.902 4.954l-.168.08v14.18h-3.492v-12.56c-2.545 1.078-5.218 2.006-7.984 2.77v9.8h-3.491v-8.927c-2.077.464-4.206.833-6.348 1.106-.571.05-1.142.123-1.727.177zm58.61-11.72v19.37h6.27v-14.59c-2.09-1.378-4.13-2.921-6.09-4.627zm-3.49 19.37v-22.74c-1.86-1.979-3.6-4.135-5.17-6.524v29.25h5.17zm-124.7-23.64v23.64h4.465v-29.51c-1.363 2.13-2.869 4.067-4.465 5.869zm-3.492 23.64v-20.08c-.3114.287-.6361.587-.9598.86-1.7 1.501-3.479 2.88-5.297 4.136v15.08z" fill="#4242ff" stroke-width="1.331"/></svg>
<!-- https://www.svgrepo.com/svg/490584/bridge PD License -->

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 385 B

View File

@@ -0,0 +1,2 @@
<svg width="31.15" height="13.79" viewBox="0 -35.58 119.6 70.61" xmlns="http://www.w3.org/2000/svg"><path d="m1.003-30.84c.74-6.538 10.2-6.1 10.2 0v1.379c6.867 14.74 19.73 22.89 33.83 25.93 7.348 1.597 15.04 1.802 22.42.861 7.359-.943 14.38-3.045 20.38-6.088 9.346-4.736 16.23-11.72 18.06-20.1v-1.98c.74-6.538 10.2-6.1 10.2 0v3.277c2.83 5.868 6.71 10.56 11.07 14.34 3.72 3.234 7.79 5.841 11.87 7.957v4.067c-1.51-.751-3.03-1.542-4.52-2.416v12.42h4.52v6.265h-22.94v19.96h-10.2v-19.97h-94.68v19.96h-10.2v-19.96h-21.48v-6.265h3.778v-12.83c-1.247.751-2.519 1.448-3.778 2.116v-4.109c3.57-1.979 7.101-4.326 10.35-7.179 4.4-3.876 8.294-8.681 11.14-14.73zm65.14 32.01v7.63h-3.492v-7.342c-2.647.149-5.308.149-7.982 0v7.342h-3.492v-7.643c-2.298-.246-4.582-.614-6.841-1.106-.415-.097-.83-.177-1.233-.287v9.023h-3.492v-9.964c-2.739-.818-5.4-1.843-7.982-3.071v13.04h-3.492v-14.84c-2.856-1.624-5.57-3.535-8.074-5.732v20.58h-3.492v-23.97c-1.961-2.101-3.764-4.423-5.375-6.961v30.94h94.7v-28.59c-1.4 2.265-3.12 4.381-5.14 6.346v22.23h-3.499v-19.22c-2.385 1.842-5.046 3.507-7.902 4.954l-.168.08v14.18h-3.492v-12.56c-2.545 1.078-5.218 2.006-7.984 2.77v9.8h-3.491v-8.927c-2.077.464-4.206.833-6.348 1.106-.571.05-1.142.123-1.727.177zm58.61-11.72v19.37h6.27v-14.59c-2.09-1.378-4.13-2.921-6.09-4.627zm-3.49 19.37v-22.74c-1.86-1.979-3.6-4.135-5.17-6.524v29.25h5.17zm-124.7-23.64v23.64h4.465v-29.51c-1.363 2.13-2.869 4.067-4.465 5.869zm-3.492 23.64v-20.08c-.3114.287-.6361.587-.9598.86-1.7 1.501-3.479 2.88-5.297 4.136v15.08z" fill="#999" stroke-width="1.331"/></svg>
<!-- https://www.svgrepo.com/svg/490584/bridge PD License -->

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 B

View File

@@ -0,0 +1 @@
<svg width="29.103" height="29.103" viewBox="0 0 29.1 29.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="c"><stop stop-color="#fff" offset="0"/><stop stop-color="#fff" stop-opacity="0" offset="1"/></linearGradient><linearGradient id="a"><stop stop-color="#edd400" offset="0"/><stop stop-color="#edd400" stop-opacity="0" offset="1"/></linearGradient><filter id="filter5386" x="-.01972" y="-.02176" width="1.039" height="1.044" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="0.26293105"/></filter><linearGradient id="linearGradient7887" x1="-7.975" x2="-11.01" y1="25.36" y2="-6.568" gradientTransform="matrix(2 0 0 1.933 43.5 .5333)" gradientUnits="userSpaceOnUse"><stop stop-color="#d3d7cf" offset="0"/><stop stop-color="#fff" offset="1"/></linearGradient><linearGradient id="linearGradient7889" x1="-7.852" x2="-5.51" y1="3.755" y2="18.94" gradientUnits="userSpaceOnUse" xlink:href="#c"/><linearGradient id="linearGradient7907" x1="32.81" x2="32.81" y1="21" y2="26.2" gradientTransform="matrix(1.088 0 0 1.086 -1.581 -8.943)" gradientUnits="userSpaceOnUse"><stop stop-color="#2e3436" offset="0"/><stop stop-color="#555753" offset="1"/></linearGradient><linearGradient id="linearGradient7909" x1="28.88" x2="29" y1="29" y2="16" gradientTransform="translate(1,-7)" gradientUnits="userSpaceOnUse" xlink:href="#c"/><linearGradient id="linearGradient7919" x1="30.31" x2="30.31" y1="27.31" y2="24.69" gradientUnits="userSpaceOnUse" xlink:href="#a"/></defs><g transform="matrix(.9999 0 0 .9999 -8.972 -6.998)" enable-background="new"><rect transform="matrix(1.016 0 0 1.016 -.4902 -.2715)" x="15.38" y="2.875" width="32" height="29" rx="3.723" ry="3.723" display="none" fill-rule="evenodd" filter="url(#filter5386)" opacity=".1205"/><g transform="matrix(.8609 0 0 .8609 -2.741 7.746)"><rect x="14.5" y="1.5" width="32" height="29" rx="2.877" ry="2.781" fill="url(#linearGradient7887)" fill-rule="evenodd" stroke="#888a85" stroke-dashoffset=".7" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".9924"/><path transform="matrix(2.143 0 0 2.087 44.43 -.6302)" d="m-12.5 1.498c-0.573 0-1.002 0.429-1.002 1.002v11c0 0.573 0.429 1.002 1.002 1.002h12c0.573 0 1.002-0.429 1.002-1.002v-11c0-0.573-0.429-1.002-1.002-1.002z" fill="none" stroke="url(#linearGradient7889)" stroke-dashoffset=".7" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".9924" stroke-width=".4729"/><path d="m29.48 10.07c-0.639 0-1.155 0.516-1.155 1.154v0.288c0 0.293-0.229 0.543-0.544 0.543h-1.563c-0.639 0-1.155 0.704-1.155 1.342v6.445c0 0.638 0.516 1.154 1.155 1.154h8.564c0.639 0 1.155-0.516 1.155-1.154v-6.445c0-0.638-0.516-1.342-1.155-1.342h-1.563c-0.262 0.02-0.544-0.186-0.544-0.526v-0.305c0-0.638-0.516-1.154-1.155-1.154z" fill="url(#linearGradient7907)" fill-rule="evenodd"/><path d="m29.56 9.438c-1.109 0-1.984 0.9085-2.062 2h-0.938c-1.159 0-2.125 0.965-2.125 2.125v5.874c0 1.16 0.966 2.125 2.125 2.125h7.876c1.159 0 2.125-0.965 2.125-2.125v-5.874c0-1.16-0.966-2.125-2.125-2.125h-0.938c-0.078-1.092-0.953-2-2.063-2z" fill="none" stroke="url(#linearGradient7909)" stroke-dashoffset=".7" stroke-linecap="round"/><g transform="translate(1,-8)" fill="none" stroke="url(#linearGradient7919)" stroke-linecap="round" stroke-width="1px"><path d="m26.5 26.5v-2"/><path d="m28.5 26.5v-2"/><path d="m30.5 26.5v-2"/><path d="m32.5 26.5v-2"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,2 @@
<svg width="48" height="48" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><rect x="11" y="1" width="2" height="5" opacity=".14"/><rect x="11" y="1" width="2" height="5" transform="rotate(30 12 12)" opacity=".29"/><rect x="11" y="1" width="2" height="5" transform="rotate(60 12 12)" opacity=".43"/><rect x="11" y="1" width="2" height="5" transform="rotate(90 12 12)" opacity=".57"/><rect x="11" y="1" width="2" height="5" transform="rotate(120 12 12)" opacity=".71"/><rect x="11" y="1" width="2" height="5" transform="rotate(150 12 12)" opacity=".86"/><rect x="11" y="1" width="2" height="5" transform="rotate(180 12 12)"/><animateTransform attributeName="transform" type="rotate" calcMode="discrete" dur="0.75s" values="0 12 12;30 12 12;60 12 12;90 12 12;120 12 12;150 12 12;180 12 12;210 12 12;240 12 12;270 12 12;300 12 12;330 12 12;360 12 12" repeatCount="indefinite"/></g></svg>
<!-- https://github.com/n3r4zzurr0/svg-spinners MIT License -->

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 561 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 624 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

View File

@@ -0,0 +1 @@
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="c"><stop stop-color="#fff" offset="0"/><stop stop-color="#fff" stop-opacity="0" offset="1"/></linearGradient><linearGradient id="a"><stop stop-color="#edd400" offset="0"/><stop stop-color="#edd400" stop-opacity="0" offset="1"/></linearGradient><linearGradient id="linearGradient7887" x1="-7.975" x2="-11.01" y1="25.36" y2="-6.568" gradientTransform="matrix(2 0 0 1.933 43.5 .5333)" gradientUnits="userSpaceOnUse"><stop stop-color="#d3d7cf" offset="0"/><stop stop-color="#fff" offset="1"/></linearGradient><linearGradient id="linearGradient7889" x1="-7.852" x2="-5.51" y1="3.755" y2="18.94" gradientUnits="userSpaceOnUse" xlink:href="#c"/><linearGradient id="linearGradient7909" x1="28.88" x2="29" y1="29" y2="16" gradientTransform="translate(1,-7)" gradientUnits="userSpaceOnUse" xlink:href="#c"/><linearGradient x1="30.31" x2="30.31" y1="27.31" y2="24.69" gradientUnits="userSpaceOnUse" xlink:href="#a"/></defs><g transform="matrix(1.35 0 0 1.35 -18.75 -1.288)" enable-background="new"><rect x="14.5" y="1.5" width="32" height="29" rx="2.877" ry="2.781" fill="url(#linearGradient7887)" fill-rule="evenodd" stroke="#888a85" stroke-dashoffset=".7" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".9924"/><path transform="matrix(2.143 0 0 2.087 44.43 -.6302)" d="m-12.5 1.498c-0.573 0-1.002 0.429-1.002 1.002v11c0 0.573 0.429 1.002 1.002 1.002h12c0.573 0 1.002-0.429 1.002-1.002v-11c0-0.573-0.429-1.002-1.002-1.002z" fill="none" stroke="url(#linearGradient7889)" stroke-dashoffset=".7" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".9924" stroke-width=".4729"/><g transform="translate(-6.823 -6.052)"><path d="m29.48 10.07c-0.639 0-1.155 0.516-1.155 1.154v0.288c0 0.293-0.229 0.543-0.544 0.543h-1.563c-0.639 0-1.155 0.704-1.155 1.342v6.445c0 0.638 0.516 1.154 1.155 1.154h8.564c0.639 0 1.155-0.516 1.155-1.154v-6.445c0-0.638-0.516-1.342-1.155-1.342h-1.563c-0.262 0.02-0.544-0.186-0.544-0.526v-0.305c0-0.638-0.516-1.154-1.155-1.154z" fill="#999" fill-rule="evenodd"/><path d="m29.56 9.438c-1.109 0-1.984 0.9085-2.062 2h-0.938c-1.159 0-2.125 0.965-2.125 2.125v5.874c0 1.16 0.966 2.125 2.125 2.125h7.876c1.159 0 2.125-0.965 2.125-2.125v-5.874c0-1.16-0.966-2.125-2.125-2.125h-0.938c-0.078-1.092-0.953-2-2.063-2z" fill="none" stroke="url(#linearGradient7909)" stroke-dashoffset=".7" stroke-linecap="round"/></g><g transform="translate(6.991 -6.052)"><path d="m29.48 10.07c-0.639 0-1.155 0.516-1.155 1.154v0.288c0 0.293-0.229 0.543-0.544 0.543h-1.563c-0.639 0-1.155 0.704-1.155 1.342v6.445c0 0.638 0.516 1.154 1.155 1.154h8.564c0.639 0 1.155-0.516 1.155-1.154v-6.445c0-0.638-0.516-1.342-1.155-1.342h-1.563c-0.262 0.02-0.544-0.186-0.544-0.526v-0.305c0-0.638-0.516-1.154-1.155-1.154z" fill="#999" fill-rule="evenodd"/><path d="m29.56 9.438c-1.109 0-1.984 0.9085-2.062 2h-0.938c-1.159 0-2.125 0.965-2.125 2.125v5.874c0 1.16 0.966 2.125 2.125 2.125h7.876c1.159 0 2.125-0.965 2.125-2.125v-5.874c0-1.16-0.966-2.125-2.125-2.125h-0.938c-0.078-1.092-0.953-2-2.063-2z" fill="none" stroke="url(#linearGradient7909)" stroke-dashoffset=".7" stroke-linecap="round"/></g><g transform="matrix(1 0 0 -1 -6.823 38.54)"><path d="m29.48 10.07c-0.639 0-1.155 0.516-1.155 1.154v0.288c0 0.293-0.229 0.543-0.544 0.543h-1.563c-0.639 0-1.155 0.704-1.155 1.342v6.445c0 0.638 0.516 1.154 1.155 1.154h8.564c0.639 0 1.155-0.516 1.155-1.154v-6.445c0-0.638-0.516-1.342-1.155-1.342h-1.563c-0.262 0.02-0.544-0.186-0.544-0.526v-0.305c0-0.638-0.516-1.154-1.155-1.154z" fill="#999" fill-rule="evenodd"/><path d="m29.56 9.438c-1.109 0-1.984 0.9085-2.062 2h-0.938c-1.159 0-2.125 0.965-2.125 2.125v5.874c0 1.16 0.966 2.125 2.125 2.125h7.876c1.159 0 2.125-0.965 2.125-2.125v-5.874c0-1.16-0.966-2.125-2.125-2.125h-0.938c-0.078-1.092-0.953-2-2.063-2z" fill="none" stroke="url(#linearGradient7909)" stroke-dashoffset=".7" stroke-linecap="round"/></g><g transform="matrix(1 0 0 -1 6.991 38.54)"><path d="m29.48 10.07c-0.639 0-1.155 0.516-1.155 1.154v0.288c0 0.293-0.229 0.543-0.544 0.543h-1.563c-0.639 0-1.155 0.704-1.155 1.342v6.445c0 0.638 0.516 1.154 1.155 1.154h8.564c0.639 0 1.155-0.516 1.155-1.154v-6.445c0-0.638-0.516-1.342-1.155-1.342h-1.563c-0.262 0.02-0.544-0.186-0.544-0.526v-0.305c0-0.638-0.516-1.154-1.155-1.154z" fill="#999" fill-rule="evenodd"/><path d="m29.56 9.438c-1.109 0-1.984 0.9085-2.062 2h-0.938c-1.159 0-2.125 0.965-2.125 2.125v5.874c0 1.16 0.966 2.125 2.125 2.125h7.876c1.159 0 2.125-0.965 2.125-2.125v-5.874c0-1.16-0.966-2.125-2.125-2.125h-0.938c-0.078-1.092-0.953-2-2.063-2z" fill="none" stroke="url(#linearGradient7909)" stroke-dashoffset=".7" stroke-linecap="round"/></g></g></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 B

View File

@@ -0,0 +1,2 @@
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m30 17v-2h-13v-4h2a2.002 2.002 0 0 0 2-2v-5a2.002 2.002 0 0 0 -2-2h-6a2.002 2.002 0 0 0 -2 2v5a2.002 2.002 0 0 0 2 2h2v4h-13v2h6v4h-2a2.002 2.002 0 0 0 -2 2v5a2.002 2.002 0 0 0 2 2h6a2.002 2.002 0 0 0 2-2v-5a2.002 2.002 0 0 0 -2-2h-2v-4h12v4h-2a2.002 2.002 0 0 0 -2 2v5a2.002 2.002 0 0 0 2 2h6a2.002 2.002 0 0 0 2-2v-5a2.002 2.002 0 0 0 -2-2h-2v-4zm-17-13h6v5h-6zm-1 24h-6v-5h6zm14 0h-6v-5h6z" fill="#4242ff"/><path d="m0 0h32v32h-32z" fill="none"/></svg>
<!-- Vectors and icons by https://github.com/carbon-design-system/carbon in Apache License -->

After

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

View File

@@ -0,0 +1,2 @@
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m30 17v-2h-13v-4h2a2.002 2.002 0 0 0 2-2v-5a2.002 2.002 0 0 0 -2-2h-6a2.002 2.002 0 0 0 -2 2v5a2.002 2.002 0 0 0 2 2h2v4h-13v2h6v4h-2a2.002 2.002 0 0 0 -2 2v5a2.002 2.002 0 0 0 2 2h6a2.002 2.002 0 0 0 2-2v-5a2.002 2.002 0 0 0 -2-2h-2v-4h12v4h-2a2.002 2.002 0 0 0 -2 2v5a2.002 2.002 0 0 0 2 2h6a2.002 2.002 0 0 0 2-2v-5a2.002 2.002 0 0 0 -2-2h-2v-4zm-17-13h6v5h-6zm-1 24h-6v-5h6zm14 0h-6v-5h6z" fill="#808080"/><path d="m0 0h32v32h-32z" fill="none"/></svg>
<!-- Vectors and icons by https://github.com/carbon-design-system/carbon in Apache License -->

After

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 745 B

View File

@@ -0,0 +1 @@
<svg height="32.011" viewBox="0 0 24.892 32.011" width="24.892" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="10.28" cy="8.071" gradientTransform="matrix(1 0 0 .8274 0 1.122)" gradientUnits="userSpaceOnUse" r="4.525" xlink:href="#e"/><radialGradient id="b" cx="10.28" cy="9.842" gradientTransform="matrix(4.681 0 0 1.277 -37.84 -3.301)" gradientUnits="userSpaceOnUse" r="4.525" xlink:href="#g"/><radialGradient id="c" cx="10.74" cy="19.5" gradientTransform="matrix(1 0 0 .3026 0 13.6)" gradientUnits="userSpaceOnUse" r="8.263" xlink:href="#d"/><linearGradient id="d"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="e"><stop offset="0" stop-color="#729fcf"/><stop offset="1" stop-color="#729fcf" stop-opacity="0"/></linearGradient><radialGradient id="f" cx="10.28" cy="10.02" gradientTransform="matrix(4.681 0 0 1.277 -37.84 -3.301)" gradientUnits="userSpaceOnUse" r="4.525" xlink:href="#g"/><linearGradient id="g"><stop offset="0" stop-color="#3465a4"/><stop offset="1" stop-color="#3465a4" stop-opacity="0"/></linearGradient><linearGradient id="h" gradientUnits="userSpaceOnUse" x1="11.22" x2="11.22" xlink:href="#d" y1="43.14" y2="23.04"/><linearGradient id="i" gradientUnits="userSpaceOnUse" x1="24.84" x2="21.04" y1="44.53" y2="21.04"><stop offset="0" stop-color="#babdb6"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="j" gradientUnits="userSpaceOnUse" x1="39.07" x2="39.42" y1="28.5" y2="10.94"><stop offset="0" stop-color="#888a85"/><stop offset="1" stop-color="#555753"/></linearGradient><radialGradient id="k" cx="10.28" cy="7.825" gradientTransform="matrix(.6984 0 0 .5779 3.1 2.744)" gradientUnits="userSpaceOnUse" r="4.525" xlink:href="#e"/><radialGradient id="l" cx="8.906" cy="1.729" gradientTransform="matrix(.7375 0 0 .7202 2.434 .6617)" gradientUnits="userSpaceOnUse" r="1.995"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#d3d7cf"/></radialGradient><radialGradient id="m" cx="8.305" cy="1.126" gradientTransform="matrix(1.86 0 0 1.817 -7.14 -.8942)" gradientUnits="userSpaceOnUse" r="2.051"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></radialGradient><g enable-background="new" transform="matrix(.6237 0 0 .6237 -2.5201 3.0118)"><ellipse cx="10.74" cy="19.5" fill="url(#c)" opacity=".1" rx="8.263" ry="2.5" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.305 0 0 2.378 -1.198 -5.82)"/><ellipse cx="10.28" cy="6.5" rx="4.281" ry="3.5" style="opacity:.6;stroke-width:.1997;stroke-linecap:round;stroke-linejoin:round;fill:url(#a);stroke:url(#f)" transform="matrix(4.555 0 0 5.507 -22.83 -20.8)"/><path d="m24 12.55a.4507.4507 0 0 0 -.4.244l-16 31a.4507.4507 0 0 0 .4004.658h3.4996a.4507.4507 0 0 0 .406-.256l2.416-5.007 21.06 3.531.711 1.476a.4507.4507 0 0 0 .406.256h3.5a.4507.4507 0 0 0 .4-.658l-16-31a.4507.4507 0 0 0 -.4-.244zm0 6.465 3.172 6.619-5.627-1.463zm-3.756 7.826 5.738 1.478-8.398 4.088zm9.201 3.545 3.864 8.027-15.18-2.531z" fill="url(#h)" fill-rule="evenodd" opacity=".153" transform="matrix(1 0 0 .4005 0 26.14)"/><ellipse cx="10.28" cy="6.5" rx="4.281" ry="3.5" style="opacity:.8;stroke-width:.2685;stroke-linecap:round;stroke-linejoin:round;stroke:url(#b);fill:url(#a)" transform="matrix(3.387 0 0 4.094 -10.82 -11.61)"/><g transform="translate(0 -.5)"><path d="m24 13-16 31h3.5l2.563-5.312 21.62 3.625.812 1.687h3.5zm0 4.969 4 8.343-7.094-1.843zm-4 8.343 7.281 1.875-10.66 5.188zm9.656 3.469 4.438 9.219-17.44-2.906z" fill="url(#i)" fill-rule="evenodd" stroke="url(#j)"/><g fill="none" stroke="#fff" stroke-linecap="round"><path d="m38.41 43.03-14.41-27.91-14.41 27.91"/><path d="m15.78 34.91 13.03-6.344"/><path d="m15.09 36.84 19.66 3.281"/></g></g><g stroke-linecap="round" stroke-linejoin="round"><ellipse cx="10.28" cy="6.5" fill="url(#k)" rx="4.281" ry="3.5" stroke="url(#b)" stroke-width=".4075" transform="matrix(2.219 0 0 2.714 1.186 -2.643)"/><g transform="matrix(2.24 0 0 2.23 -19.68 9.389)"><ellipse cx="9.203" cy="2.25" fill="url(#l)" rx="1.797" ry="1.75" stroke="#555753" stroke-width=".3967" transform="matrix(1.113 0 0 1.143 9.256 -.07143)"/><circle cx="18.874" cy="1.7892" fill="#fff" r=".906" stroke-width="1.812"/></g><ellipse cx="9.203" cy="2.25" fill="none" rx="1.797" ry="1.75" stroke="url(#m)" stroke-width=".5078" transform="matrix(1.948 0 0 1.991 6.074 10.48)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 480 B

View File

@@ -0,0 +1 @@
<svg height="32.011" viewBox="0 0 24.892 32.011" width="24.892" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="10.74" cy="19.5" gradientTransform="matrix(1 0 0 .3026 0 13.6)" gradientUnits="userSpaceOnUse" r="8.263" xlink:href="#b"/><linearGradient id="b"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="11.22" x2="11.22" xlink:href="#b" y1="43.14" y2="23.04"/><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="24.84" x2="21.04" y1="44.53" y2="21.04"><stop offset="0" stop-color="#babdb6"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="39.07" x2="39.42" y1="28.5" y2="10.94"><stop offset="0" stop-color="#888a85"/><stop offset="1" stop-color="#555753"/></linearGradient><radialGradient id="f" cx="8.906" cy="1.729" gradientTransform="matrix(.7375 0 0 .7202 2.434 .6617)" gradientUnits="userSpaceOnUse" r="1.995"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#d3d7cf"/></radialGradient><radialGradient id="g" cx="8.305" cy="1.126" gradientTransform="matrix(1.86 0 0 1.817 -7.14 -.8942)" gradientUnits="userSpaceOnUse" r="2.051"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></radialGradient><g enable-background="new" transform="matrix(.6237 0 0 .6237 -2.5201 3.0118)"><ellipse cx="10.74" cy="19.5" fill="url(#a)" opacity=".1" rx="8.263" ry="2.5" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.305 0 0 2.378 -1.198 -5.82)"/><path d="m24 12.55a.4507.4507 0 0 0 -.4.244l-16 31a.4507.4507 0 0 0 .4004.658h3.4996a.4507.4507 0 0 0 .406-.256l2.416-5.007 21.06 3.531.711 1.476a.4507.4507 0 0 0 .406.256h3.5a.4507.4507 0 0 0 .4-.658l-16-31a.4507.4507 0 0 0 -.4-.244zm0 6.465 3.172 6.619-5.627-1.463zm-3.756 7.826 5.738 1.478-8.398 4.088zm9.201 3.545 3.864 8.027-15.18-2.531z" fill="url(#c)" fill-rule="evenodd" opacity=".153" transform="matrix(1 0 0 .4005 0 26.14)"/><g transform="translate(0 -.5)"><path d="m24 13-16 31h3.5l2.563-5.312 21.62 3.625.812 1.687h3.5zm0 4.969 4 8.343-7.094-1.843zm-4 8.343 7.281 1.875-10.66 5.188zm9.656 3.469 4.438 9.219-17.44-2.906z" fill="url(#d)" fill-rule="evenodd" stroke="url(#e)"/><g fill="none" stroke="#fff" stroke-linecap="round"><path d="m38.41 43.03-14.41-27.91-14.41 27.91"/><path d="m15.78 34.91 13.03-6.344"/><path d="m15.09 36.84 19.66 3.281"/></g></g><g stroke-linecap="round" stroke-linejoin="round"><g transform="matrix(2.24 0 0 2.23 -19.68 9.389)"><ellipse cx="9.203" cy="2.25" fill="url(#f)" rx="1.797" ry="1.75" stroke="#555753" stroke-width=".3967" transform="matrix(1.113 0 0 1.143 9.256 -.07143)"/><circle cx="18.874" cy="1.7892" fill="#fff" r=".906" stroke-width="1.812"/></g><ellipse cx="9.203" cy="2.25" fill="none" rx="1.797" ry="1.75" stroke="url(#g)" stroke-width=".5078" transform="matrix(1.948 0 0 1.991 6.074 10.48)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,2 @@
<svg height="32" viewBox="0 0 79.365 79.384" width="32" xmlns="http://www.w3.org/2000/svg"><g stroke-width=".265" transform="translate(155.59 -82.006)"><path d="m-76.297 120.53s1.836-38.524-40.483-38.524c-37.44 0-38.6 36.954-38.6 36.954s-5.51 42.43 39.46 42.43c43.126 0 39.623-40.86 39.623-40.86zm-52.323-13.46c7.94-4.86 18.08-1.89 21.89 5.42.72 1.38.81 3.51.35 4.97-1.57 5.01-5.29 7.82-10.4 9.02 1.51-1.29 2.7-2.75 3.08-4.77a6.9855 6.9855 0 0 0 -1.2-5.55 7.0802 7.0802 0 0 0 -8.15-2.48c-3.14 1.19-4.86 4.06-4.55 7.59.28 3.28 2.77 5.4 7.42 6.2-.69.37-1.23.64-1.75.94a16.912 16.912 0 0 0 -5.44 4.72c-.47.64-.8.69-1.51.25-9.35-5.72-9.96-20.06.26-26.31zm-7 35.33c-1.5.38-2.96.94-4.5 1.45.76-5.07 6.69-9.74 11.71-9.2a12.933 12.933 0 0 0 -2.45 6.85c-1.67.3-3.24.51-4.76.9zm31.96-49.481c1.48.06 2.97.03 4.448.07a7.6867 7.6867 0 0 1 1.108.153 10.744 10.744 0 0 1 -1.128 1.438c-.529.495-1.128.978-1.888.226-.19-.181-.62-.139-.94-.143-1.48-.02-2.96-.07-4.43-.01a27.527 27.527 0 0 0 -3.82.389c-.23.04-.59.829-.48 1.119.26.684.63 1.438 1.19 1.876 2.04 1.616 4.22 3.073 6.28 4.683 2 1.55 3.858 3.26 4.986 5.62 1.478 3.06 1.517 6.28.889 9.51-1.068 5.39-3.795 9.86-8.205 13.1-1.78 1.31-3.99 2.05-6.03 2.99-1.79.83-3.64 1.54-5.43 2.36-3.25 1.47-5.07 4.99-4.53 8.64.49 3.36 3.44 6.16 6.81 6.74 4.04.69 8.22-1.94 9.21-6.05 1.11-4.62-1.4-8.75-6.1-10-.21-.1-.42-.11-.85-.22 1.26-.56 2.34-.96 3.35-1.52q2.62-1.44 5.15-3.06c.5-.31.77-.31 1.19 0 3.229 2.8 5.155 6.28 5.694 10.54.898 7.06-2.435 13.55-8.744 16.87-9.75 5.15-21.68-.71-23.84-11.52-1.84-9.26 4.69-17.66 12.56-19.28 3.38-.7 6.48-2.11 8.88-4.71 1.55-1.69 2.31-3.13 2.56-3.78a10.468 10.468 0 0 0 .72-3.83 8.9606 8.9606 0 0 0 -.78-3.28c-.82-1.87-3.97-4.85-4.75-5.48l-7.41-5.8c-.26-.21-.55-.2-1.19-.16-.76 0-2.69.16-3.53-.1.68-.508 2.52-1.252 3.31-1.85-2.4-1.622-5.14-1.036-7.66-1.521.59-1.083 3.46-2.749 5.1-2.934a24.218 24.218 0 0 0 -.44-2.72c-.1-.368-.52-.725-.87-.936-.87-.509-1.79-.93-2.79-1.437a5.8039 5.8039 0 0 1 2.99-.928 11.196 11.196 0 0 1 3.01.293c1.78.407 3.2.141 4.62-1.071-1.11-.45-2.23-.861-3.31-1.347a32.554 32.554 0 0 1 -3.12-1.629c2.81.39 5.53 1.444 8.4 1.059q0-.196.1-.392c-2.14-.5-4.29-1-6.67-1.554 3.98-.364 7.68-.424 11.19 1.285.99.48 2.02.878 2.97 1.428.46.267.77.795 1.15 1.206.3.326.54.763.91.959 1.4.746 2.95.775 4.518.738 0-.179 0-.347 0-.527 1.587.494 3.363 2.319 3.36 3.652-2.561 0-5.118 0-7.678.02-.28 0-.55.202-.82.311.26.151.51.423.78.433z" fill="#88171a"/><path d="m-106.97 89.126a.39174.39174 0 0 0 0 .626.59071.59071 0 0 0 .81.218c.25-.125.49-.257.79-.415-.24-.205-.43-.374-.63-.538-.35-.287-.64-.106-.92.108z"/></g></svg>
<!-- Vectorisation of WireGuard logo https://commons.wikimedia.org/wiki/File:Logo_of_WireGuard.svg -->

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -119,7 +119,7 @@ var CBIZoneSelect = form.ListValue.extend({
for (var k = 0; k < devices.length; k++) {
span.appendChild(E('img', {
'title': devices[k].getI18n(),
'src': L.resource('icons/%s%s.png'.format(devices[k].getType(), network.isUp() ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(devices[k].getType(), network.isUp() ? '' : '_disabled'))
}));
}
@@ -264,7 +264,7 @@ var CBIZoneForwards = form.DummyValue.extend({
for (var k = 0; k < subdevs.length && subdevs[k]; k++) {
span.appendChild(E('img', {
'title': subdevs[k].getI18n(),
'src': L.resource('icons/%s%s.png'.format(subdevs[k].getType(), network.isUp() ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(subdevs[k].getType(), network.isUp() ? '' : '_disabled'))
}));
}
@@ -283,7 +283,7 @@ var CBIZoneForwards = form.DummyValue.extend({
ifaces.push(E('span', { 'class': 'ifacebadge' }, [
E('img', {
'title': title,
'src': L.resource('icons/%s%s.png'.format(type, up ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(type, up ? '' : '_disabled'))
}),
device ? device.getName() : devices[i]
]));
@@ -360,7 +360,7 @@ var CBINetworkSelect = form.ListValue.extend({
for (var j = 0; j < devices.length && devices[j]; j++) {
span.appendChild(E('img', {
'title': devices[j].getI18n(),
'src': L.resource('icons/%s%s.png'.format(devices[j].getType(), network.isUp() ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(devices[j].getType(), network.isUp() ? '' : '_disabled'))
}));
}
@@ -505,7 +505,7 @@ var CBIDeviceSelect = form.ListValue.extend({
var item = E([
E('img', {
'title': device.getI18n(),
'src': L.resource('icons/%s%s.png'.format(type, device.isUp() ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(type, device.isUp() ? '' : '_disabled'))
}),
E('span', { 'class': 'hide-open' }, [ name ]),
E('span', { 'class': 'hide-close'}, [ device.getI18n() ])
@@ -538,7 +538,7 @@ var CBIDeviceSelect = form.ListValue.extend({
var item = E([
E('img', {
'title': device.getI18n(),
'src': L.resource('icons/alias%s.png'.format(device.isUp() ? '' : '_disabled'))
'src': L.resource('icons/alias%s.svg'.format(device.isUp() ? '' : '_disabled'))
}),
E('span', { 'class': 'hide-open' }, [ name ]),
E('span', { 'class': 'hide-close'}, [ device.getI18n() ])
@@ -576,7 +576,7 @@ var CBIDeviceSelect = form.ListValue.extend({
choices[keys[i]] = E([
E('img', {
'title': _('Absent Interface'),
'src': L.resource('icons/ethernet_disabled.png')
'src': L.resource('icons/ethernet_disabled.svg')
}),
E('span', { 'class': 'hide-open' }, [ keys[i] ]),
E('span', { 'class': 'hide-close'}, [ '%s: "%h"'.format(_('Absent Interface'), keys[i]) ])
@@ -600,7 +600,7 @@ var CBIDeviceSelect = form.ListValue.extend({
create: !this.nocreate,
create_markup: '' +
'<li data-value="{{value}}">' +
'<img title="'+_('Custom Interface')+': &quot;{{value}}&quot;" src="'+L.resource('icons/ethernet_disabled.png')+'" />' +
'<img title="'+_('Custom Interface')+': &quot;{{value}}&quot;" src="'+L.resource('icons/ethernet_disabled.svg')+'" />' +
'<span class="hide-open">{{value}}</span>' +
'<span class="hide-close">'+_('Custom Interface')+': "{{value}}"</span>' +
'</li>'

View File

@@ -4520,7 +4520,7 @@ const UI = baseclass.extend(/** @lends LuCI.ui.prototype */ {
* or rejecting with `null` when the connectivity check timed out.
*/
pingDevice(proto, ipaddr) {
const target = '%s://%s%s?%s'.format(proto ?? 'http', ipaddr ?? window.location.host, L.resource('icons/loading.gif'), Math.random());
const target = '%s://%s%s?%s'.format(proto ?? 'http', ipaddr ?? window.location.host, L.resource('icons/loading.svg'), Math.random());
return new Promise((resolveFn, rejectFn) => {
const img = new Image();

View File

@@ -64,7 +64,7 @@
var img = new Image();
img.onload = function() { window.location = url };
img.src = 'https://' + window.location.hostname + ':' + port + '{{ resource }}/icons/loading.gif?' + Math.random();
img.src = 'https://' + window.location.hostname + ':' + port + '{{ resource }}/icons/loading.svg?' + Math.random();
setTimeout(function() { img.src = '' }, 5000);
});

View File

@@ -83,7 +83,7 @@
for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
nempty = false
%>
<img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.svg" />
<% end %>
<% if nempty then %><em><%:(empty)%></em><% end -%>
</span>

View File

@@ -48,7 +48,7 @@
%>>
<script type="item-template"><!--
<li data-value="{{value}}">
<img title="<%:Custom Interface%>: &quot;{{value}}&quot;" src="<%=resource%>/icons/ethernet_disabled.png" />
<img title="<%:Custom Interface%>: &quot;{{value}}&quot;" style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/ethernet_disabled.svg" />
<span class="hide-open">{{value}}</span>
<span class="hide-close"><%:Custom Interface%>: "{{value}}"</span>
</li>
@@ -64,7 +64,7 @@
attr("data-value", iface:name()) ..
ifattr(checked[iface:name()], "selected", "selected")
%>>
<img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.svg" />
<span class="hide-open"><%=pcdata(iface:name())%></span>
<span class="hide-close">
<%=pcdata(iface:get_i18n())%>
@@ -79,7 +79,7 @@
<% end end %>
<% if not self.nocreate then %>
<li data-value="">
<img title="<%:Custom Interface%>" src="<%=resource%>/icons/ethernet_disabled.png" />
<img title="<%:Custom Interface%>" style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/ethernet_disabled.svg" />
<span><%:Custom Interface%>:</span>
<input type="password" style="display:none" />
<input class="create-item-input" type="text" />

View File

@@ -18,7 +18,7 @@
if not iface:is_bridge() then
empty = false
%>
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.svg" />
<% end end %>
<% if empty then %><em><%:(no interfaces attached)%></em><% end %>
</span>

View File

@@ -52,7 +52,7 @@
if not iface:is_bridge() then
empty = false
-%>
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.svg" />
<%- end end %>
<% if empty then %>
<em class="hide-close"><%:(no interfaces attached)%></em>

View File

@@ -71,7 +71,7 @@ function updateDevBadge(node, dev) {
dom.content(node, [
E('img', {
'class': 'middle',
'src': L.resource('icons/%s%s.png').format(type, up ? '' : '_disabled')
'src': L.resource('icons/%s%s.svg').format(type, up ? '' : '_disabled')
}),
'\x0a', dev.getName()
]);
@@ -107,7 +107,7 @@ function updatePortStatus(node, dev) {
dom.content(node, [
E('img', {
'class': 'middle',
'src': L.resource('icons/port_%s.png').format(carrier ? 'up' : 'down')
'src': L.resource('icons/port_%s.svg').format(carrier ? 'up' : 'down')
}),
'\x0a', desc
]);

View File

@@ -35,11 +35,11 @@ function render_iface(dev, alias) {
up = dev ? dev.isUp() : false;
return E('span', { class: 'cbi-tooltip-container' }, [
E('img', { 'class' : 'middle', 'src': L.resource('icons/%s%s.png').format(
E('img', { 'class' : 'middle', 'src': L.resource('icons/%s%s.svg').format(
alias ? 'alias' : type,
up ? '' : '_disabled') }),
E('span', { 'class': 'cbi-tooltip ifacebadge large' }, [
E('img', { 'src': L.resource('icons/%s%s.png').format(
E('img', { 'src': L.resource('icons/%s%s.svg').format(
type, up ? '' : '_disabled') }),
L.itemlist(E('span', { 'class': 'left' }), [
_('Type'), dev ? dev.getTypeI18n() : null,
@@ -103,7 +103,7 @@ function render_modal_status(node, ifc) {
dom.content(node, [
E('img', {
'src': L.resource('icons/%s%s.png').format(dev ? dev.getType() : 'ethernet', ifc.isUp() ? '' : '_disabled'),
'src': L.resource('icons/%s%s.svg').format(dev ? dev.getType() : 'ethernet', ifc.isUp() ? '' : '_disabled'),
'title': dev ? dev.getTypeI18n() : _('Not present')
}),
ifc ? render_status(E('span'), ifc, true) : E('em', _('Interface not present or not connected yet.'))
@@ -297,7 +297,7 @@ return view.extend({
var dev = ifc.getDevice();
dom.content(stat, [
E('img', {
'src': L.resource('icons/%s%s.png').format(dev ? dev.getType() : 'ethernet', ifc.isUp() ? '' : '_disabled'),
'src': L.resource('icons/%s%s.svg').format(dev ? dev.getType() : 'ethernet', ifc.isUp() ? '' : '_disabled'),
'title': dev ? dev.getTypeI18n() : _('Not present')
}),
render_status(E('span'), ifc, true)
@@ -1289,7 +1289,7 @@ return view.extend({
'data-network': section_id
}, [
E('img', {
'src': L.resource('icons/ethernet_disabled.png'),
'src': L.resource('icons/ethernet_disabled.svg'),
'style': 'width:16px; height:16px'
}),
E('br'), E('small', '?')

View File

@@ -71,13 +71,13 @@ function render_port_status(node, portstate) {
if (!portstate || !portstate.link)
dom.content(node, [
E('img', { src: L.resource('icons/port_down.png') }),
E('img', { src: L.resource('icons/port_down.svg') }),
E('br'),
_('no link')
]);
else
dom.content(node, [
E('img', { src: L.resource('icons/port_up.png') }),
E('img', { src: L.resource('icons/port_up.svg') }),
E('br'),
'%d'.format(portstate.speed) + _('baseT'),
E('br'),

View File

@@ -22,21 +22,21 @@ function count_changes(section_id) {
function render_radio_badge(radioDev) {
return E('span', { 'class': 'ifacebadge' }, [
E('img', { 'src': L.resource('icons/wifi%s.png').format(radioDev.isUp() ? '' : '_disabled') }),
E('img', { 'src': L.resource('icons/wifi%s.svg').format(radioDev.isUp() ? '' : '_disabled') }),
' ',
radioDev.getName()
]);
}
function render_signal_badge(signalPercent, signalValue, noiseValue, wrap, mode) {
let icon = L.resource('icons/signal-75-100.png'), title, value;
let icon = L.resource('icons/signal-75-100.svg'), title, value;
switch(true) {
case(signalPercent < 0): icon = L.resource('icons/signal-none.png'); break;
case(signalPercent == 0): icon = L.resource('icons/signal-0.png'); break;
case(signalPercent < 25): icon = L.resource('icons/signal-0-25.png'); break;
case(signalPercent < 50): icon = L.resource('icons/signal-25-50.png'); break;
case(signalPercent < 75): icon = L.resource('icons/signal-50-75.png'); break;
case(signalPercent < 0): icon = L.resource('icons/signal-none.svg'); break;
case(signalPercent == 0): icon = L.resource('icons/signal-000-000.svg'); break;
case(signalPercent < 25): icon = L.resource('icons/signal-000-025.svg'); break;
case(signalPercent < 50): icon = L.resource('icons/signal-025-050.svg'); break;
case(signalPercent < 75): icon = L.resource('icons/signal-050-075.svg'); break;
}
if (signalValue) {
@@ -719,7 +719,7 @@ return view.extend({
'data-ssid': bss.network.getSSID()
}, [
E('img', {
'src': L.resource('icons/wifi%s.png').format(bss.network.isUp() ? '' : '_disabled'),
'src': L.resource('icons/wifi%s.svg').format(bss.network.isUp() ? '' : '_disabled'),
'title': bss.radio.getI18n()
}),
E('span', [

View File

@@ -26,17 +26,17 @@ return view.extend({
var icon, title, value;
if (signalPercent < 0)
icon = L.resource('icons/signal-none.png');
icon = L.resource('icons/signal-none.svg');
else if (signalPercent == 0)
icon = L.resource('icons/signal-0.png');
icon = L.resource('icons/signal-000-000.svg');
else if (signalPercent < 25)
icon = L.resource('icons/signal-0-25.png');
icon = L.resource('icons/signal-000-025.svg');
else if (signalPercent < 50)
icon = L.resource('icons/signal-25-50.png');
icon = L.resource('icons/signal-025-050.svg');
else if (signalPercent < 75)
icon = L.resource('icons/signal-50-75.png');
icon = L.resource('icons/signal-050-075.svg');
else
icon = L.resource('icons/signal-75-100.png');
icon = L.resource('icons/signal-075-100.svg');
value = '%d\xa0%s'.format(signalValue, _('dBm'));
title = '%s: %d %s'.format(_('Signal'), signalValue, _('dBm'));

View File

@@ -269,7 +269,7 @@ function renderNetworkBadge(network, zonename) {
if (l3dev)
span.appendChild(E('img', {
'title': l3dev.getI18n(),
'src': L.resource('icons/%s%s.png'.format(l3dev.getType(), l3dev.isUp() ? '' : '_disabled'))
'src': L.resource('icons/%s%s.svg'.format(l3dev.getType(), l3dev.isUp() ? '' : '_disabled'))
}));
else
span.appendChild(E('em', _('(no interfaces attached)')));
@@ -363,7 +363,7 @@ return baseclass.extend({
return E('div', { 'class': 'ifacebox', 'style': 'margin:.25em;min-width:70px;max-width:100px' }, [
E('div', { 'class': 'ifacebox-head', 'style': 'font-weight:bold' }, [ port.netdev.getName() ]),
E('div', { 'class': 'ifacebox-body' }, [
E('img', { 'src': L.resource('icons/port_%s.png').format(carrier ? 'up' : 'down') }),
E('img', { 'src': L.resource('icons/port_%s.svg').format(carrier ? 'up' : 'down') }),
E('br'),
formatSpeed(carrier, speed, duplex)
]),

View File

@@ -42,7 +42,7 @@ function renderbox(ifc, ipv6) {
_('Connected'), (uptime > 0) ? '%t'.format(uptime) : null
]),
E('div', {}, renderBadge(
L.resource('icons/%s.png').format(dev ? dev.getType() : 'ethernet_disabled'), null,
L.resource('icons/%s.svg').format(dev ? dev.getType() : 'ethernet_disabled'), null,
_('Device'), dev ? dev.getI18n() : '-',
_('MAC address'), dev.getMAC())
)

View File

@@ -114,17 +114,17 @@ return baseclass.extend({
var icon;
if (net.isDisabled())
icon = L.resource('icons/signal-none.png');
icon = L.resource('icons/signal-none.svg');
else if (quality <= 0)
icon = L.resource('icons/signal-0.png');
icon = L.resource('icons/signal-000-000.svg');
else if (quality < 25)
icon = L.resource('icons/signal-0-25.png');
icon = L.resource('icons/signal-000-025.svg');
else if (quality < 50)
icon = L.resource('icons/signal-25-50.png');
icon = L.resource('icons/signal-025-050.svg');
else if (quality < 75)
icon = L.resource('icons/signal-50-75.png');
icon = L.resource('icons/signal-050-075.svg');
else
icon = L.resource('icons/signal-75-100.png');
icon = L.resource('icons/signal-075-100.svg');
var WPS_button = null;
@@ -263,15 +263,15 @@ return baseclass.extend({
var icon;
var q = Math.min((bss.signal + 110) / 70 * 100, 100);
if (q == 0)
icon = L.resource('icons/signal-0.png');
icon = L.resource('icons/signal-000-000.svg');
else if (q < 25)
icon = L.resource('icons/signal-0-25.png');
icon = L.resource('icons/signal-000-025.svg');
else if (q < 50)
icon = L.resource('icons/signal-25-50.png');
icon = L.resource('icons/signal-025-050.svg');
else if (q < 75)
icon = L.resource('icons/signal-50-75.png');
icon = L.resource('icons/signal-050-075.svg');
else
icon = L.resource('icons/signal-75-100.png');
icon = L.resource('icons/signal-075-100.svg');
var sig_title, sig_value;
@@ -303,7 +303,7 @@ return baseclass.extend({
'data-ifname': networks[i].getIfname(),
'data-ssid': networks[i].getActiveSSID()
}, [
E('img', { 'src': L.resource('icons/wifi.png') }),
E('img', { 'src': L.resource('icons/wifi.svg'), 'style': 'width:32px;height:32px' }),
E('span', {}, [
' ', networks[i].getShortName(),
E('small', {}, [ ' (', networks[i].getIfname(), ')' ])

View File

@@ -128,7 +128,7 @@ return view.extend({
'click': ui.createHandlerFn(this, handleInterfaceDetails, ifaces[instanceName])
}, [
E('span', { 'class': 'ifacebadge' }, [
E('img', { 'src': L.resource('icons', 'tunnel.png') }),
E('img', { 'src': L.resource('icons', 'wireguard.svg'), 'style': 'width:32px;height:32px' }),
'\xa0',
instanceName
]),

View File

@@ -1608,6 +1608,12 @@ body.modal-overlay-active #modal_overlay {
color: var(--text-color-high);
}
.cbi-dropdown img {
/* the following are necessary to constrain (vector) images of any size */
max-height: 1.6em; /* Adjusts image height to fit slightly larger than text line height */
width: auto; /* Preserves aspect ratio */
}
.cbi-dropdown > ul {
margin: 0 !important;
padding: 0;
@@ -2207,8 +2213,8 @@ th[data-sort-direction="desc"]::after { content: "\a0\25bc"; }
}
.ifacebadge img {
width: 16px;
height: 16px;
width: 32px;
height: 32px;
vertical-align: middle;
}

View File

@@ -1466,6 +1466,12 @@ body:not(.Interfaces) .cbi-rowstyle-2:first-child {
margin-top: -3px;
}
.cbi-dropdown img {
/* the following are necessary to constrain (vector) images of any size */
max-height: 1.6em; /* Adjusts image height to fit slightly larger than text line height */
width: auto; /* Preserves aspect ratio */
}
.cbi-dropdown > ul {
display: flex;
overflow-x: hidden;
@@ -1822,7 +1828,7 @@ body.modal-overlay-active #modal_overlay {
left: .2em;
width: 32px;
content: "";
background: url(../resources/icons/loading.gif) no-repeat center;
background: url(../resources/icons/loading.svg) no-repeat center;
background-size: 16px;
}
@@ -1886,6 +1892,12 @@ body.modal-overlay-active #modal_overlay {
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
}
.ifacebadge img {
width: 32px;
height: 32px;
vertical-align: middle;
}
td > .ifacebadge,
.td > .ifacebadge {
font-size: .8rem;

View File

@@ -716,7 +716,8 @@ p > a {
.ifacebadge > img {
vertical-align: text-bottom;
margin: .25em;
height: 16px;
height: 32px;
width: 32px;
}
.ifacebadge > * {
@@ -1267,6 +1268,12 @@ textarea {
box-shadow: inset 0 0 1px var(--main-dark-color);
}
.cbi-dropdown img {
/* the following are necessary to constrain (vector) images of any size */
max-height: 1.6em; /* Adjusts image height to fit slightly larger than text line height */
width: auto; /* Preserves aspect ratio */
}
.cbi-dropdown > ul {
margin: 0 !important;
padding: 0;

View File

@@ -1175,6 +1175,12 @@ ul.cbi-tabmenu li.cbi-tab-disabled[data-errors]::after {
outline: 2px solid #4b6e9b;
}
.cbi-dropdown img {
/* the following are necessary to constrain (vector) images of any size */
max-height: 1.6em; /* Adjusts image height to fit slightly larger than text line height */
width: auto; /* Preserves aspect ratio */
}
.cbi-dropdown > ul {
margin: 0 !important;
padding: 0;
@@ -1551,6 +1557,12 @@ select + .cbi-button {
background: #fff;
}
.ifacebadge img {
width: 32px;
height: 32px;
vertical-align: middle;
}
.ifacebox-head {
background: #eee;
}
@@ -1571,7 +1583,6 @@ select + .cbi-button {
.ifacebadge > em {
margin-right: 5px;
display: inline-block;
height: 16px;
}
.ifacebadge-active {
@@ -1782,7 +1793,7 @@ select + .cbi-button {
bottom: 0;
width: 32px;
content: " ";
background: url(../resources/icons/loading.gif) no-repeat center;
background: url(../resources/icons/loading.svg) no-repeat center;
background-size: 16px;
}