Add new icons, repair icon sizing

This commit is contained in:
simojenki
2021-08-30 15:56:43 +10:00
parent ca9bf2fc04
commit ee0a0747ee
33 changed files with 270 additions and 275 deletions

View File

@@ -50,8 +50,8 @@
"scripts": { "scripts": {
"clean": "rm -Rf build", "clean": "rm -Rf build",
"build": "tsc", "build": "tsc",
"dev": "BONOB_SONOS_SERVICE_NAME=bonobDev BONOB_SONOS_DEVICE_DISCOVERY=true nodemon -V ./src/app.ts", "dev": "BONOB_ICON_FOREGROUND_COLOR=white BONOB_ICON_BACKGROUND_COLOR=darkgrey BONOB_SONOS_SERVICE_NAME=bonobDev BONOB_SONOS_DEVICE_DISCOVERY=true nodemon -V ./src/app.ts",
"devr": "BONOB_SONOS_SERVICE_NAME=bonobDev BONOB_SONOS_DEVICE_DISCOVERY=true BONOB_SONOS_AUTO_REGISTER=true nodemon -V ./src/app.ts", "devr": "BONOB_ICON_FOREGROUND_COLOR=white BONOB_ICON_BACKGROUND_COLOR=darkgrey BONOB_SONOS_SERVICE_NAME=bonobDev BONOB_SONOS_DEVICE_DISCOVERY=true BONOB_SONOS_AUTO_REGISTER=true nodemon -V ./src/app.ts",
"register-dev": "ts-node ./src/register.ts http://$(hostname):4534", "register-dev": "ts-node ./src/register.ts http://$(hostname):4534",
"test": "jest" "test": "jest"
} }

View File

@@ -54,10 +54,7 @@ export interface Icon {
export class ColorOverridingIcon implements Icon { export class ColorOverridingIcon implements Icon {
rule: () => Boolean; rule: () => Boolean;
newColors: () => Partial< newColors: () => Partial<
Pick< Pick<Transformation, "backgroundColor" | "foregroundColor">
Transformation,
"backgroundColor" | "foregroundColor"
>
>; >;
icon: Icon; icon: Icon;
@@ -65,10 +62,7 @@ export class ColorOverridingIcon implements Icon {
icon: Icon, icon: Icon,
rule: () => Boolean, rule: () => Boolean,
newColors: () => Partial< newColors: () => Partial<
Pick< Pick<Transformation, "backgroundColor" | "foregroundColor">
Transformation,
"backgroundColor" | "foregroundColor"
>
> >
) { ) {
this.icon = icon; this.icon = icon;
@@ -153,10 +147,7 @@ export const makeFestive = (icon: Icon, clock: Clock = SystemClock): Icon => {
const wrap = ( const wrap = (
icon: Icon, icon: Icon,
rule: (clock: Clock) => boolean, rule: (clock: Clock) => boolean,
colors: Pick< colors: Pick<Transformation, "backgroundColor" | "foregroundColor">
Transformation,
"backgroundColor" | "foregroundColor"
>
) => ) =>
new ColorOverridingIcon( new ColorOverridingIcon(
icon, icon,
@@ -168,10 +159,7 @@ export const makeFestive = (icon: Icon, clock: Clock = SystemClock): Icon => {
const apply = ( const apply = (
rule: (clock: Clock) => boolean, rule: (clock: Clock) => boolean,
colors: Pick< colors: Pick<Transformation, "backgroundColor" | "foregroundColor">
Transformation,
"backgroundColor" | "foregroundColor"
>
) => (result = wrap(result, rule, colors)); ) => (result = wrap(result, rule, colors));
apply(isChristmas, { apply(isChristmas, {
@@ -233,14 +221,29 @@ export type ICON =
| "conductor" | "conductor"
| "reggae" | "reggae"
| "music" | "music"
| "error"; | "error"
| "chill"
| "country"
| "dance"
| "disco"
| "film"
| "new"
| "old"
| "cannabis"
| "trip"
| "opera"
| "world"
| "violin"
| "celtic"
| "children"
| "chillout";
const iconFrom = (name: string) => const iconFrom = (name: string) =>
new SvgIcon( new SvgIcon(
fs fs
.readFileSync(path.resolve(__dirname, "..", "web", "icons", name)) .readFileSync(path.resolve(__dirname, "..", "web", "icons", name))
.toString() .toString()
).with({ viewPortIncreasePercent: 50 }); );
export const ICONS: Record<ICON, Icon> = { export const ICONS: Record<ICON, Icon> = {
artists: iconFrom("navidrome-artists.svg"), artists: iconFrom("navidrome-artists.svg"),
@@ -253,7 +256,7 @@ export const ICONS: Record<ICON, Icon> = {
recentlyAdded: iconFrom("navidrome-recentlyAdded.svg"), recentlyAdded: iconFrom("navidrome-recentlyAdded.svg"),
recentlyPlayed: iconFrom("navidrome-recentlyPlayed.svg"), recentlyPlayed: iconFrom("navidrome-recentlyPlayed.svg"),
mostPlayed: iconFrom("navidrome-mostPlayed.svg"), mostPlayed: iconFrom("navidrome-mostPlayed.svg"),
discover: iconFrom("Binoculars-14310.svg"), discover: iconFrom("Opera-Glasses-102740.svg"),
mushroom: iconFrom("Mushroom-63864.svg"), mushroom: iconFrom("Mushroom-63864.svg"),
african: iconFrom("Africa-48087.svg"), african: iconFrom("Africa-48087.svg"),
rock: iconFrom("Rock-Music-11007.svg"), rock: iconFrom("Rock-Music-11007.svg"),
@@ -261,37 +264,57 @@ export const ICONS: Record<ICON, Icon> = {
punk: iconFrom("Punk-40450.svg"), punk: iconFrom("Punk-40450.svg"),
americana: iconFrom("US-Capitol-104805.svg"), americana: iconFrom("US-Capitol-104805.svg"),
guitar: iconFrom("Guitar-110433.svg"), guitar: iconFrom("Guitar-110433.svg"),
book: iconFrom("Book-453.svg"), book: iconFrom("Book-22940.svg"),
oz: iconFrom("Kangaroo-16730.svg"), oz: iconFrom("Kangaroo-16730.svg"),
hipHop: iconFrom("Hip-Hop Music-17757.svg"), hipHop: iconFrom("Hip-Hop Music-17757.svg"),
rap: iconFrom("Rap-24851.svg"), rap: iconFrom("Rap-24851.svg"),
horror: iconFrom("Horror-4387.svg"), horror: iconFrom("Horror-88855.svg"),
pop: iconFrom("Ice-Pop Yellow-94532.svg"), pop: iconFrom("Ice-Pop Yellow-94532.svg"),
blues: iconFrom("Blues-113548.svg"), blues: iconFrom("Blues-113548.svg"),
classical: iconFrom("Classic-Music-11646.svg"), classical: iconFrom("Classic-Music-17728.svg"),
comedy: iconFrom("Comedy-2-599.svg"), comedy: iconFrom("Comedy-5937.svg"),
vinyl: iconFrom("Music-Record-102104.svg"), vinyl: iconFrom("Music-Record-102104.svg"),
electronic: iconFrom("Electronic-Music-17745.svg"), electronic: iconFrom("Electronic-Music-17745.svg"),
pills: iconFrom("Pills-112386.svg"), pills: iconFrom("Pills-92954.svg"),
trumpet: iconFrom("Trumpet-17823.svg"), trumpet: iconFrom("Trumpet-17823.svg"),
conductor: iconFrom("Music-Conductor-225.svg"), conductor: iconFrom("Music-Conductor-225.svg"),
reggae: iconFrom("Reggae-24843.svg"), reggae: iconFrom("Reggae-24843.svg"),
music: iconFrom("Music-14097.svg"), music: iconFrom("Music-14097.svg"),
error: iconFrom("Error-82783.svg"), error: iconFrom("Error-82783.svg"),
chill: iconFrom("Fridge-282.svg"),
country: iconFrom("Country-Music-113286.svg"),
dance: iconFrom("Tango-25015.svg"),
disco: iconFrom("Disco-Ball-25777.svg"),
film: iconFrom("Film-Reel-3230.svg"),
new: iconFrom("New-47652.svg"),
old: iconFrom("Old-Woman-77881.svg"),
cannabis: iconFrom("Cannabis-33270.svg"),
trip: iconFrom("TripAdvisor-44407.svg"),
opera: iconFrom("Sydney-Opera House-59090.svg"),
world: iconFrom("Globe-1301.svg"),
violin: iconFrom("Violin-3421.svg"),
celtic: iconFrom("Scottish-Thistle-108212.svg"),
children: iconFrom("Children-78186.svg"),
chillout: iconFrom("Sleeping-in Bed-14385.svg"),
}; };
export type RULE = (genre: string) => boolean; export type RULE = (genre: string) => boolean;
const eq = export const eq =
(expected: string): RULE => (expected: string): RULE =>
(value: string) => (value: string) =>
expected.toLowerCase() === value.toLowerCase(); expected.toLowerCase() === value.toLowerCase();
const contains = export const contains =
(expected: string): RULE => (expected: string): RULE =>
(value: string) => (value: string) =>
value.toLowerCase().includes(expected.toLowerCase()); value.toLowerCase().includes(expected.toLowerCase());
export const containsWord =
(expected: string): RULE =>
(value: string) =>
value.toLowerCase().split(/\W/).includes(expected.toLowerCase());
const containsWithAllTheNonWordCharsRemoved = const containsWithAllTheNonWordCharsRemoved =
(expected: string): RULE => (expected: string): RULE =>
(value: string) => (value: string) =>
@@ -299,33 +322,55 @@ const containsWithAllTheNonWordCharsRemoved =
const GENRE_RULES: [RULE, ICON][] = [ const GENRE_RULES: [RULE, ICON][] = [
[eq("Acid House"), "mushroom"], [eq("Acid House"), "mushroom"],
[contains("Goa"), "mushroom"],
[contains("Psy"), "mushroom"],
[eq("African"), "african"], [eq("African"), "african"],
[eq("Americana"), "americana"], [eq("Americana"), "americana"],
[contains("Rock"), "rock"], [eq("Film Score"), "film"],
[contains("Folk"), "guitar"], [eq("Soundtrack"), "film"],
[contains("Book"), "book"], [eq("Stoner Rock"), "cannabis"],
[contains("Australian"), "oz"], [eq("Turntablism"), "vinyl"],
[contains("Rap"), "rap"], [eq("Celtic"), "celtic"],
[containsWord("Country"), "country"],
[containsWord("Rock"), "rock"],
[containsWord("Folk"), "guitar"],
[containsWord("Book"), "book"],
[containsWord("Australian"), "oz"],
[containsWord("Baroque"), "violin"],
[containsWord("Rap"), "rap"],
[containsWithAllTheNonWordCharsRemoved("Hip Hop"), "hipHop"], [containsWithAllTheNonWordCharsRemoved("Hip Hop"), "hipHop"],
[contains("Horror"), "horror"], [containsWithAllTheNonWordCharsRemoved("Trip Hop"), "trip"],
[contains("Metal"), "metal"], [containsWord("Metal"), "metal"],
[contains("Punk"), "punk"], [containsWord("Punk"), "punk"],
[contains("Pop"), "pop"], [containsWord("Blues"), "blues"],
[contains("Blues"), "blues"], [eq("Classic"), "classical"],
[contains("Classical"), "classical"], [containsWord("Classical"), "classical"],
[contains("Comedy"), "comedy"], [containsWord("Comedy"), "comedy"],
[contains("Dub"), "vinyl"], [containsWord("Turntable"), "vinyl"],
[contains("Turntable"), "vinyl"], [containsWord("Dub"), "electronic"],
[eq("Dubstep"), "electronic"],
[eq("Drum And Bass"), "electronic"],
[contains("Goa"), "mushroom"],
[contains("Psy"), "mushroom"],
[containsWord("Trance"), "pills"],
[containsWord("Techno"), "pills"],
[containsWord("House"), "pills"],
[containsWord("Rave"), "pills"],
[containsWord("Jazz"), "trumpet"],
[containsWord("Orchestra"), "conductor"],
[containsWord("Reggae"), "reggae"],
[containsWord("Disco"), "disco"],
[containsWord("New"), "new"],
[containsWord("Opera"), "opera"],
[containsWord("Vocal"), "opera"],
[containsWord("Ballad"), "opera"],
[containsWord("Western"), "country"],
[containsWord("World"), "world"],
[contains("Electro"), "electronic"], [contains("Electro"), "electronic"],
[contains("Trance"), "pills"], [contains("Dance"), "dance"],
[contains("Techno"), "pills"], [contains("Pop"), "pop"],
[contains("House"), "pills"], [contains("Horror"), "horror"],
[contains("Rave"), "pills"], [contains("Children"), "children"],
[contains("Jazz"), "trumpet"], [contains("Chill"), "chill"],
[contains("Orchestra"), "conductor"], [contains("Old"), "old"],
[contains("Reggae"), "reggae"],
]; ];
export function iconForGenre(genre: string): ICON { export function iconForGenre(genre: string): ICON {

View File

@@ -1,7 +1,6 @@
import { option as O } from "fp-ts"; import { option as O } from "fp-ts";
import express, { Express, Request } from "express"; import express, { Express, Request } from "express";
import * as Eta from "eta"; import * as Eta from "eta";
// import morgan from "morgan";
import path from "path"; import path from "path";
import sharp from "sharp"; import sharp from "sharp";
@@ -412,7 +411,7 @@ function server(
return Promise.resolve( return Promise.resolve(
makeFestive( makeFestive(
icon.with(serverOpts.iconColors), icon.with({ viewPortIncreasePercent: 80, ...serverOpts.iconColors }),
clock clock
).toString() ).toString()
) )
@@ -420,7 +419,19 @@ function server(
.then((data) => res.status(200).type(spec.mimeType).send(data)); .then((data) => res.status(200).type(spec.mimeType).send(data));
} }
}); });
app.get("/icons", (_, res) => {
res.render("icons", {
icons: Object.keys(ICONS).map((k) => [
k,
((ICONS as any)[k] as Icon)
.with({ viewPortIncreasePercent: 80, ...serverOpts.iconColors })
.toString()
.replace('<?xml version="1.0" encoding="UTF-8"?>', ""),
]),
});
});
const GRAVITY_9 = [ const GRAVITY_9 = [
"north", "north",
"northeast", "northeast",

View File

@@ -3,6 +3,9 @@ import libxmljs from "libxmljs2";
import { import {
ColorOverridingIcon, ColorOverridingIcon,
contains,
containsWord,
eq,
HOLI_COLORS, HOLI_COLORS,
Icon, Icon,
iconForGenre, iconForGenre,
@@ -472,6 +475,41 @@ describe("makeFestive", () => {
}); });
}); });
describe("eq", () => {
it("should be true when ===", () => {
expect(eq("Foo")("foo")).toEqual(true);
});
it("should be false when not ===", () => {
expect(eq("Foo")("bar")).toEqual(false);
});
});
describe("contains", () => {
it("should be true word is a substring", () => {
expect(contains("Foo")("some foo bar")).toEqual(true);
});
it("should be false when not ===", () => {
expect(contains("Foo")("some bar")).toEqual(false);
});
});
describe("containsWord", () => {
it("should be true word is a substring with space delim", () => {
expect(containsWord("Foo")("some foo bar")).toEqual(true);
});
it("should be true word is a substring with hyphen delim", () => {
expect(containsWord("Foo")("some----foo-bar")).toEqual(true);
});
it("should be false when not ===", () => {
expect(containsWord("Foo")("somefoobar")).toEqual(false);
});
});
describe("iconForGenre", () => { describe("iconForGenre", () => {
[ [
["Acid House", "mushroom"], ["Acid House", "mushroom"],

View File

@@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path stroke-miterlimit="10" stroke-width="2" d="M7 15A6 6 0 1 0 7 27 6 6 0 1 0 7 15zM25 15A6 6 0 1 0 25 27 6 6 0 1 0 25 15zM16 18A2 2 0 1 0 16 22 2 2 0 1 0 16 18z"/>
<path stroke-miterlimit="10" stroke-width="2" d="M30.5,18.6l-2.3-6.4C27.5,10.5,25.9,9.2,24,9v0c0-1.7-1.3-3-3-3s-3,1.3-3,3h-4c0-1.7-1.3-3-3-3S8,7.3,8,9v0c-1.9,0.2-3.5,1.4-4.2,3.3l-2.3,6.4"/>
</svg>

Before

Width:  |  Height:  |  Size: 428 B

4
web/icons/Book-22940.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M25,27H9c-1.105,0-2-0.895-2-2V7c0-1.105,0.895-2,2-2h16V27z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M7 25c0-1.105.895-2 2-2h16M11 10L22 10"/>
</svg>

After

Width:  |  Height:  |  Size: 325 B

View File

@@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26">
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M24.79,9.537c-0.576,1.411,0,2.674,0,2.674L15,24L3,20.438c0,0-2-0.853-2-3.438c0-3.576,3.081-2.764,3.081-2.764"/>
<path d="M25.84,4.567c-0.119-0.346-0.412-0.603-0.768-0.681L12.629,1.107c-0.374-0.078-0.765,0.049-1.017,0.34 L1.266,12.963c-0.237,0.271-0.891,1.318-1.094,2.678c0.577-0.715,1.266-1.072,1.614-0.979l12.187,3.479 c0.09,0.025,0.182,0.036,0.271,0.036c0.311,0,0.611-0.138,0.812-0.384L25.661,5.578C25.893,5.295,25.961,4.912,25.84,4.567z M20.144,7.546L19.347,8.49c-0.222,0.262-0.735,0.392-1.145,0.295l-7.428-1.81c-0.409-0.098-0.563-0.392-0.345-0.65l0.799-0.949 c0.22-0.26,0.734-0.39,1.144-0.292L19.8,6.891C20.207,6.989,20.363,7.284,20.144,7.546z"/>
</svg>

Before

Width:  |  Height:  |  Size: 867 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path d="M28,18.77v-2.557l-1.875-0.256c-0.092-0.013-1.249-0.121-2.58-0.127c1.445-2.708,2-5.083,2.006-5.111l0.311-1.358l-1.166-0.762l-0.071-0.046l-0.993-0.649l-1.046,0.56c-0.252,0.135-1.802,0.987-3.357,2.336c-0.293-2.623-0.967-4.824-1.245-5.53L17.488,4h-1.363h-0.219h-1.33l-0.514,1.226c-0.058,0.138-1.26,3.041-1.557,6.491c-1.651-1.342-4.443-2.884-4.443-2.884l-2.107,1.644l0.201,1.035C6.373,12.529,7.453,15,7.453,15C6.333,15,4,15.393,4,15.393v2.644c0,0,1.875,1.587,4.036,2.731c-0.092,0.087-0.152,0.149-0.179,0.177l-0.94,0.804l0.279,1.075l0.296,1.142L8.645,24.3c0.167,0.043,1.237,0.258,2.41,0.258c0.827,0,1.61-0.106,2.328-0.314c0.075-0.02,0.15-0.041,0.223-0.063c0.211,1.205,0.468,2.166,0.517,2.346L14.527,28H21c-1.292-1.333-2.18-3.417-2.18-3.417c-0.01-0.013-0.019-0.027-0.029-0.042c0.792,0.333,1.833,0.458,2.803,0.481l1.362-0.083l0.547-0.895l0.538-0.919c0,0-0.458-1.083-0.979-1.549c1.541-0.57,3.388-1.408,4.172-2.155L28,18.77z M21.5,19.986c-0.583,0.167-2.268,0.396-2.896,0.473c0,0,2.415,1.398,2.811,2.44c-0.001,0.01,0.006,0.023,0.005,0.034c-0.023-0.001-0.044-0.015-0.068-0.013c-1.875,0.146-4.823-1.502-5.161-1.79c0.072,1.068,0.455,3.57,1.356,4.838L17.519,26h-1.467c0,0-1.095-2.928-1.021-4.969c-0.513,0.437-1.105,1.001-2.205,1.293c-0.609,0.177-1.226,0.235-1.771,0.235c-0.858,0-1.715-0.144-1.913-0.195l-0.01-0.04c0,0,1.422-1.311,3.255-1.748c0.22-0.073,0.44-0.146,0.66-0.146c-0.733-0.146-1.466-0.291-2.273-0.583c-2.406-0.888-4.471-2.46-4.665-2.656L6.105,17.15c0,0,0.767-0.042,1.348-0.042c0.944,0,2.493,0.112,4.127,0.698c0.44,0.146,0.88,0.292,1.247,0.51c-0.607-0.536-3.639-3.066-4.539-6.874l0,0c0,0,4.4,2.266,6.691,5.891c-0.333-1.583-0.539-3.305-0.539-4.131C14.44,9.496,15.906,6,15.906,6h0.219c0.345,0.88,1.246,3.995,1.246,7.203c0,1.087-0.303,3.604-0.365,4.093c0.163-0.388,0.777-1.594,1.607-2.858c1.599-2.434,4.919-4.211,4.919-4.211l0.071,0.046c-0.115,0.501-0.891,3.306-2.637,6.002c-0.435,0.672-1.79,1.949-1.906,2.041c0.205-0.052,0.911-0.329,3.007-0.447c0.504-0.029,0.965-0.039,1.375-0.039c1.295,0,2.411,0.108,2.411,0.108l0.003,0.035C25.244,18.554,23.259,19.482,21.5,19.986z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path d="M9 2A3 3 0 1 0 9 8 3 3 0 1 0 9 2zM6 25.967C6 26.537 6.463 27 7.033 27c.544 0 .995-.422 1.031-.965L8.466 20H6V25.967zM9.936 26.036C9.972 26.578 10.423 27 10.967 27 11.537 27 12 26.537 12 25.967V20H9.534L9.936 26.036zM11 10h-.277C10.376 10.595 9.738 11 9 11s-1.376-.405-1.723-1H7c-1.654 0-3 1.346-3 3v6c0 .553.447 1 1 1s1-.447 1-1v-2h6v2c0 .553.447 1 1 1s1-.447 1-1v-6C14 11.346 12.654 10 11 10zM24 19v-6c0-1.657-1.343-3-3-3s-3 1.343-3 3v6H24zM18 22v3.967C18 26.537 18.463 27 19.033 27c.544 0 .995-.422 1.031-.964L20.333 22H18zM21.667 22l.269 4.035C21.972 26.578 22.423 27 22.967 27 23.537 27 24 26.537 24 25.967V22H21.667zM21 2A3 3 0 1 0 21 8 3 3 0 1 0 21 2z"/>
<path d="M26.249 6.751c.827.827.749 2.247.749 2.247s-1.42.078-2.247-.749-.749-2.247-.749-2.247S25.422 5.924 26.249 6.751zM17.998 6.002c0 0 .078 1.42-.749 2.247s-2.247.749-2.247.749-.078-1.42.749-2.247S17.998 6.002 17.998 6.002z"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M25,19l-1.515-6.06C23.2,11.8,22.175,11,21,11h0c-1.175,0-2.2,0.8-2.485,1.94L17,19"/>
<path d="M24 17L18 17 17 20 25 20z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M28.8,14.6l-3.6-7.2C23.9,4.7,21.1,3,18.1,3H9c-4.4,0-8,3.6-8,8v24h24h24v-8c0-4.4-3.6-8-8-8h-5.1C32.9,19,30.1,17.3,28.8,14.6z"/>
<path d="M20.3 43L20 35 23 35 22.7 43zM24.3 43L24 35 27 35 26.7 43zM28.3 43L28 35 31 35 30.7 43zM36.3 43L36 35 39 35 38.7 43zM40.3 43L40 35 43 35 42.7 43zM8.3 43L8 35 11 35 10.7 43zM12.3 43L12 35 15 35 14.7 43z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M49,35v10c0,1.1-0.9,2-2,2H3c-1.1,0-2-0.9-2-2V35H49z"/>
</svg>

Before

Width:  |  Height:  |  Size: 619 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M6 20L26 20M12 20L12 24M9 20L9 24M20 20L20 24M23 20L23 24M17 20L17 24M20 12l-3.801-4.561C15.439 6.527 14.314 6 13.127 6H10c-2.209 0-4 1.791-4 4v16h20V16c0-2.209-1.791-4-4-4H20z"/>
</svg>

After

Width:  |  Height:  |  Size: 324 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26"><path d="M24.992,10.084c1.614,1.665,1.204,4.715-3.591,5.736c0-2.102-3.689-2.916-8.379-2.916 c-5.028,0-8.594,0.773-8.594,2.974c-4.811-0.992-5.087-4.37-3.156-6.06c2.35-2.056,3.31,1.362,11.714,1.362 C20.644,11.181,22.415,7.426,24.992,10.084z"/><path d="M12.987 9.834c3.761 0 7.938-1.868 7.938-1.868v-1.23c0-3.273-2.066-6.586-7.919-6.586-6.125 0-7.92 3.414-7.92 6.586v1.299C5.086 8.034 9.389 9.834 12.987 9.834zM13 15.121c-.453 0-.863.164-1.192.428.141-.087.297-.15.475-.15.509 0 .92.412.92.921s-.411.92-.92.92-.921-.411-.921-.92c0-.178.063-.334.149-.475-.263.328-.427.74-.427 1.192 0 1.059.857 1.916 1.916 1.916s1.916-.857 1.916-1.916S14.059 15.121 13 15.121zM7.787 20.879c.196.123.42.277.607.406 1.081.745 2.562 1.766 4.641 1.766 2.086 0 3.606-.997 4.717-1.726.099-.064.208-.136.317-.206-.164.313-.425.699-.813 1.123-.934 1.013-2.532 2.096-4.221 2.096-1.847 0-3.561-1.207-4.466-2.239C8.137 21.605 7.9 21.175 7.787 20.879M7.438 19.076c-.315 0-.624.125-.938.433-1.682 1.646 2.266 6.429 6.535 6.429 4.266 0 8.055-4.937 6.531-6.429-.271-.267-.549-.376-.84-.376-1.336 0-2.958 2.318-5.691 2.318C10.327 21.451 8.813 19.076 7.438 19.076L7.438 19.076z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 24 24">
<path d="M6,7.5C6,7.5,7.4,7,8.5,7S11,7.5,11,7.5s-0.9,2.1-2.5,2.1S6,7.5,6,7.5z"/>
<path d="M19,4v7c0,4.5-5,7.7-7,8.8c-2-1.1-7-4.2-7-8.8V4H19 M19,2H5C3.9,2,3,2.9,3,4c0,0,0,3,0,7c0,7.1,9,11,9,11s9-4,9-11 c0-3.9,0-7,0-7C21,2.9,20.1,2,19,2L19,2z"/>
<path d="M15.3,13c0,0-1.8,0.8-3.3,0.8c-1.5,0-3.3-0.8-3.3-0.8s1.2,3,3.3,3C14.2,16,15.3,13,15.3,13L15.3,13z"/>
<path d="M19,2h-7v20c0,0,9-4,9-11c0-3.9,0-7,0-7C21,2.9,20.1,2,19,2z M15.5,9.6c-1.6,0-2.5-2.1-2.5-2.1S14.4,7,15.5,7 S18,7.5,18,7.5S17.1,9.6,15.5,9.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 594 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path d="M26,14c-1.7,0-3,1.3-3,3c0,3.56-5.5,4-8,4s-8,0-8-4c0-1.7-1.3-3-3-3s-3,1.3-3,3c0,3.9,3.8,7,14,7s14-3.2,14-7C29,15.3,27.7,14,26,14z"/>
<path d="M21,8.5C20.296,6.221,19.572,5,18,5c-1.152,0-1.726,1-3,1s-1.848-1-3-1c-1.572,0-2.296,1.221-3,3.5c-0.677,2.19-2,8.144-2,8.144S10.018,18,15,18s8-1.356,8-1.356S21.677,10.69,21,8.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 401 B

View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M10.128,33.863C13.609,34.555,18.971,35,25,35c6.029,0,11.392-0.445,14.872-1.136"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M23.136 17.128C22.445 20.608 22 25.971 22 32c0 6.029.445 11.392 1.136 14.872M26.864 46.872C27.555 43.392 28 38.029 28 32c0-6.029-.445-11.391-1.136-14.872"/>
<path d="M33,38.102c0,0,2.563,3.496,3.688,4.949C35.563,44.504,33,48,33,48s3.496-2.563,4.949-3.684C39.402,45.438,42.902,48,42.902,48s-2.566-3.496-3.688-4.949c1.121-1.453,3.688-4.949,3.688-4.949s-3.5,2.563-4.953,3.684C36.496,40.664,33,38.102,33,38.102z"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M11.387,38.271C14.839,39.952,19.658,41,25,41c2.121,0,4.154-0.171,6.057-0.476"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M25 17L25 7M27 7h-4c-1.105 0-2-.895-2-2V3h8v2C29 6.105 28.105 7 27 7z"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M33.903,34.649C33.963,33.783,34,32.901,34,32c0-5.342-1.048-10.161-2.729-13.613"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M39.051 37.211C39.654 35.586 40 33.835 40 32c0-8.284-6.716-15-15-15-2.367 0-4.597.563-6.588 1.539M10.03 31.399C10.022 31.6 10 31.797 10 32c0 8.284 6.716 15 15 15 2.095 0 4.088-.432 5.899-1.208"/>
<path d="M8 13c0 0 2.563 3.496 3.688 4.949C10.563 19.402 8 22.898 8 22.898s3.496-2.563 4.949-3.684c1.453 1.121 4.953 3.684 4.953 3.684s-2.566-3.496-3.688-4.949C15.336 16.496 17.902 13 17.902 13s-3.5 2.563-4.953 3.684C11.496 15.563 8 13 8 13zM13 25c0 0 1.098 1.938 1.797 3.043C14.098 29.117 13 31 13 31s1.91-1.07 3-1.754C17.09 29.93 19 31 19 31s-1.098-1.883-1.797-2.957C17.902 26.938 19 25 19 25s-1.91 1.125-3 1.84C14.91 26.125 13 25 13 25z"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M16.018,32.752c0.094,5.039,1.109,9.573,2.711,12.861"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M39.872 30.136C36.391 29.444 31.029 29 25 29c-1.256 0-2.473.023-3.66.06M38.613 25.728C35.161 24.047 30.342 23 25 23c-1.055 0-2.087.045-3.094.124"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9,0C4.029,0,0,4.029,0,9s4.029,9,9,9s9-4.029,9-9S13.971,0,9,0z M9,1.751c1.39,0,2.037,0.345,2.037,1.441 c0,1.096-1.612,2.127-2.037,2.127c-0.427,0-2.039-1.031-2.039-2.127C6.961,2.096,7.61,1.751,9,1.751z M2.991,9.299 c-1.043-0.338-1.172-1.06-0.744-2.381c0.429-1.323,0.956-1.834,2-1.497c1.04,0.338,1.527,2.189,1.394,2.594 C5.511,8.42,4.034,9.636,2.991,9.299z M7.345,14.868c-0.602,0.918-1.332,0.856-2.498,0.097c-1.161-0.759-1.516-1.402-0.918-2.319 c0.598-0.919,2.51-0.902,2.867-0.669C7.154,12.209,7.94,13.956,7.345,14.868z M9,10.35c-0.746,0-1.35-0.604-1.35-1.35 S8.254,7.65,9,7.65c0.747,0,1.35,0.604,1.35,1.35S9.747,10.35,9,10.35z M13.231,14.844c-1.132,0.803-1.861,0.899-2.494,0.005 c-0.636-0.893,0.083-2.667,0.427-2.912c0.348-0.249,2.261-0.339,2.893,0.548C14.692,13.381,14.365,14.038,13.231,14.844z M15.005,9.299c-1.042,0.337-2.519-0.879-2.649-1.284c-0.134-0.405,0.354-2.256,1.393-2.594c1.045-0.337,1.572,0.174,2,1.497 C16.177,8.238,16.048,8.961,15.005,9.299z"/><path d="M21,19.489c0-1.499,0.618-2.416,1.335-3.479c0.78-1.157,1.664-2.468,1.664-4.548 c0-3.251-3.609-6.168-6.73-8.084c0.711,1.044,1.227,2.23,1.502,3.505c1.808,1.433,3.228,3.054,3.228,4.579 c0,3.352-2.999,4.243-2.999,8.027c0,3.204,3.535,4.411,3.686,4.46l0.629-1.898C23.291,22.043,21,21.236,21,19.489z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

4
web/icons/Fridge-282.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 26">
<path d="M19,2c0.552,0,1,0.448,1,1v19c0,0.552-0.448,1-1,1H7c-0.552,0-1-0.448-1-1V3c0-0.552,0.448-1,1-1H19 M19,0 H7C5.344,0,4,1.344,4,3v19c0,1.656,1.344,3,3,3h12c1.656,0,3-1.344,3-3V3C22,1.344,20.656,0,19,0L19,0z"/>
<path d="M9 9C8.449 9 8 8.551 8 8V6c0-.551.449-1 1-1l0 0c.551 0 1 .449 1 1v2C10 8.551 9.551 9 9 9L9 9zM9 18c-.551 0-1-.449-1-1v-3c0-.551.449-1 1-1l0 0c.551 0 1 .449 1 1v3C10 17.551 9.551 18 9 18L9 18zM7 26c-.551 0-1-.448-1-1v-.469h3V25c0 .552-.449 1-1 1H7zM18 26c-.551 0-1-.448-1-1v-.469h3V25c0 .552-.449 1-1 1H18zM5 10H21V12H5z"/>
</svg>

After

Width:  |  Height:  |  Size: 618 B

6
web/icons/Globe-1301.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M9.1,12.1L0,20.9l2.5,2.6c0.2,0.2,4-0.6,5.7-2.3c1.7-1.7,3.6-6.3,3.6-6.3L9.1,12.1z"/>
<path d="M22.3,2.8c-0.6,2.7-2.6,7.3-8.7,13.5l-3.3-3.4l9.8-9.4C20.9,3.4,21.7,3.2,22.3,2.8 M24,0c0,0-2.1,2.1-4.4,2.1c0,0,0,0-0.1,0C15.5,6,8.4,12.9,8.4,12.9l5.3,5.4C25.3,7,24,0,24,0L24,0z"/>
<path d="M23.9,0.3c0,0.2,0.1,7.6-8.5,16.2c1-1.4,3-5.7,2.6-8.4c-0.2-1.3,0-2.2,1.5-1.3c2,1.2,1.2-1.3,0.8-3c-0.2-1.1,1-1.6,1.9-2.1C22.3,1.5,23.9,0.5,23.9,0.3z"/>
<path d="M18 13.2c0 0-1.7 1.8-1.7 2.3 1.5-1.8-1.2 1.7.9 2.5.6.2 1.4-.3 1.3-1.4-.1-1.2-1.5-1.7.3-4.3C19.7 11 18 13.2 18 13.2zM15.9 19.7c0 0-.9 1.5-.9 2.2 0 .5.2 1.1.8 1.1.6 0 .8-.5.8-1.1C16.7 21.3 15.9 19.7 15.9 19.7z"/>
</svg>

Before

Width:  |  Height:  |  Size: 758 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M17 20c0 .6-.4 1-1 1s-1-.4-1-1 1-2 1-2S17 19.4 17 20zM21 15.5c0 .8-.7 1.5-1.5 1.5S18 16.3 18 15.5c0-.8 1.5-4 1.5-4S21 14.7 21 15.5z"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M9,12l4.5,4c5-5,5.5-11.5,5.5-13L3,17.5L7,21c0,0,3-2,5-6"/>
</svg>

After

Width:  |  Height:  |  Size: 373 B

4
web/icons/New-47652.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path d="M1.929 5h1.362l1.049-.338c.153-.05.273-.169.323-.323l.44-1.366 1.403.302c.156.033.321-.01.44-.118L8.01 2.194l1.065.963c.119.107.282.149.44.118l1.402-.302.44 1.366c.049.153.169.273.322.323L12.729 5h1.362l.028-.13c.054-.251-.092-.502-.336-.581l-1.552-.5L11.73 2.236c-.078-.243-.326-.39-.581-.335L9.556 2.244l-1.21-1.095c-.19-.172-.48-.172-.671 0l-1.21 1.094L4.87 1.9c-.25-.057-.502.091-.581.335l-.5 1.553-1.552.5c-.245.079-.39.33-.335.581L1.929 5zM14.087 11h-1.295l-1.111.358c-.153.049-.273.169-.322.322l-.44 1.365-1.403-.301c-.155-.032-.32.011-.439.118L8.01 13.826l-1.064-.963c-.093-.084-.213-.129-.335-.129-.035 0-.07.004-.105.011l-1.403.301-.44-1.365c-.05-.153-.169-.273-.323-.322L3.228 11H1.934l-.032.15c-.054.251.091.502.335.58l1.552.501.5 1.552c.079.244.332.384.581.336l1.594-.342 1.21 1.094C7.77 14.957 7.89 15 8.01 15s.24-.043.335-.129l1.21-1.094 1.595.342c.255.05.502-.092.58-.336l.501-1.552 1.552-.501c.244-.078.39-.329.336-.58L14.087 11z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" d="M2.5 6L2.5 10M4.5 6L4.5 10M2.5 7.25L4.5 8.75M9 9.5L6.5 9.5 6.5 6.5 8.5 6.5 8.5 7.75 6.5 8.5M10.5 6L10.5 9.375 12 8.5 13.5 9.375 13.5 6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M5 16v2c0 2.5 2 3 2 3s2 6 8 6M25 16v2c0 2.5-2 3-2 3s-2 6-8 6"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M11 20L11 20c-1.105 0-2-.895-2-2v-1c0-.552.448-1 1-1h2c.552 0 1 .448 1 1v1C13 19.105 12.105 20 11 20zM19 20L19 20c-1.105 0-2-.895-2-2v-1c0-.552.448-1 1-1h2c.552 0 1 .448 1 1v1C21 19.105 20.105 20 19 20z"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M24,15c0-0.512,0-0.488,0-1c0-4.971-4.029-9-9-9s-9,4.029-9,9c0,0.512,0,0.488,0,1"/>
<path d="M15 4v4c0 4 8 3 8 7 2 0 2 4 2 4s2-3 2-6S24 4 15 4zM15 4v4c0 4-8 3-8 7-2 0-2 4-2 4s-2-3-2-6S6 4 15 4z"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M13 17L17 17"/>
<path d="M15 1A5 3.5 0 1 0 15 8A5 3.5 0 1 0 15 1Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1008 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M20 5A3 3 0 1 0 20 11 3 3 0 1 0 20 5zM15 15c-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3S16.657 15 15 15zM15 19c-.552 0-1-.448-1-1 0-.552.448-1 1-1s1 .448 1 1C16 18.552 15.552 19 15 19z"/><path d="M29.094 15.202l-3.277-5.664c-.537-.925-1.525-1.495-2.595-1.495H15V17h2.181C17.067 17.482 17 17.983 17 18.5c0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5C30 17.294 29.666 16.169 29.094 15.202zM23.5 23c-2.485 0-4.5-2.015-4.5-4.5s2.015-4.5 4.5-4.5 4.5 2.015 4.5 4.5S25.985 23 23.5 23zM10 5A3 3 0 1 0 10 11 3 3 0 1 0 10 5z"/><path d="M0,18.5C0,22.09,2.91,25,6.5,25s6.5-2.91,6.5-6.5c0-0.517-0.067-1.018-0.181-1.5H15V8.043H6.778c-1.07,0-2.058,0.569-2.595,1.495l-3.277,5.664C0.334,16.169,0,17.294,0,18.5z M2,18.5C2,16.015,4.015,14,6.5,14s4.5,2.015,4.5,4.5S8.985,23,6.5,23S2,20.985,2,18.5z"/></svg>

After

Width:  |  Height:  |  Size: 851 B

View File

@@ -1 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path d="M66.4,103.2c2.1,12,12.3,20.8,24.1,20.8c1.4,0,2.7-0.1,4.1-0.4c6.4-1.1,11.9-4.8,15.6-10.2c3.7-5.4,5-12,3.9-18.6C112,82.8,101.9,74,90,74c-1.4,0-2.7,0.1-4.1,0.4C72.8,76.7,64,89.7,66.4,103.2z M87,80.3c1-0.2,2-0.3,3.1-0.3c8.9,0,16.6,6.7,18.2,15.8c0.9,5-0.2,10.1-3,14.2c-2.8,4.1-6.9,6.8-11.7,7.7c-1,0.2-2,0.3-3.1,0.3c-8.9,0-16.6-6.7-18.2-15.8C70.5,91.9,77.1,82.1,87,80.3z"/><path d="M83.7 109.9c.5.4 1.2.6 1.8.6 1 0 2-.5 2.6-1.4l9.6-16.4c1-1.4.6-3.4-.8-4.4-.5-.4-1.2-.6-1.8-.6-1 0-2 .5-2.6 1.4l-9.6 16.4C81.9 106.9 82.3 108.9 83.7 109.9zM20.8 120.9L21 121c3 1.7 6.4 2.6 9.8 2.6 7 0 13.5-3.8 17-9.8l11.7-20.3c0 0 0 0 0 0 0 0 0 0 0 0l11.7-20.3c5.4-9.4 2.2-21.4-7.2-26.8l-.1-.1c-3-1.7-6.4-2.6-9.8-2.6-7 0-13.5 3.8-17 9.8L25.4 73.8c0 0 0 0 0 0 0 0 0 0 0 0L13.7 94.1C8.2 103.5 11.5 115.5 20.8 120.9zM42.3 56.4c2.4-4.2 6.9-6.8 11.8-6.8 2.4 0 4.7.6 6.8 1.8l.1.1c6.5 3.8 8.7 12.1 5 18.6L55.8 87.9 32.1 74.2 42.3 56.4zM18.8 97.1l10.2-17.7 17.4 10.1-10.3 17.9c-2.8 4.8-7.5 7.7-12.6 8.2C17.3 111.7 15.2 103.5 18.8 97.1z"/><path d="M50.4,56.6c-1.4-0.8-3.3-0.3-4.1,1.1l-7,12.1c-0.8,1.4-0.3,3.3,1.1,4.1c0.5,0.3,1,0.4,1.5,0.4c1,0,2-0.5,2.6-1.5l7-12.1C52.3,59.2,51.8,57.4,50.4,56.6z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
<path d="M66.4,103.2c2.1,12,12.3,20.8,24.1,20.8c1.4,0,2.7-0.1,4.1-0.4c6.4-1.1,11.9-4.8,15.6-10.2c3.7-5.4,5-12,3.9-18.6C112,82.8,101.9,74,90,74c-1.4,0-2.7,0.1-4.1,0.4C72.8,76.7,64,89.7,66.4,103.2z M87,80.3c1-0.2,2-0.3,3.1-0.3c8.9,0,16.6,6.7,18.2,15.8c0.9,5-0.2,10.1-3,14.2c-2.8,4.1-6.9,6.8-11.7,7.7c-1,0.2-2,0.3-3.1,0.3c-8.9,0-16.6-6.7-18.2-15.8C70.5,91.9,77.1,82.1,87,80.3z"/>
<path d="M83.7 109.9c.5.4 1.2.6 1.8.6 1 0 2-.5 2.6-1.4l9.6-16.4c1-1.4.6-3.4-.8-4.4-.5-.4-1.2-.6-1.8-.6-1 0-2 .5-2.6 1.4l-9.6 16.4C81.9 106.9 82.3 108.9 83.7 109.9zM20.8 120.9L21 121c3 1.7 6.4 2.6 9.8 2.6 7 0 13.5-3.8 17-9.8l11.7-20.3c0 0 0 0 0 0 0 0 0 0 0 0l11.7-20.3c5.4-9.4 2.2-21.4-7.2-26.8l-.1-.1c-3-1.7-6.4-2.6-9.8-2.6-7 0-13.5 3.8-17 9.8L25.4 73.8c0 0 0 0 0 0 0 0 0 0 0 0L13.7 94.1C8.2 103.5 11.5 115.5 20.8 120.9zM42.3 56.4c2.4-4.2 6.9-6.8 11.8-6.8 2.4 0 4.7.6 6.8 1.8l.1.1c6.5 3.8 8.7 12.1 5 18.6L55.8 87.9 32.1 74.2 42.3 56.4zM18.8 97.1l10.2-17.7 17.4 10.1-10.3 17.9c-2.8 4.8-7.5 7.7-12.6 8.2C17.3 111.7 15.2 103.5 18.8 97.1z"/>
<path d="M50.4,56.6c-1.4-0.8-3.3-0.3-4.1,1.1l-7,12.1c-0.8,1.4-0.3,3.3,1.1,4.1c0.5,0.3,1,0.4,1.5,0.4c1,0,2-0.5,2.6-1.5l7-12.1C52.3,59.2,51.8,57.4,50.4,56.6z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path d="M13,21c0-2.57,1.217-4.851,3.1-6.314l-3.873-3.873c-0.391-0.391-0.391-1.024,0-1.414l2.664-2.664c1.154-1.154,2.671-1.731,4.188-1.731c1.516,0,3.033,0.577,4.187,1.731c1.887,1.887,2.205,4.73,1.007,6.971c0.622,0.279,1.202,0.634,1.727,1.055c1.669-3.012,1.233-6.886-1.32-9.44c-1.616-1.616-3.808-2.448-6.113-2.304c-2.004,0.125-3.868,1.082-5.288,2.502l-7.735,7.735c-3.084,3.084-3.363,8.154-0.345,11.302C6.708,26.13,8.748,27,10.921,27c1.367,0,2.679-0.349,3.842-0.996C13.662,24.633,13,22.895,13,21z"/>
<path d="M21,15c-3.314,0-6,2.686-6,6s2.686,6,6,6s6-2.686,6-6S24.314,15,21,15z M22.414,23.828l-4.243-4.243c-0.391-0.391-0.39-1.024,0-1.414c0.391-0.391,1.024-0.391,1.414,0l4.243,4.243c0.391,0.391,0.391,1.024,0,1.414C23.438,24.219,22.805,24.219,22.414,23.828z"/>
</svg>

After

Width:  |  Height:  |  Size: 829 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path d="M25.045 12.818c0 0-.074.694-.369 1.233-.295.538-.295.668-.222 1.13-.812 0-.591-.591-1.773-.591.739 1.387 1.256 3.545.591 3.545-.591 0-.591-1.182-.591-1.182S21.222 18 21.5 20.5c.074.665-.443.591-.591.591-.443 0-.569-.648 0-1.182 0 0-1.56-.372-2.053 2.682 0 0-.114 1.033-1.973 1.491 0 0-1.603.343-1.883 1.068V27c0 0 .591-1.927 2.955-.616.8.443 2.29 1.105 4.727.025 0 0-1.33-.334-1.182-1.028.233-1.096 2.031.502 3.25-.771.517-.539.665-.925 2.068-1.156 0 0-.295-.591-1.182-.591-.21 0-.886 0-.443-.591.471-.628 2.364-1.285 2.807-4.136 0 0-.369.591-1.773.591 0 0 .591-.36.591-1.593 0-1.335.591-1.952.591-1.952s-.591-.18-1.182.591C26.227 15.773 26.597 13.82 25.045 12.818zM4.955 12.818c0 0 .074.694.369 1.233.295.538.295.668.222 1.13.812 0 .591-.591 1.773-.591-.739 1.387-1.256 3.545-.591 3.545.591 0 .591-1.182.591-1.182S8.778 18 8.5 20.5c-.074.665.443.591.591.591.443 0 .569-.648 0-1.182 0 0 1.56-.372 2.053 2.682 0 0 .114 1.033 1.973 1.491 0 0 1.603.343 1.883 1.068V27c0 0-.591-1.927-2.955-.616-.8.443-2.29 1.105-4.727.025 0 0 1.33-.334 1.182-1.028-.233-1.096-2.031.502-3.25-.771-.517-.54-.665-.925-2.068-1.156 0 0 .295-.591 1.182-.591.21 0 .886 0 .443-.591C4.336 21.645 2.443 20.988 2 18.136c0 0 .369.591 1.773.591 0 0-.591-.36-.591-1.593 0-1.335-.591-1.952-.591-1.952s.591-.18 1.182.591C3.773 15.773 3.403 13.82 4.955 12.818z"/>
<path d="M15 8A6 6 0 1 0 15 20A6 6 0 1 0 15 8Z"/>
<path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M15 27L15 3M16 10c0-3.207 2-6 2-6M17 12c0-3.666 3-6 3-6M14 10c0-3.207-2-6-2-6M13 12c0-3.666-3-6-3-6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M8,21v-7.5C8,12.7,7.3,12,6.5,12h0C5.7,12,5,12.7,5,13.5V27h3v-2h16v2h3v-6H8z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M14,21h13v-4c0-1.1-0.9-2-2-2H14V21z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M11 15A3 3 0 1 0 11 21 3 3 0 1 0 11 15zM22 5L27 5 27 6 23 9 23 10 28 10M15 7L19 7 19 7.2 16 10.7 16 11 20 11"/>
</svg>

After

Width:  |  Height:  |  Size: 528 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
<path d="M49 38c-4.118 0-5.011-2.209-5.056-2.33-.014-.04-.043-.068-.061-.104-.029-.059-.058-.115-.099-.168-.044-.058-.095-.104-.15-.15-.029-.025-.047-.058-.079-.08-.017-.012-.038-.012-.056-.023-.064-.037-.131-.06-.201-.083-.056-.018-.109-.038-.166-.045-.062-.008-.123-.003-.187.001-.069.004-.136.008-.203.026-.02.005-.039.001-.059.008-.039.013-.067.042-.103.059-.064.03-.125.06-.181.104-.055.042-.099.091-.144.144-.027.032-.063.051-.087.087C42.151 35.471 40.425 38 37 38c-3.382 0-5.095-2.448-5.17-2.559-.047-.07-.112-.116-.172-.17-.037-.033-.061-.075-.103-.104-.001-.001-.002 0-.003-.001-.11-.073-.233-.123-.361-.148-.077-.015-.153-.004-.23-.001-.051.002-.102-.009-.153.001-.129.025-.252.075-.363.149 0 0 0 0 0 0-.027.018-.041.046-.066.066-.077.062-.154.125-.211.211 0 0-.002.003-.002.003s0 .001-.001.001C30.12 35.516 28.397 38 25 38c-3.382 0-5.095-2.448-5.17-2.559-.046-.069-.11-.114-.169-.167-.037-.034-.062-.077-.106-.106-.001-.001-.002-.001-.003-.001-.11-.073-.233-.123-.361-.148-.077-.015-.153-.004-.23-.001-.051.002-.102-.009-.153.001-.129.025-.252.075-.363.149 0 0 0 0 0 0-.013.008-.019.022-.031.031-.092.068-.18.146-.247.247 0 0-.002.003-.002.003s0 .001-.001.001C18.12 35.516 16.397 38 13 38c-3.382 0-5.095-2.448-5.17-2.559-.048-.072-.115-.12-.177-.175-.035-.031-.058-.071-.098-.098-.001 0-.002 0-.002-.001-.11-.073-.233-.123-.361-.148-.077-.015-.153-.004-.23-.001C6.91 35.02 6.86 35.009 6.809 35.019c-.129.025-.252.075-.362.149 0 0-.001 0-.001 0-.041.027-.064.068-.1.1-.062.056-.129.105-.178.177 0 0-.002.003-.002.003s0 .001-.001.001C6.12 35.516 4.397 38 1 38c-.552 0-1 .448-1 1s.448 1 1 1c2.98 0 4.969-1.457 6-2.478C8.031 38.543 10.02 40 13 40s4.969-1.457 6-2.478C20.031 38.543 22.02 40 25 40s4.969-1.457 6-2.478C32.031 38.543 34.02 40 37 40c2.857 0 4.806-1.341 5.87-2.351C43.773 38.705 45.574 40 49 40c.552 0 1-.448 1-1S49.552 38 49 38zM1 35c2.98 0 4.969-1.457 6-2.478C8.031 33.543 10.02 35 13 35s4.969-1.457 6-2.478C20.031 33.543 22.02 35 25 35s4.969-1.457 6-2.478C32.031 33.543 34.02 35 37 35c2.857 0 4.806-1.341 5.87-2.351C43.773 33.705 45.574 35 49 35c.552 0 1-.448 1-1 0-.195-.07-.366-.167-.52l.015-.009-5-8C44.665 25.178 44.345 25 44 25h-2.974c.26-5.906 2.74-9.237 2.765-9.269.216-.279.269-.651.139-.979-.129-.328-.422-.563-.77-.62-.297-.047-6.582-.997-10.608 2.933C27.985 7.121 16.123 7 16 7c-.353 0-.68.186-.86.49-.18.303-.187.68-.018.989.02.037 1.029 1.916 2.039 5.009-2.944-1.471-5.945-1.663-6.616-1.351-.353.165-.599.539-.599.928 0 .181.05.36.143.515.017.029.943 1.607 1.794 4.14-2.51-1.021-5.056-.665-5.198-.644C6.33 17.129 6.03 17.369 5.9 17.705s-.069.715.158.994C6.082 18.727 8.22 21.393 8.577 25H6c-.345 0-.665.178-.848.47l-5 8 .015.009C.07 33.634 0 33.805 0 34 0 34.552.448 35 1 35zM32 20.329L37.338 25H26.662L32 20.329zM41.289 16.006c-.802 1.526-1.874 4.201-2.19 7.877l-5.603-4.903C35.743 16.388 39.307 15.996 41.289 16.006zM31.007 18.54L23.624 25h-2.432c-.186-7.311-2.35-13.179-3.544-15.878C20.905 9.522 28.055 11.238 31.007 18.54zM17.981 16.343c.623 2.482 1.116 5.43 1.204 8.657h-3.933c-.189-4.859-1.678-8.825-2.643-10.893C13.975 14.316 16.092 14.901 17.981 16.343zM8.668 19.028c1.181.087 2.755.427 3.989 1.467.307 1.368.536 2.883.605 4.504h-2.675C10.38 22.489 9.44 20.377 8.668 19.028z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M27.5 4A3.5 3.5 0 1 0 27.5 11 3.5 3.5 0 1 0 27.5 4zM18.5 7A3.5 3.5 0 1 0 18.5 14 3.5 3.5 0 1 0 18.5 7z"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M39.478,8.348c0.742-0.812,0.686-2.083-0.126-2.826c-0.812-0.742-2.083-0.686-2.826,0.126l-3.799,4.239l-13.122,6.729c-1.454,0.745-2.044,2.517-1.327,3.985l2.45,5.019l-4.875,5.729c-0.096,0.086-0.139,0.137-0.126,0.148L7.593,41c-0.891,1.047-0.763,2.633,0.284,3.524v0c1.047,0.891,2.633,0.763,3.524-0.284l9.614-11.241c5.378-0.008,9.748-4.263,9.964-9.59L31,23.416l3.127,8.913c0.455,1.297,1.889,1.987,3.187,1.531c1.297-0.455,1.987-1.889,1.531-3.187l-3.147-8.97c-0.455-1.297-1.889-1.987-3.187-1.531l-1.798,0.505c-0.008,0-0.018,0-0.042,0.012l-2.729,0.766L26.407,18l7.749-4.195l0-0.003c0.282-0.107,0.545-0.272,0.762-0.508L39.478,8.348z"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M21.015 32.999l-2.823 3.3-2.859 4.952c-.688 1.191-.276 2.728.915 3.415 1.191.688 2.728.276 3.415-.915L27.06 30.94C25.383 32.225 23.292 32.996 21.015 32.999zM34.126 32.328L31 23.416l-.021-.006c-.081 1.989-.742 3.829-1.818 5.354l.842 13.879c.078 1.373 1.265 2.432 2.638 2.354 1.373-.078 2.432-1.265 2.354-2.638l-.571-9.46C34.305 32.723 34.2 32.537 34.126 32.328zM39.996 6.956c.01.497-.158.998-.518 1.391l-4.561 4.947c-.216.236-.48.401-.762.508l0 .003L26.407 18l1.535 3.454 2.729-.766c.024-.011.034-.012.042-.012l1.798-.505c.497-.174 1.014-.178 1.489-.046V18l6-3V7C40 6.985 39.996 6.971 39.996 6.956z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2" d="M30.541,19.997C30.839,20.945,31,21.954,31,23c0,5.523-4.477,10-10,10c-2.252,0-4.33-0.744-6.001-2"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path d="M1 6.75C1.517 6.09 2.372 5.482 3.405 5H0C.414 5.483.924 6.3 1 6.75zM16 5h-3.527C13.644 5.539 14.521 6.203 15 6.75 15.278 6.006 15.556 5.591 16 5z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" d="M4 5.5A3.5 3.5 0 1 0 4 12.5A3.5 3.5 0 1 0 4 5.5Z"/>
<path d="M4 8A1 1 0 1 0 4 10A1 1 0 1 0 4 8Z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" d="M12 5.5A3.5 3.5 0 1 0 12 12.5A3.5 3.5 0 1 0 12 5.5Z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" d="M12.752,5.565C11.566,4.294,9.876,3.5,8,3.5c-1.81,0-3.447,0.74-4.625,1.933"/>
<path d="M12 8A1 1 0 1 0 12 10 1 1 0 1 0 12 8zM7 11L8 13 9 11 8.5 9 7.5 9z"/>
</svg>

After

Width:  |  Height:  |  Size: 720 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M23.2,3.1c-0.4,0.4-1.1,0.4-1.5,0l-0.7-0.7c-0.4-0.4-0.4-1.1,0-1.5c0.4-0.4,1.2,0.3,2.3-0.8L24,0.8 C22.9,1.8,23.6,2.7,23.2,3.1z"/>
<path d="M13 12.8L11.2 11 22.5.8 23.2 1.5zM6.2 15.9L8 17.7 3.2 21.9 2 20.7z"/>
<path d="M12.1,7.5c1.1,0,2.2,1,2.6,1.5l0.1,0.1l0.1,0.1c0.4,0.3,2.4,2.1,1.1,3.9c-0.2,0.2-0.4,0.5-0.6,0.9 C15.2,14,14.9,14,14.8,14c-1.4,0-2.5,1-3.2,1.7c-2.2,2.2-1.8,3.9-1.1,4.9c-0.2,0.3-0.5,0.5-0.7,0.7c-0.8,0.8-1.6,1.2-2.5,1.2 c-1.2,0-2.5-0.7-3.7-2l0,0l0,0c-1.3-1.2-2-2.5-2-3.7c0-0.9,0.4-1.7,1.2-2.5c0.2-0.2,0.4-0.4,0.7-0.7C4,14,4.6,14.1,5.1,14.1 c1.4,0,2.4-0.9,3.2-1.7c1.5-1.5,1.8-2.8,1.6-3.8c0.4-0.2,0.7-0.5,0.9-0.6C11.2,7.7,11.7,7.5,12.1,7.5 M12.1,6 c-0.7,0-1.4,0.2-2.2,0.8C9.5,7.1,8.8,7.5,8,8.1c1,1.1,0.3,2.2-0.8,3.3c-0.7,0.7-1.4,1.2-2.1,1.2c-0.4,0-0.8-0.2-1.2-0.6 c-0.2-0.2-0.3-0.4-0.4-0.6c-0.7,0.6-1.3,1.1-1.9,1.7c-2.6,2.6-1.8,5.8,0.9,8.4C4,23.1,5.7,24,7.3,24c1.2,0,2.4-0.5,3.5-1.6 c0.6-0.6,1.1-1.2,1.7-1.9c-0.2-0.1-0.4-0.2-0.6-0.4c-1.1-1.1-0.4-2.2,0.7-3.4c0.7-0.7,1.4-1.2,2.1-1.2c0.4,0,0.8,0.1,1.1,0.5 c0.6-0.8,1-1.5,1.4-1.9c2.2-3-1-5.7-1.4-6C15.7,7.8,14.1,6,12.1,6L12.1,6z"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" d="M17.5 3.7L20.3 6.5M18.9 2.3L21.7 5.1"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -2,211 +2,16 @@
<body> <body>
original<br> original<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;"> <div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true" data-testid="icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> <path d="M4.96 2.126l.613.416c.301.204.663.321.982.425.158.051.396.128.466.173l.035.023.01.006c.13.084.309.2.535.272C7.748 3.488 7.906 3.513 8.06 3.513c.339 0 .651-.12.881-.339.274.105.601.224.972.25.038.135.068.273.1.423.057.267.122.569.239.889.089.259.208.609.491.91.17.203.355.324.48.407l.031.021c.029.04.076.119.111.179.075.128.166.282.29.437.124.187.296.347.49.456-.088.076-.18.15-.278.222-.365.24-.64.498-.839.788L11.004 8.19l-.02.035-.027.047c-.217.377-.542.941-.423 1.627.034.285.108.529.174.745.017.055.034.11.05.166l-.022.011-.034.02c-.096.056-.938.57-.938 1.369 0 .095.01.182.027.262-.218.2-.351.476-.354.785-.104.14-.181.278-.247.397-.023.042-.046.085-.071.126-.071.037-.216.084-.395.12-.093-.214-.222-.361-.308-.457-.158-.228-.362-.396-.544-.545-.039-.032-.089-.073-.131-.109-.014-.118-.032-.235-.059-.34-.099-.385-.315-.667-.489-.894-.032-.041-.073-.095-.105-.14.02-.049.046-.108.068-.156.099-.221.234-.523.265-.894l.004-.043v-.043c0-.499-.127-.942-.395-1.371.057-.163.105-.375.093-.624C7.139 8.2 7.158 8.088 7.158 7.957c0-.008-.022-.643-.291-1.164C6.855 6.754 6.841 6.716 6.825 6.678 6.626 6.218 6.181 5.985 5.5 5.985c-.04 0-.09 0-.148 0-.586 0-1.988 0-2.326-.001C2.999 5.971 2.972 5.955 2.946 5.94L2.741 5.824C2.63 5.762 2.451 5.662 2.269 5.557c.006-.015.011-.03.016-.045.221-.641.094-1.106-.069-1.397.039-.033.081-.064.126-.094l.06-.034c.237-.13.73-.402.92-1.048.023-.09.036-.175.042-.252.069-.054.145-.12.219-.201.005 0 .01 0 .014 0 .419 0 .775-.15 1.034-.259C4.678 2.209 4.72 2.191 4.761 2.175 4.827 2.156 4.893 2.14 4.96 2.126M5.889 1C5.382 1.035 4.911 1.071 4.441 1.211c-.25.091-.553.26-.841.26-.046 0-.092-.004-.137-.014-.109-.035-.181-.105-.29-.105-.109 0-.217.035-.254.105-.036.071 0 .105 0 .176C2.883 1.913 2.448 1.984 2.376 2.23c-.036.141 0 .316-.036.457C2.268 2.932 2.014 3.038 1.833 3.144c-.326.211-.579.457-.76.808C1.036 4.022 1 4.093 1 4.162c0 .141.217.281.29.386C1.434 4.725 1.398 4.97 1.326 5.181c-.073.211-.217.386-.29.562C1 5.814 1 5.885 1 5.919c.036.035.073.07.109.106.326.246 1.145.686 1.326.792.157.091.341.18.505.182C3 7 5 7 5.5 7c0 0 .5 0 .375.133C6.02 7.238 6.142 7.817 6.142 7.957c0 .14-.073.246-.036.352.036.387-.349.597-.096.913.254.316.398.632.398 1.054-.036.422-.362.773-.362 1.194 0 .457.543.808.652 1.23.036.141.036.316.073.457.073.316.639.597.82.878.073.106.181.175.217.316 0 .071 0 .141 0 .211 0 .175.145.351.326.422C8.166 14.995 8.201 15 8.238 15c.09 0 .192-.025.294-.05.398-.035 1.123-.175 1.376-.527.158-.219.254-.492.434-.668.109-.105.217-.211.181-.351-.036-.071-.073-.106-.073-.141 0-.071.145-.106.217-.106.073 0 .145 0 .217 0 .181-.035.254-.246.217-.386-.036-.175-.217-.281-.29-.457-.036-.035-.036-.07-.036-.105 0-.141.254-.387.434-.492.217-.105.471-.211.579-.422.073-.175.073-.351 0-.527-.073-.352-.217-.668-.254-1.019-.073-.351.145-.703.326-1.019.145-.211.362-.387.579-.527C13.167 7.677 13.891 6.878 14 6c-.254.211-.688.272-1.05.306-.109 0-.217 0-.29-.035-.073-.035-.145-.106-.181-.175C12.262 5.85 12.153 5.498 11.9 5.288c-.145-.106-.29-.175-.398-.317-.145-.141-.217-.352-.29-.563-.217-.598-.217-1.09-.471-1.687-.073-.14-.145-.316-.29-.316-.073 0-.145 0-.254 0-.045.007-.091.009-.136.009-.456 0-.912-.296-1.373-.391C8.645 2.009 8.594 2 8.544 2c-.07 0-.138.017-.18.058C8.256 2.164 8.348 2.335 8.24 2.44 8.197 2.481 8.13 2.498 8.06 2.498c-.049 0-.101-.008-.146-.023C7.805 2.44 7.701 2.369 7.592 2.299 7.23 2.053 6.506 1.948 6.144 1.702c.073-.105.109-.211.145-.317.036-.105-.038-.28-.146-.35C6.07 1 5.961 1 5.889 1L5.889 1zM13.875 10c-.099.215-.232.465-.398.571-.132.071-.299.143-.365.285-.099.179 0 .393-.033.571 0 .071-.033.143-.066.215-.033.179 0 .393.066.571.033.107.099.25.199.285.066 0 .166-.035.232-.107.066-.071.132-.215.166-.321s.033-.215.033-.321c.033-.321.199-.643.266-.965.033-.215.033-.429 0-.643C13.942 10.071 13.909 10 13.875 10l.017.035c.009.009.017.018.017.035l-.017-.035C13.884 10.027 13.875 10.018 13.875 10L13.875 10z"/>
<path style="fill:white" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-12.5c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm0 5.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"></path>
</svg> </svg>
</div> </div>
hack 1<br> original<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" class="MuiSvgIcon-root" focusable="false" viewBox="-3 -3 30 30" aria-hidden="true" data-testid="icon">
<rect x="-3" y="-3" width="100%" height="100%" style="fill:lightgrey" />
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-12.5c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm0 5.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"></path>
</svg>
</div>
hack 2<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" class="MuiSvgIcon-root" focusable="false" viewBox="-2 -2 28 28" aria-hidden="true" data-testid="icon">
<rect x="-2" y="-2" width="100%" height="100%" style="fill:lightgrey" />
<path style="fill:white" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-12.5c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm0 5.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"></path>
</svg>
</div>
hack 3<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" class="MuiSvgIcon-root" focusable="false" viewBox="-4 -4 32 32" aria-hidden="true" data-testid="icon">
<rect x="-4" y="-4" width="100%" height="100%" style="fill:lightgrey" />
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-12.5c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm0 5.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"></path>
</svg>
</div>
hack 4<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true" data-testid="icon">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<text style="fill:red;">Several lines:
<tspan >First line.</tspan>
<tspan >Second line.</tspan>
</text>
</svg>
</div>
hack 5<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- <rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> -->
<g font-face="sans-serif" font-size="12">
<text x="0%" y="45%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar1]]></text>
<text x="0%" y="90%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar2]]></text>
</g>
</svg>
</div>
hack 5 (3 lines)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- <rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> -->
<g font-face="sans-serif" font-size="8">
<text x="0%" y="30%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar1]]></text>
<text x="0%" y="60%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar2]]></text>
<text x="0%" y="90%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar3]]></text>
</g>
</svg>
</div>
hack 5 (4 lines)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- <rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> -->
<g font-face="sans-serif" font-size="6">
<text x="0%" y="22%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar1]]></text>
<text x="0%" y="45%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar2]]></text>
<text x="0%" y="67%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar3]]></text>
<text x="0%" y="90%" textLength="24" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar4]]></text>
</g>
</svg>
</div>
hack 5 (4 lines with viewBox enlarge)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- <rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> -->
<g font-face="sans-serif" font-size="5">
<text x="2" y="7" textLength="20" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar1]]></text>
<text x="2" y="12" textLength="20" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar2]]></text>
<text x="2" y="17" textLength="20" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar3]]></text>
<text x="2" y="22" textLength="20" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar4]]></text>
</g>
</svg>
</div>
hack 6a (4 lines with viewBox enlarge)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<!-- <rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> -->
<g font-face="sans-serif" font-size="20">
<text x="10" y="30" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar1]]></text>
<text x="10" y="50" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar2]]></text>
<text x="10" y="70" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar3]]></text>
<text x="10" y="90" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[foobar4]]></text>
</g>
</svg>
</div>
hack 6b 1 line<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="50" font-weight="bold">
<text x="10" y="60" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[psy]]></text>
</g>
</svg>
</div>
hack 6b 1 line %<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="50" font-weight="bold">
<text x="10" y="60" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[psy]]></text>
</g>
</svg>
</div>
hack 6b 2 lines<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="30" font-weight="bold">
<text x="10" y="40" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[psy]]></text>
<text x="10" y="80" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[trance]]></text>
</g>
</svg>
</div>
hack 6b2<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="30" font-weight="bold">
<text x="10" y="40" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[alt]]></text>
<text x="10" y="80" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[pop]]></text>
</g>
</svg>
</div>
hack 6b3<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="30" font-weight="bold">
<text x="10" y="40" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[oz]]></text>
<text x="10" y="80" textLength="80" lengthAdjust="spacingAndGlyphs"><![CDATA[rock]]></text>
</g>
</svg>
</div>
hack 6c (3 lines with viewBox enlarge)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="16" font-weight="bold" style="fill:pink">
<text x="20" y="26" textLength="60" lengthAdjust="spacingAndGlyphs"><![CDATA[oz]]></text>
<text x="20" y="52" textLength="60" lengthAdjust="spacingAndGlyphs"><![CDATA[hip]]></text>
<text x="20" y="78" textLength="60" lengthAdjust="spacingAndGlyphs"><![CDATA[hop]]></text>
</g>
</svg>
</div>
hack 6c with an embedded svg (1 lines with viewBox enlarge)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<svg x="20" y="20" width="60" height="60" viewBox="0 0 100 100">
<g font-family="helvetica" font-size="20" font-weight="bold">
<text x="0" y="100" textLength="100" lengthAdjust="spacingAndGlyphs"><![CDATA[oz]]></text>
</g>
</svg>
</svg>
</div>
hack 6c with an embedded svg (3 lines with viewBox enlarge)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<svg x="10" y="10" width="80" height="80" viewBox="0 0 100 100">
<g font-family="helvetica" font-size="16" font-weight="bold">
<text x="0" y="26" textLength="100" lengthAdjust="spacingAndGlyphs"><![CDATA[oz]]></text>
<text x="0" y="52" textLength="100" lengthAdjust="spacingAndGlyphs"><![CDATA[hip]]></text>
<text x="0" y="78" textLength="100" lengthAdjust="spacingAndGlyphs"><![CDATA[hop]]></text>
</g>
</svg>
</svg>
</div>
hack 6c% (3 lines with viewBox enlarge)<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" />
<g font-family="helvetica" font-size="16" font-weight="bold">
<text x="10%" y="26%" textLength="80%" lengthAdjust="spacingAndGlyphs"><![CDATA[oz]]></text>
<text x="10%" y="52%" textLength="80%" lengthAdjust="spacingAndGlyphs"><![CDATA[hip]]></text>
<text x="10%" y="78%" textLength="80%" lengthAdjust="spacingAndGlyphs"><![CDATA[hop]]></text>
</g>
</svg>
</div>
hack 6<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<!-- <rect x="0" y="0" width="100%" height="100%" style="fill:lightgrey" /> -->
<g font-face="sans-serif" font-size="10">
<text y="100%">
<tspan x="0" y="12" textLength="24" lengthAdjust="spacingAndGlyphs">First line.</tspan>
<tspan x="0" y="24" textLength="24" lengthAdjust="spacingAndGlyphs">Second line.</tspan>
</text>
</g>
</svg>
</div>
mushroom<br>
<div style="width:100px; height:100px; border: 1px; border-style: solid;"> <div style="width:100px; height:100px; border: 1px; border-style: solid;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" d="M2.5,8c0,3.038,2.462,0.5,5.5,0.5s5.5,2.538,5.5-0.5S11.038,2.5,8,2.5S2.5,4.962,2.5,8z"/> <path d="M4.96 2.126l.613.416c.301.204.663.321.982.425.158.051.396.128.466.173l.035.023.01.006c.13.084.309.2.535.272C7.748 3.488 7.906 3.513 8.06 3.513c.339 0 .651-.12.881-.339.274.105.601.224.972.25.038.135.068.273.1.423.057.267.122.569.239.889.089.259.208.609.491.91.17.203.355.324.48.407l.031.021c.029.04.076.119.111.179.075.128.166.282.29.437.124.187.296.347.49.456-.088.076-.18.15-.278.222-.365.24-.64.498-.839.788L11.004 8.19l-.02.035-.027.047c-.217.377-.542.941-.423 1.627.034.285.108.529.174.745.017.055.034.11.05.166l-.022.011-.034.02c-.096.056-.938.57-.938 1.369 0 .095.01.182.027.262-.218.2-.351.476-.354.785-.104.14-.181.278-.247.397-.023.042-.046.085-.071.126-.071.037-.216.084-.395.12-.093-.214-.222-.361-.308-.457-.158-.228-.362-.396-.544-.545-.039-.032-.089-.073-.131-.109-.014-.118-.032-.235-.059-.34-.099-.385-.315-.667-.489-.894-.032-.041-.073-.095-.105-.14.02-.049.046-.108.068-.156.099-.221.234-.523.265-.894l.004-.043v-.043c0-.499-.127-.942-.395-1.371.057-.163.105-.375.093-.624C7.139 8.2 7.158 8.088 7.158 7.957c0-.008-.022-.643-.291-1.164C6.855 6.754 6.841 6.716 6.825 6.678 6.626 6.218 6.181 5.985 5.5 5.985c-.04 0-.09 0-.148 0-.586 0-1.988 0-2.326-.001C2.999 5.971 2.972 5.955 2.946 5.94L2.741 5.824C2.63 5.762 2.451 5.662 2.269 5.557c.006-.015.011-.03.016-.045.221-.641.094-1.106-.069-1.397.039-.033.081-.064.126-.094l.06-.034c.237-.13.73-.402.92-1.048.023-.09.036-.175.042-.252.069-.054.145-.12.219-.201.005 0 .01 0 .014 0 .419 0 .775-.15 1.034-.259C4.678 2.209 4.72 2.191 4.761 2.175 4.827 2.156 4.893 2.14 4.96 2.126M5.889 1C5.382 1.035 4.911 1.071 4.441 1.211c-.25.091-.553.26-.841.26-.046 0-.092-.004-.137-.014-.109-.035-.181-.105-.29-.105-.109 0-.217.035-.254.105-.036.071 0 .105 0 .176C2.883 1.913 2.448 1.984 2.376 2.23c-.036.141 0 .316-.036.457C2.268 2.932 2.014 3.038 1.833 3.144c-.326.211-.579.457-.76.808C1.036 4.022 1 4.093 1 4.162c0 .141.217.281.29.386C1.434 4.725 1.398 4.97 1.326 5.181c-.073.211-.217.386-.29.562C1 5.814 1 5.885 1 5.919c.036.035.073.07.109.106.326.246 1.145.686 1.326.792.157.091.341.18.505.182C3 7 5 7 5.5 7c0 0 .5 0 .375.133C6.02 7.238 6.142 7.817 6.142 7.957c0 .14-.073.246-.036.352.036.387-.349.597-.096.913.254.316.398.632.398 1.054-.036.422-.362.773-.362 1.194 0 .457.543.808.652 1.23.036.141.036.316.073.457.073.316.639.597.82.878.073.106.181.175.217.316 0 .071 0 .141 0 .211 0 .175.145.351.326.422C8.166 14.995 8.201 15 8.238 15c.09 0 .192-.025.294-.05.398-.035 1.123-.175 1.376-.527.158-.219.254-.492.434-.668.109-.105.217-.211.181-.351-.036-.071-.073-.106-.073-.141 0-.071.145-.106.217-.106.073 0 .145 0 .217 0 .181-.035.254-.246.217-.386-.036-.175-.217-.281-.29-.457-.036-.035-.036-.07-.036-.105 0-.141.254-.387.434-.492.217-.105.471-.211.579-.422.073-.175.073-.351 0-.527-.073-.352-.217-.668-.254-1.019-.073-.351.145-.703.326-1.019.145-.211.362-.387.579-.527C13.167 7.677 13.891 6.878 14 6c-.254.211-.688.272-1.05.306-.109 0-.217 0-.29-.035-.073-.035-.145-.106-.181-.175C12.262 5.85 12.153 5.498 11.9 5.288c-.145-.106-.29-.175-.398-.317-.145-.141-.217-.352-.29-.563-.217-.598-.217-1.09-.471-1.687-.073-.14-.145-.316-.29-.316-.073 0-.145 0-.254 0-.045.007-.091.009-.136.009-.456 0-.912-.296-1.373-.391C8.645 2.009 8.594 2 8.544 2c-.07 0-.138.017-.18.058C8.256 2.164 8.348 2.335 8.24 2.44 8.197 2.481 8.13 2.498 8.06 2.498c-.049 0-.101-.008-.146-.023C7.805 2.44 7.701 2.369 7.592 2.299 7.23 2.053 6.506 1.948 6.144 1.702c.073-.105.109-.211.145-.317.036-.105-.038-.28-.146-.35C6.07 1 5.961 1 5.889 1L5.889 1zM13.875 10c-.099.215-.232.465-.398.571-.132.071-.299.143-.365.285-.099.179 0 .393-.033.571 0 .071-.033.143-.066.215-.033.179 0 .393.066.571.033.107.099.25.199.285.066 0 .166-.035.232-.107.066-.071.132-.215.166-.321s.033-.215.033-.321c.033-.321.199-.643.266-.965.033-.215.033-.429 0-.643C13.942 10.071 13.909 10 13.875 10l.017.035c.009.009.017.018.017.035l-.017-.035C13.884 10.027 13.875 10.018 13.875 10L13.875 10z"/>
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" d="M9.152,8.625C9.369,10.951,9.5,12.135,9.5,12.5c0,0.828-0.672,1-1.5,1s-1.5-0.172-1.5-1c0-0.365,0.131-1.549,0.348-3.875"/>
</svg> </svg>
</div> </div>
</body> </body>
</html> </html>

9
web/views/icons.eta Normal file
View File

@@ -0,0 +1,9 @@
<% layout('./layout') %>
<div id="content">
<% it.icons.forEach(function(icon) { %>
<%= icon[0] %>
<div style="width:100px; height:100px; border: 1px; border-style: solid;">
<%~ icon[1] %>
</div><br><br>
<% }) %>
</div>