Init AvoAvatar primitive

Co-authored-by: Jamie <113370520+jamiebuilds-signal@users.noreply.github.com>
This commit is contained in:
automated-signal
2026-02-12 18:49:28 -06:00
committed by GitHub
parent e2b62a445c
commit 6a5182eaa8
54 changed files with 1235 additions and 138 deletions

View File

@@ -268,7 +268,7 @@ const typescriptRules = {
zones: [
{
target: ['ts/util', 'ts/types'],
from: ['ts/components', 'ts/axo'],
from: ['ts/components/**', 'ts/axo/**/*.dom.*'],
message: 'Importing components is forbidden from ts/{util,types}',
},
],
@@ -452,7 +452,7 @@ module.exports = {
},
},
{
files: ['ts/axo/**/*.tsx'],
files: ['ts/axo/**/*.{ts,tsx}'],
rules: {
// Rule doesn't understand TypeScript namespaces
'no-inner-declarations': 'off',

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><circle cx="8" cy="8" r="6.5" style="fill:#d8e8f0"/><path d="M8 2a6 6 0 1 1-6 6 6 6 0 0 1 6-6m0-1a7 7 0 1 0 7 7 7 7 0 0 0-7-7"/><path d="M8.05 11.33A3.33 3.33 0 1 0 4.72 8a3.34 3.34 0 0 0 3.33 3.33" style="fill:#f2dafb"/><path d="M12.88 6.28c-.2-.71-1.07-1-2.12-1a4 4 0 0 0-1.38-.91 3.85 3.85 0 0 0-4.26 1.18 3.7 3.7 0 0 0-.79 1.58h-.08c-1 .69-1.42 1.32-1.25 1.93s.77.87 1.79.93a3.83 3.83 0 0 0 7.09-2c.72-.5 1.17-1.09 1-1.71m-7.28.3a2.82 2.82 0 0 1 3-1.36 2.88 2.88 0 0 1 1.65 1 2.8 2.8 0 0 1 .61 1.28 11.5 11.5 0 0 1-2.67 1.05A12 12 0 0 1 5.41 9a2.5 2.5 0 0 1-.18-.77 2.83 2.83 0 0 1 .37-1.65m4.76 3.05a2.85 2.85 0 0 1-1.35 1A2.8 2.8 0 0 1 6 10a13.7 13.7 0 0 0 2.44-.46 15 15 0 0 0 2.34-.88 2.8 2.8 0 0 1-.42.97" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 806 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><circle cx="8" cy="8" r="6.5" style="fill:#d8e8f0"/><path d="M8 2a6 6 0 1 1-6 6 6 6 0 0 1 6-6m0-1a7 7 0 1 0 7 7 7 7 0 0 0-7-7" style="fill:#fff"/><path d="M8.05 11.33A3.33 3.33 0 1 0 4.72 8a3.34 3.34 0 0 0 3.33 3.33" style="fill:#f2dafb"/><path d="M12.88 6.28c-.2-.71-1.07-1-2.12-1a4 4 0 0 0-1.38-.91 3.85 3.85 0 0 0-4.26 1.18 3.7 3.7 0 0 0-.79 1.58h-.08c-1 .69-1.42 1.32-1.25 1.93s.77.87 1.79.93a3.83 3.83 0 0 0 7.09-2c.72-.5 1.17-1.09 1-1.71m-7.28.3a2.82 2.82 0 0 1 3-1.36 2.88 2.88 0 0 1 1.65 1 2.8 2.8 0 0 1 .61 1.28 11.5 11.5 0 0 1-2.67 1.05A12 12 0 0 1 5.41 9a2.5 2.5 0 0 1-.18-.77 2.83 2.83 0 0 1 .37-1.65m4.76 3.05a2.85 2.85 0 0 1-1.35 1A2.8 2.8 0 0 1 6 10a13.7 13.7 0 0 0 2.44-.46 15 15 0 0 0 2.34-.88 2.8 2.8 0 0 1-.42.97" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 824 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="160" height="160"><circle cx="80" cy="80" r="80" style="fill:#d8e8f0"/><path d="M65.82 53.65c-9.27 18.93-5.22 37.61-23.71 56.24-8.94 9-18.67 13.49-26.87 17.06a80 80 0 0 0 52.42 32.1 77.5 77.5 0 0 0 15.24-18.63c16.69-29.65 1.37-43.94 17.18-62.36 15.18-17.68 35.05-19.94 52.49-31.73a80.4 80.4 0 0 0-29.28-33.59C88.33 23.45 72.91 39.18 65.82 53.65" style="fill:#b4d0db"/><circle cx="79.9" cy="77.91" r="41.36" style="fill:#eae0fd"/><path d="M86.22 39.06a39.24 39.24 0 0 0 .78 77.39 39.24 39.24 0 0 0-.75-77.39Z" style="fill:#ccbef4"/><path d="m29.28 85.85-.09.08ZM33 81a2 2 0 0 0-2.74-.72 71 71 0 0 0-7.82 6.2 2 2 0 0 0 0 2.82 2 2 0 0 0 2.83 0c1.14-1 2.33-2.06 3.55-3l.41-.32h-.06l.12-.09h.07l.93-.7c.65-.48 1.3-.94 2-1.39A2 2 0 0 0 33 81m-5.8 21.31a2.06 2.06 0 0 1-.92 1.2 2.12 2.12 0 0 1-1.54.2 11.8 11.8 0 0 1-2.74-.77 5 5 0 0 1-2.32-2.1A9.3 9.3 0 0 1 18.59 98a7 7 0 0 1-.16-1.78 5.8 5.8 0 0 1 .51-2.06 2 2 0 0 1 1.2-.92 2 2 0 0 1 1.54.21 2.07 2.07 0 0 1 .92 1.19 2.16 2.16 0 0 1-.15 1.42l.11-.28a4 4 0 0 0-.13.5v.55a9 9 0 0 0 .38 1.34c.07.15.14.3.22.45l.18.32.16.17a4 4 0 0 0 .43.23 12 12 0 0 0 2 .46 2 2 0 0 1 1.4 2.51m-4.76-6.19a.4.4 0 0 0 0 .09v-.08Zm37.36 3c-2.2.48-4.43.83-6.65 1.17a2 2 0 0 0-1.2.92 2 2 0 0 0 .72 2.73 2.34 2.34 0 0 0 1.54.21c2.23-.34 4.45-.69 6.65-1.17a2 2 0 0 0 1.4-2.46 2 2 0 0 0-2.46-1.39Zm17.57-4.78c-2.37.87-4.8 1.54-7.24 2.19a2 2 0 0 0-1.4 2.47 2 2 0 0 0 2.46 1.4c2.44-.65 4.87-1.32 7.25-2.19a2.1 2.1 0 0 0 1.19-.92 2 2 0 0 0-2.26-2.94Zm16.44-5.87q-.86.42-1.74.81l-.43.18-.81.31c-1.23.47-2.48.88-3.74 1.29a2 2 0 1 0 1.07 3.85 57 57 0 0 0 7.73-3 2 2 0 0 0 .72-2.73 2.05 2.05 0 0 0-2.8-.7Zm16.78-6.59c-1.13.59-2.28 1.14-3.44 1.68l-1.74.77-.35.15-.18.08-.89.36a2.14 2.14 0 0 0-1.19.92 2 2 0 0 0-.2 1.54 2 2 0 0 0 2.46 1.4c2.56-1 5.09-2.18 7.55-3.44a2 2 0 0 0 .72-2.74 2.06 2.06 0 0 0-2.74-.71Zm19.55-10.33a2 2 0 0 1 .59 1.42 2 2 0 0 1-.59 1.41 83 83 0 0 1-6.91 4.85 50 50 0 0 1-.51 5.44 43.35 43.35 0 0 1-77.93 18.67 2 2 0 0 1-1.45 1.66 33.5 33.5 0 0 1-8.71.36 2.05 2.05 0 0 1-2-2 2 2 0 0 1 2-2 34 34 0 0 0 4 .13c.66 0 1.32-.06 2-.13h1.12l.55-.09a2.7 2.7 0 0 1 1.06 0c-.19-.29-.39-.59-.57-.89A43.37 43.37 0 0 1 94.83 37.2a43.85 43.85 0 0 1 28.28 37.34c.33-.21.66-.41 1-.63l1.75-1.24.89-.66c.15-.11.3-.22.44-.34l.14-.1h.07-.06a2.28 2.28 0 0 1 1.4-.58 2 2 0 0 1 1.4.57Zm-10.88 6.35a39.36 39.36 0 1 0-25.81 37 39.42 39.42 0 0 0 25.81-36.99Zm20.07-20.5a2 2 0 0 0-2 2 14 14 0 0 1-.08 1.56s0 0 0-.05v.35c0 .23-.09.46-.14.68a10 10 0 0 1-.34 1.08v-.06.09l-.07.13a4 4 0 0 1-.24.46c-.08.14-.17.28-.26.42l-.13.19-.18.22-.34.36c-.21.2-.42.4-.64.58l-.08.06-.31.23a2 2 0 1 0 2 3.45 10.9 10.9 0 0 0 3.37-3.49 12.7 12.7 0 0 0 1.48-6.31 2 2 0 0 0-2.04-1.95m-2.6 5.6c-.16.3-.13.28-.08.18l.07-.15zm.52-2.07a.7.7 0 0 0 0 .18 1 1 0 0 1 0-.16Zm-3.25-6.3a2 2 0 0 0-1.4-2.46 21.45 21.45 0 0 0-10.29.19 2 2 0 1 0 1.06 3.86 20 20 0 0 1 2.17-.47h.75l1.11-.06a17 17 0 0 1 2.25.09 5 5 0 0 1 .52 0h.16c.4.07.81.14 1.21.23a2 2 0 0 0 2.46-1.38m5.74 54.17-3.06-.8-.84-3.1a.6.6 0 0 0-.59-.45.61.61 0 0 0-.59.45l-.8 3.06-3.1.84a.61.61 0 0 0-.45.59.6.6 0 0 0 .45.59l3.06.8.84 3.1a.61.61 0 0 0 .59.45.6.6 0 0 0 .59-.45l.81-3.06 3.09-.84a.6.6 0 0 0 .45-.59.61.61 0 0 0-.43-.59ZM64.38 16.86l-5.6-1.52a.18.18 0 0 1-.12-.12l-1.52-5.6a.83.83 0 0 0-1.61 0L54 15.22a.2.2 0 0 1-.12.12l-5.61 1.52a.84.84 0 0 0 0 1.61L53.89 20a.23.23 0 0 1 .12.12l1.52 5.61a.84.84 0 0 0 1.61 0l1.52-5.61a.2.2 0 0 1 .12-.12l5.6-1.52a.83.83 0 0 0 0-1.61ZM22.52 66.7l-3.58-1-1-3.59a.65.65 0 0 0-.64-.48.64.64 0 0 0-.63.48l-1 3.58-3.59 1a.64.64 0 0 0-.48.63.65.65 0 0 0 .48.64l3.58 1 1 3.59a.64.64 0 0 0 .63.48.65.65 0 0 0 .64-.48l1-3.58 3.59-1a.65.65 0 0 0 .48-.64.64.64 0 0 0-.48-.63" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><circle cx="12" cy="12" r="9.25" fill="#d8e8f0"/><path fill="#2e2e2e" d="M12 4a8 8 0 1 1-8 8 8 8 0 0 1 8-8m0-2.5A10.5 10.5 0 1 0 22.5 12 10.51 10.51 0 0 0 12 1.5"/><circle cx="12" cy="12" r="3.96" fill="#eae0fd"/><g fill="#0b3a52"><path d="M13.56 7.82A4.46 4.46 0 1 0 16.47 12a4.53 4.53 0 0 0-2.91-4.18m-.37 7.44A3.47 3.47 0 1 1 15.47 12a3.51 3.51 0 0 1-2.28 3.26"/><path d="M18.54 10.16c-.28-1-1.89-1.24-3.84-1.05a4 4 0 0 1 .75 1c1.31-.05 2.07.16 2.13.37.11.37-1.59 1.83-5.22 2.85s-5.84.66-5.94.29c-.06-.21.5-.8 1.68-1.45A.2.2 0 0 1 8 12a4 4 0 0 1 .16-1.06c-1.77.85-3 1.9-2.74 2.9.22.8 1.29 1.12 2.7 1.12a17.4 17.4 0 0 0 4.47-.71c3.19-.89 6.41-2.55 5.95-4.09"/></g></svg>

After

Width:  |  Height:  |  Size: 735 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="24" height="24"><defs><style>.cls-4{fill:#0b3a52}</style></defs><circle cx="12" cy="12" r="9.25" style="fill:#d8e8f0"/><path id="border" d="M12 4a8 8 0 1 1-8 8 8 8 0 0 1 8-8m0-2.5A10.5 10.5 0 1 0 22.5 12 10.51 10.51 0 0 0 12 1.5" style="fill:#fff"/><circle cx="12" cy="12" r="3.96" style="fill:#eae0fd"/><path d="M13.56 7.82A4.46 4.46 0 1 0 16.47 12a4.53 4.53 0 0 0-2.91-4.18m-.37 7.44A3.47 3.47 0 1 1 15.47 12a3.51 3.51 0 0 1-2.28 3.26" class="cls-4"/><path d="M18.54 10.16c-.28-1-1.89-1.24-3.84-1.05a4 4 0 0 1 .75 1c1.31-.05 2.07.16 2.13.37.11.37-1.59 1.83-5.22 2.85s-5.84.66-5.94.29c-.06-.21.5-.8 1.68-1.45A.2.2 0 0 1 8 12a4 4 0 0 1 .16-1.06c-1.77.85-3 1.9-2.74 2.9.22.8 1.29 1.12 2.7 1.12a17.4 17.4 0 0 0 4.47-.71c3.19-.89 6.41-2.55 5.95-4.09" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 828 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="36" height="36"><defs><style>.cls-3{fill:#0b3a52}</style></defs><circle cx="18" cy="18" r="14" style="fill:#d8e8f0"/><path id="border" d="M18 6A12 12 0 1 1 6 18 12 12 0 0 1 18 6m0-4a16 16 0 1 0 16 16A16 16 0 0 0 18 2"/><circle cx="18" cy="18" r="6.2" style="fill:#eae0fd"/><path d="m9.94 21.1-.28-.1v-.06a1 1 0 0 1-.05-.15v-.13a.45.45 0 0 0 0-.2.5.5 0 0 0-.23-.3.53.53 0 0 0-.38-.05.5.5 0 0 0-.3.23 2 2 0 0 0-.07.2.8.8 0 0 0 0 .21 1.1 1.1 0 0 0 0 .32 1.6 1.6 0 0 0 .18.47 1 1 0 0 0 .42.39l.28.1h.18a.53.53 0 0 0 .39 0 .53.53 0 0 0 .23-.3.5.5 0 0 0 0-.38.49.49 0 0 0-.37-.25m-.37-.32v.06-.07Zm6.23.13c-.48.11-1 .2-1.46.3a.52.52 0 0 0-.3.23.58.58 0 0 0 0 .39.51.51 0 0 0 .62.34l1.46-.29a.5.5 0 1 0-.27-1Zm3.72-1.04c-.5.18-1 .32-1.52.48a.5.5 0 0 0 .27 1c.5-.16 1-.3 1.51-.49a.5.5 0 0 0 .3-.23.5.5 0 0 0-.56-.73ZM21.4 19a.53.53 0 0 0-.3.23.5.5 0 0 0-.05.38.53.53 0 0 0 .23.3.5.5 0 0 0 .39 0c.25-.1.5-.2.75-.32s.41-.21.61-.32a.49.49 0 0 0 .18-.68.5.5 0 0 0-.68-.18c-.28.15-.55.3-.84.42Zm5.87-4.13a.53.53 0 0 0-.36-.15.52.52 0 0 0-.5.5 1.3 1.3 0 0 1-.08.48.6.6 0 0 1-.08.13 2 2 0 0 1-.19.2.49.49 0 0 0-.16.67.57.57 0 0 0 .3.23.58.58 0 0 0 .39-.05 2.1 2.1 0 0 0 .58-.6 2.1 2.1 0 0 0 .24-1 .47.47 0 0 0-.14-.41" class="cls-3"/><path d="M25.46 14a3.54 3.54 0 0 0-1.65 0 .58.58 0 0 0-.29.22 6.62 6.62 0 0 0-3.16-2.51 6.66 6.66 0 0 0-9 6.1.44.44 0 0 0-.32.05 10 10 0 0 0-1.22 1 .5.5 0 0 0 .71.71c.19-.18.39-.34.59-.5l.29-.21a6.4 6.4 0 0 0 .81 2.49h-.73a.5.5 0 0 0-.35.14.5.5 0 0 0-.15.36.5.5 0 0 0 .15.35.62.62 0 0 0 .35.15 7 7 0 0 0 1.29 0h.09A6.68 6.68 0 0 0 24.7 18.4c.19-.12.38-.23.56-.37a.35.35 0 0 0 .14-.13.5.5 0 0 0 .09-.17.44.44 0 0 0 0-.2.6.6 0 0 0-.06-.18.5.5 0 0 0-.3-.23L25 17a.5.5 0 0 0-.26.07l-.09.06A6.8 6.8 0 0 0 24 15h.11l.29-.06a3 3 0 0 1 .67 0h.16a.5.5 0 0 0 .62-.35.51.51 0 0 0-.39-.59m-5.52 9.37A5.71 5.71 0 1 1 23.7 18a5.77 5.77 0 0 1-3.76 5.37" class="cls-3"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="36" height="36"><defs><style>.cls-4{fill:#0b3a52}</style></defs><circle cx="18" cy="18" r="14" style="fill:#d8e8f0"/><path id="border" d="M18 6A12 12 0 1 1 6 18 12 12 0 0 1 18 6m0-4a16 16 0 1 0 16 16A16 16 0 0 0 18 2" style="fill:#fff"/><circle cx="18" cy="18" r="6.2" style="fill:#eae0fd"/><path d="m9.94 21.1-.28-.1v-.06a1 1 0 0 1-.05-.15v-.13a.45.45 0 0 0 0-.2.5.5 0 0 0-.23-.3.53.53 0 0 0-.38-.05.5.5 0 0 0-.3.23 2 2 0 0 0-.07.2.8.8 0 0 0 0 .21 1.1 1.1 0 0 0 0 .32 1.6 1.6 0 0 0 .18.47 1 1 0 0 0 .42.39l.28.1h.18a.53.53 0 0 0 .39 0 .53.53 0 0 0 .23-.3.5.5 0 0 0 0-.38.49.49 0 0 0-.37-.25m-.37-.32v.06-.07Zm6.23.13c-.48.11-1 .2-1.46.3a.52.52 0 0 0-.3.23.58.58 0 0 0 0 .39.51.51 0 0 0 .62.34l1.46-.29a.5.5 0 1 0-.27-1Zm3.72-1.04c-.5.18-1 .32-1.52.48a.5.5 0 0 0 .27 1c.5-.16 1-.3 1.51-.49a.5.5 0 0 0 .3-.23.5.5 0 0 0-.56-.73ZM21.4 19a.53.53 0 0 0-.3.23.5.5 0 0 0-.05.38.53.53 0 0 0 .23.3.5.5 0 0 0 .39 0c.25-.1.5-.2.75-.32s.41-.21.61-.32a.49.49 0 0 0 .18-.68.5.5 0 0 0-.68-.18c-.28.15-.55.3-.84.42Zm5.87-4.13a.53.53 0 0 0-.36-.15.52.52 0 0 0-.5.5 1.3 1.3 0 0 1-.08.48.6.6 0 0 1-.08.13 2 2 0 0 1-.19.2.49.49 0 0 0-.16.67.57.57 0 0 0 .3.23.58.58 0 0 0 .39-.05 2.1 2.1 0 0 0 .58-.6 2.1 2.1 0 0 0 .24-1 .47.47 0 0 0-.14-.41" class="cls-4"/><path d="M25.46 14a3.54 3.54 0 0 0-1.65 0 .58.58 0 0 0-.29.22 6.62 6.62 0 0 0-3.16-2.51 6.66 6.66 0 0 0-9 6.1.44.44 0 0 0-.32.05 10 10 0 0 0-1.22 1 .5.5 0 0 0 .71.71c.19-.18.39-.34.59-.5l.29-.21a6.4 6.4 0 0 0 .81 2.49h-.73a.5.5 0 0 0-.35.14.5.5 0 0 0-.15.36.5.5 0 0 0 .15.35.62.62 0 0 0 .35.15 7 7 0 0 0 1.29 0h.09A6.68 6.68 0 0 0 24.7 18.4c.19-.12.38-.23.56-.37a.35.35 0 0 0 .14-.13.5.5 0 0 0 .09-.17.44.44 0 0 0 0-.2.6.6 0 0 0-.06-.18.5.5 0 0 0-.3-.23L25 17a.5.5 0 0 0-.26.07l-.09.06A6.8 6.8 0 0 0 24 15h.11l.29-.06a3 3 0 0 1 .67 0h.16a.5.5 0 0 0 .62-.35.51.51 0 0 0-.39-.59m-5.52 9.37A5.71 5.71 0 1 1 23.7 18a5.77 5.77 0 0 1-3.76 5.37" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="16" height="16"><defs><style>.cls-3{fill:#401968}</style></defs><circle cx="8" cy="8" r="6.5" style="fill:#e3e3fe"/><path id="border" d="M8 2a6 6 0 1 1-6 6 6 6 0 0 1 6-6m0-1a7 7 0 1 0 7 7 7 7 0 0 0-7-7"/><path d="M8 10.84a2.74 2.74 0 0 1-1.27-.36 2.74 2.74 0 0 1-1-.92l-.09-.17v-.18a11 11 0 0 1 1.3-3.53 4.75 4.75 0 0 1 2.82-1.52h.38l.15.34a4.86 4.86 0 0 1 .26 3.21 11.1 11.1 0 0 1-2.25 3l-.14.14Z" style="fill:#cde4cd"/><path d="M8 8.11a.87.87 0 0 0 1.18-.35.88.88 0 0 0-.35-1.18A.87.87 0 1 0 8 8.11" class="cls-3"/><path d="m10.75 4.25-.31-.69-.75.11a5.18 5.18 0 0 0-3.16 1.71 6.7 6.7 0 0 0-.77 1.49.4.4 0 0 0-.11 0L5.12 7a.65.65 0 0 0-.37.28L3.41 9.7a.5.5 0 0 0 .07.58.5.5 0 0 0 .37.16.5.5 0 0 0 .2 0l1.21-.53a3.2 3.2 0 0 0 1.19 1.05 3.3 3.3 0 0 0 1.5.42H8l.22 1.3a.5.5 0 0 0 .41.41h.08a.51.51 0 0 0 .44-.26l1.3-2.45a.7.7 0 0 0 0-.47l-.19-.51s0-.06-.06-.1a6 6 0 0 0 .8-1.46 5.23 5.23 0 0 0-.25-3.59m-.67 3.24A10.8 10.8 0 0 1 8 10.34a2.3 2.3 0 0 1-1-.3 2.13 2.13 0 0 1-.83-.73A10.9 10.9 0 0 1 7.34 6a4.3 4.3 0 0 1 2.5-1.31 4.34 4.34 0 0 1 .24 2.8" class="cls-3"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="16" height="16"><defs><style>.cls-4{fill:#401968}</style></defs><circle cx="8" cy="8" r="6.5" style="fill:#e3e3fe"/><path d="M8 2a6 6 0 1 1-6 6 6 6 0 0 1 6-6m0-1a7 7 0 1 0 7 7 7 7 0 0 0-7-7" style="fill:#fff"/><path d="M8 10.84a2.74 2.74 0 0 1-1.27-.36 2.74 2.74 0 0 1-1-.92l-.09-.17v-.18a11 11 0 0 1 1.3-3.53 4.75 4.75 0 0 1 2.82-1.52h.38l.15.34a4.86 4.86 0 0 1 .26 3.21 11.1 11.1 0 0 1-2.25 3l-.14.14Z" style="fill:#cde4cd"/><path d="M8 8.11a.87.87 0 0 0 1.18-.35.88.88 0 0 0-.35-1.18A.87.87 0 1 0 8 8.11" class="cls-4"/><path d="m10.75 4.25-.31-.69-.75.11a5.18 5.18 0 0 0-3.16 1.71 6.7 6.7 0 0 0-.77 1.49.4.4 0 0 0-.11 0L5.12 7a.65.65 0 0 0-.37.28L3.41 9.7a.5.5 0 0 0 .07.58.5.5 0 0 0 .37.16.5.5 0 0 0 .2 0l1.21-.53a3.2 3.2 0 0 0 1.19 1.05 3.3 3.3 0 0 0 1.5.42H8l.22 1.3a.5.5 0 0 0 .41.41h.08a.51.51 0 0 0 .44-.26l1.3-2.45a.7.7 0 0 0 0-.47l-.19-.51s0-.06-.06-.1a6 6 0 0 0 .8-1.46 5.23 5.23 0 0 0-.25-3.59m-.67 3.24A10.8 10.8 0 0 1 8 10.34a2.3 2.3 0 0 1-1-.3 2.13 2.13 0 0 1-.83-.73A10.9 10.9 0 0 1 7.34 6a4.3 4.3 0 0 1 2.5-1.31 4.34 4.34 0 0 1 .24 2.8" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="160" height="160"><defs><style>.cls-6{fill:#401968}</style></defs><circle cx="80" cy="80" r="80" style="fill:#e3e3fe"/><path d="M158.63 94.68A80 80 0 1 0 .8 91.2c59.69-11.94 119.98-9.09 157.83 3.48" style="fill:#c5c5ef"/><path d="m111.5 19.83-.31.47.14-.3s-27 3.67-39.66 20.33-20.34 52.4-20.34 52.4A25.3 25.3 0 0 0 64 104a.88.88 0 0 0 .56 0 25.24 25.24 0 0 0 16.27 5s26.46-25.2 34.05-44.71-3.38-44.46-3.38-44.46" style="fill:#cde4cd"/><path d="m110.8 22.07-.41.05c-1.67 8.09-5.51 25-11.06 39.21-5.84 15-21.61 35.31-28.59 43.89a28 28 0 0 0 9.26 2s25.23-23.77 33.26-42.93c7.4-17.63-2.46-42.22-2.46-42.22" style="fill:#aca"/><circle cx="87" cy="61.67" r="12.67" style="fill:#fdf1c0"/><path d="M92 47.88a14.66 14.66 0 1 0 9.67 13.79A14.9 14.9 0 0 0 92 47.88m-1.22 23.77a10.67 10.67 0 1 1 6.89-10 10.79 10.79 0 0 1-6.89 10M119 40.06a79.8 79.8 0 0 0-5.43-20.51 1.8 1.8 0 0 0-.29-.71 2 2 0 0 0-2.74-.72 75.7 75.7 0 0 0-15.65 4.2C85 26 75.69 31.45 69.44 40c-6.1 8.35-9.95 18.4-13.26 28.12-.57 1.68-1.11 3.36-1.65 5l-5.4 1.45a1 1 0 0 0-.62.49l-14.78 28.8a1 1 0 0 0 1.36 1.28l15.8-9.28a26.6 26.6 0 0 0 4.42 5 30 30 0 0 0 3.47 2.61l-7.12 15.13a1.91 1.91 0 0 0 3.34 1.83l10-13.63c.75.44 1.56.83 2.24 1.17a29.3 29.3 0 0 0 4.63 1.87 27.5 27.5 0 0 0 5.8 1.16v18.54a1 1 0 0 0 1.79.52l17.31-27.36a.94.94 0 0 0 .11-.78l-1.49-5.39 1.24-1.41C103.08 87.65 109.32 79.74 114 71a45.1 45.1 0 0 0 5-14.27 59 59 0 0 0 0-16.67M114.43 59c-1.89 7.86-6.5 14.93-11.17 21.41a193 193 0 0 1-15 18c-2.7 2.93-5.45 5.81-8.32 8.57a22.36 22.36 0 0 1-11.12-2.71c-.66-.35-1.3-.72-1.92-1.12l8.59-17.13a1.91 1.91 0 0 0-3.29-1.93l-11.33 16-.87-.59a24.7 24.7 0 0 1-5.11-4.86 19 19 0 0 1-1.47-2.18 201.6 201.6 0 0 1 10.5-33.66c3.12-7.57 6.9-15.43 12.85-21.2S90.25 28.08 98 25.43a78 78 0 0 1 12.34-3.26c.23.61.47 1.21.68 1.83a87 87 0 0 1 2.66 9.1c1.93 8.41 2.78 17.43.75 25.9m-54.38 87.38q-1.81 3.3-3.74 6.54a2 2 0 0 1-3.46-2q1.93-3.24 3.74-6.54a2 2 0 1 1 3.46 2m3.11-15.55-.08.19c0-.06.09-.21.11-.26l.22-.54a2.45 2.45 0 0 1 .92-1.2 2 2 0 0 1 2.74.72 2 2 0 0 1 .2 1.54c-1.13 2.72-2.32 5.41-3.61 8.07a2 2 0 0 1-2.73.72 2.05 2.05 0 0 1-.72-2.74c.59-1.23 1.17-2.46 1.73-3.7l.81-1.84c.13-.32.25-.63.41-.96" class="cls-6"/><path d="M72.69 115.62a2 2 0 0 1 .2 1.54c-1 2.41-1.9 4.82-2.85 7.23a2.3 2.3 0 0 1-.92 1.2 2 2 0 0 1-2.73-.72 2 2 0 0 1-.2-1.54L69 116.1a2.34 2.34 0 0 1 .92-1.2 2.06 2.06 0 0 1 1.54-.2 2.1 2.1 0 0 1 1.23.92m-47.8 22.09a2 2 0 0 1-.72-2.73c1.26-2.18 2.55-4.33 3.89-6.46a2 2 0 0 1 2.73-.71 2 2 0 0 1 .72 2.73c-1.33 2.13-2.63 4.28-3.88 6.46a2 2 0 0 1-2.74.71m14.93-19.12c-.07 0-.26.35-.31.41l-1.23 1.63c-.82 1.1-1.61 2.21-2.4 3.32a2 2 0 0 1-2.73.72 2 2 0 0 1-.72-2.73c1.69-2.42 3.45-4.77 5.28-7.08a1.9 1.9 0 0 1 1.41-.59 2 2 0 0 1 2 2 2.12 2.12 0 0 1-.59 1.41l-.63.81-.15.2c-.14.17-.11.14.07-.1m3.96-6.1a2 2 0 0 1-2-2 2.12 2.12 0 0 1 .59-1.41l4.92-6a1.9 1.9 0 0 1 1.41-.59 2 2 0 0 1 1.42.59 2 2 0 0 1 .58 1.41 2.2 2.2 0 0 1-.58 1.42l-4.92 6a1.93 1.93 0 0 1-1.42.58" class="cls-6"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="24" height="24"><defs><style>.cls-4{fill:#401968}</style></defs><circle cx="12" cy="12" r="9.25" style="fill:#e3e3fe"/><path id="border" d="M12 4a8 8 0 1 1-8 8 8 8 0 0 1 8-8m0-2.5A10.5 10.5 0 1 0 22.5 12 10.51 10.51 0 0 0 12 1.5" style="fill:#2e2e2e"/><path d="M14.93 6.57a6.26 6.26 0 0 0-3.66 1.88 15.6 15.6 0 0 0-1.88 4.83 2.35 2.35 0 0 0 1.17 1h.06a2.35 2.35 0 0 0 1.49.46 15.8 15.8 0 0 0 3.14-4.13 6.25 6.25 0 0 0-.32-4.04" style="fill:#cde4cd"/><path d="M8.27 15.24a3.5 3.5 0 0 0-.67.61 4.5 4.5 0 0 0-.61.82.56.56 0 0 0 0 .38.47.47 0 0 0 .23.3.49.49 0 0 0 .68-.18c.08-.13.18-.26.27-.39a4.3 4.3 0 0 1 .62-.65.57.57 0 0 0 .23-.3.53.53 0 0 0 0-.39.52.52 0 0 0-.75-.2" class="cls-4"/><path d="M16 8.55a8 8 0 0 0-.52-2 .32.32 0 0 0-.06-.18.39.39 0 0 0-.53-.23h-.05a6 6 0 0 0-4 2.22 7.8 7.8 0 0 0-.95 1.87h-.21l-.68.1h-.08a2 2 0 0 0-.44.62l-.65 1.07-.67 1.1a1.74 1.74 0 0 0-.34.76.62.62 0 0 0 .62.58.8.8 0 0 0 .33-.1l.39-.19 1-.51a2.4 2.4 0 0 0 1.29 1 2.66 2.66 0 0 0 1.59.52l.07 1 .05.58a.94.94 0 0 0 .11.5.62.62 0 0 0 1 0l.12-.24c.19-.34.37-.68.55-1s.48-.88.71-1.32l.23-.42A1 1 0 0 0 15 14a.42.42 0 0 0 0-.27 2.8 2.8 0 0 0-.44-.94 10 10 0 0 0 .83-1.24 5 5 0 0 0 .61-3m-1.57 2.72a15.8 15.8 0 0 1-2.47 3 4.6 4.6 0 0 1-1.24-.44l-.27-.16a1.8 1.8 0 0 1-.32-.3l-.11-.16a14.2 14.2 0 0 1 1.45-4 4.83 4.83 0 0 1 3.24-2 .6.6 0 0 1 0 .12A7 7 0 0 1 15 8.58a4.06 4.06 0 0 1-.62 2.69Z" class="cls-4"/><path d="M11 16.36a.51.51 0 0 0-.61.35 9 9 0 0 1-.27.93 2.8 2.8 0 0 1-.3.53.5.5 0 0 0-.05.38.5.5 0 0 0 .23.3.51.51 0 0 0 .69-.18 4.9 4.9 0 0 0 .67-1.67.52.52 0 0 0-.36-.64" class="cls-4"/><circle cx="12.67" cy="10.42" r="1.17" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="24" height="24"><defs><style>.cls-4{fill:#401968}</style></defs><circle cx="12" cy="12" r="9.25" style="fill:#e3e3fe"/><path id="border" d="M12 4a8 8 0 1 1-8 8 8 8 0 0 1 8-8m0-2.5A10.5 10.5 0 1 0 22.5 12 10.51 10.51 0 0 0 12 1.5" style="fill:#fff"/><path d="M14.93 6.57a6.26 6.26 0 0 0-3.66 1.88 15.6 15.6 0 0 0-1.88 4.83 2.35 2.35 0 0 0 1.17 1h.06a2.35 2.35 0 0 0 1.49.46 15.8 15.8 0 0 0 3.14-4.13 6.25 6.25 0 0 0-.32-4.04" style="fill:#cde4cd"/><path d="M8.27 15.24a3.5 3.5 0 0 0-.67.61 4.5 4.5 0 0 0-.61.82.56.56 0 0 0 0 .38.47.47 0 0 0 .23.3.49.49 0 0 0 .68-.18c.08-.13.18-.26.27-.39a4.3 4.3 0 0 1 .62-.65.57.57 0 0 0 .23-.3.53.53 0 0 0 0-.39.52.52 0 0 0-.75-.2" class="cls-4"/><path d="M16 8.55a8 8 0 0 0-.52-2 .32.32 0 0 0-.06-.18.39.39 0 0 0-.53-.23h-.05a6 6 0 0 0-4 2.22 7.8 7.8 0 0 0-.95 1.87h-.21l-.68.1h-.08a2 2 0 0 0-.44.62l-.65 1.07-.67 1.1a1.74 1.74 0 0 0-.34.76.62.62 0 0 0 .62.58.8.8 0 0 0 .33-.1l.39-.19 1-.51a2.4 2.4 0 0 0 1.29 1 2.66 2.66 0 0 0 1.59.52l.07 1 .05.58a.94.94 0 0 0 .11.5.62.62 0 0 0 1 0l.12-.24c.19-.34.37-.68.55-1s.48-.88.71-1.32l.23-.42A1 1 0 0 0 15 14a.42.42 0 0 0 0-.27 2.8 2.8 0 0 0-.44-.94 10 10 0 0 0 .83-1.24 5 5 0 0 0 .61-3m-1.57 2.72a15.8 15.8 0 0 1-2.47 3 4.6 4.6 0 0 1-1.24-.44l-.27-.16a1.8 1.8 0 0 1-.32-.3l-.11-.16a14.2 14.2 0 0 1 1.45-4 4.83 4.83 0 0 1 3.24-2 .6.6 0 0 1 0 .12A7 7 0 0 1 15 8.58a4.06 4.06 0 0 1-.62 2.69Z" class="cls-4"/><path d="M11 16.36a.51.51 0 0 0-.61.35 9 9 0 0 1-.27.93 2.8 2.8 0 0 1-.3.53.5.5 0 0 0-.05.38.5.5 0 0 0 .23.3.51.51 0 0 0 .69-.18 4.9 4.9 0 0 0 .67-1.67.52.52 0 0 0-.36-.64" class="cls-4"/><circle cx="12.67" cy="10.42" r="1.17" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"><circle cx="18" cy="18" r="14" style="fill:#e3e3fe"/><path d="M18 6A12 12 0 1 1 6 18 12 12 0 0 1 18 6m0-4a16 16 0 1 0 16 16A16 16 0 0 0 18 2"/><path d="M10.6 20.84h.07c-.09-.03-.14.04-.07 0m7.77 4.45c-.05.03-.03.07 0 0m-7.27-4.04a.1.1 0 0 1 0 .06c-.1.05-.01.05 0-.06M19 25.4v.09z" style="fill:none"/><path d="M23.07 12.2a12 12 0 0 0-.48-2.15l-.18-.49a8.15 8.15 0 0 0-5.74 3.52 23 23 0 0 0-2.44 6.75 3.3 3.3 0 0 0 1 1 5.06 5.06 0 0 0 2.56 1h.08l.13-.11c.36-.35.7-.72 1-1.08A24.3 24.3 0 0 0 22 17a7 7 0 0 0 1.07-4.8m-4 4.95a1.9 1.9 0 1 1 1.9-1.9 1.9 1.9 0 0 1-1.92 1.9Z" style="fill:#cde4cd"/><path d="M24.09 12.38a12.3 12.3 0 0 0-.87-3.48.24.24 0 0 0 0-.14.39.39 0 0 0-.53-.22h-.06a9.65 9.65 0 0 0-6.23 3.16 14.6 14.6 0 0 0-2.21 4.45 1.1 1.1 0 0 0-.36 0l-.79.16h-.14a2.7 2.7 0 0 0-.55.79l-.87 1.5-.88 1.5a2.05 2.05 0 0 0-.43 1 .65.65 0 0 0 1 .5c.18-.08.35-.18.53-.27l1.56-.8.25-.13a3.7 3.7 0 0 0 .61.69 4.6 4.6 0 0 0 1 .72c.07 0 .42.22.34.16a5 5 0 0 0 .6.37 4.1 4.1 0 0 0 1.79.43l.12 1.63.06.8a1.06 1.06 0 0 0 .13.58.65.65 0 0 0 1.1-.05c.06-.1.11-.22.17-.32l.75-1.41 1-1.8a3.3 3.3 0 0 0 .44-1 .4.4 0 0 0 0-.28 3.6 3.6 0 0 0-.49-1.15 22 22 0 0 0 1.61-2.14 8.1 8.1 0 0 0 1.35-5.25M10.67 20.8h-.07zm.4.51a.1.1 0 0 0 0-.06c.02.11-.07.11 0 .06m7.3 4c0 .07-.05 0 0 0m.63.2v-.11.09Zm.06-4.82c-.34.36-.68.73-1 1.08l-.13.11h-.08a5.06 5.06 0 0 1-2.56-1 3.3 3.3 0 0 1-1-1 23 23 0 0 1 2.44-6.75 8.15 8.15 0 0 1 5.74-3.52l.18.49a12 12 0 0 1 .48 2.15A7 7 0 0 1 22 17a24.3 24.3 0 0 1-2.94 3.67ZM21 15.25a1.9 1.9 0 1 1-1.9-1.9 1.9 1.9 0 0 1 1.9 1.9m-5.7 12.47a.56.56 0 0 1-.05.38 3.8 3.8 0 0 1-.78 1 .38.38 0 0 1-.22.13h-.13a.5.5 0 0 1-.35-.85 3.5 3.5 0 0 0 .32-.35 4 4 0 0 0 .29-.44.52.52 0 0 1 .3-.23.53.53 0 0 1 .39.05.5.5 0 0 1 .23.31m0-1.76a.48.48 0 0 1 .05-.39c.07-.11.12-.24.18-.36s.16-.45.23-.68a.5.5 0 0 1 .61-.35.53.53 0 0 1 .3.23.48.48 0 0 1 .05.39 5.4 5.4 0 0 1-.51 1.28.51.51 0 0 1-.68.18.52.52 0 0 1-.25-.26Zm-5.62.54a.53.53 0 0 1 0-.39A4.7 4.7 0 0 1 10.2 25a.62.62 0 0 1 .31-.22.5.5 0 0 1 .38.07.5.5 0 0 1 .22.31.5.5 0 0 1-.06.38 4.5 4.5 0 0 0-.35.6 3 3 0 0 0-.12.29.57.57 0 0 1-.24.29.58.58 0 0 1-.39 0 .57.57 0 0 1-.29-.22Zm1.49-2.79a.5.5 0 0 1 .06-.38 5.3 5.3 0 0 1 .95-1 .57.57 0 0 1 .36-.14.5.5 0 0 1 .35.17.49.49 0 0 1 0 .7 6 6 0 0 0-.66.64l-.12.17a.5.5 0 0 1-.31.21.54.54 0 0 1-.39-.06.5.5 0 0 1-.26-.31Z" style="fill:#401968"/></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"><circle cx="18" cy="18" r="14" style="fill:#e3e3fe"/><path d="M18 6A12 12 0 1 1 6 18 12 12 0 0 1 18 6m0-4a16 16 0 1 0 16 16A16 16 0 0 0 18 2" style="fill:#fff"/><path d="M10.6 20.84h.07c-.09-.03-.14.04-.07 0m7.77 4.45c-.05.03-.03.07 0 0m-7.27-4.04a.1.1 0 0 1 0 .06c-.1.05-.01.05 0-.06M19 25.4v.09z" style="fill:none"/><path d="M23.07 12.2a12 12 0 0 0-.48-2.15l-.18-.49a8.15 8.15 0 0 0-5.74 3.52 23 23 0 0 0-2.44 6.75 3.3 3.3 0 0 0 1 1 5.06 5.06 0 0 0 2.56 1h.08l.13-.11c.36-.35.7-.72 1-1.08A24.3 24.3 0 0 0 22 17a7 7 0 0 0 1.07-4.8m-4 4.95a1.9 1.9 0 1 1 1.9-1.9 1.9 1.9 0 0 1-1.92 1.9Z" style="fill:#cde4cd"/><path d="M24.09 12.38a12.3 12.3 0 0 0-.87-3.48.24.24 0 0 0 0-.14.39.39 0 0 0-.53-.22h-.06a9.65 9.65 0 0 0-6.23 3.16 14.6 14.6 0 0 0-2.21 4.45 1.1 1.1 0 0 0-.36 0l-.79.16h-.14a2.7 2.7 0 0 0-.55.79l-.87 1.5-.88 1.5a2.05 2.05 0 0 0-.43 1 .65.65 0 0 0 1 .5c.18-.08.35-.18.53-.27l1.56-.8.25-.13a3.7 3.7 0 0 0 .61.69 4.6 4.6 0 0 0 1 .72c.07 0 .42.22.34.16a5 5 0 0 0 .6.37 4.1 4.1 0 0 0 1.79.43l.12 1.63.06.8a1.06 1.06 0 0 0 .13.58.65.65 0 0 0 1.1-.05c.06-.1.11-.22.17-.32l.75-1.41 1-1.8a3.3 3.3 0 0 0 .44-1 .4.4 0 0 0 0-.28 3.6 3.6 0 0 0-.49-1.15 22 22 0 0 0 1.61-2.14 8.1 8.1 0 0 0 1.35-5.25M10.67 20.8h-.07zm.4.51a.1.1 0 0 0 0-.06c.02.11-.07.11 0 .06m7.3 4c0 .07-.05 0 0 0m.63.2v-.11.09Zm.06-4.82c-.34.36-.68.73-1 1.08l-.13.11h-.08a5.06 5.06 0 0 1-2.56-1 3.3 3.3 0 0 1-1-1 23 23 0 0 1 2.44-6.75 8.15 8.15 0 0 1 5.74-3.52l.18.49a12 12 0 0 1 .48 2.15A7 7 0 0 1 22 17a24.3 24.3 0 0 1-2.94 3.67ZM21 15.25a1.9 1.9 0 1 1-1.9-1.9 1.9 1.9 0 0 1 1.9 1.9m-5.7 12.47a.56.56 0 0 1-.05.38 3.8 3.8 0 0 1-.78 1 .38.38 0 0 1-.22.13h-.13a.5.5 0 0 1-.35-.85 3.5 3.5 0 0 0 .32-.35 4 4 0 0 0 .29-.44.52.52 0 0 1 .3-.23.53.53 0 0 1 .39.05.5.5 0 0 1 .23.31m0-1.76a.48.48 0 0 1 .05-.39c.07-.11.12-.24.18-.36s.16-.45.23-.68a.5.5 0 0 1 .61-.35.53.53 0 0 1 .3.23.48.48 0 0 1 .05.39 5.4 5.4 0 0 1-.51 1.28.51.51 0 0 1-.68.18.52.52 0 0 1-.25-.26Zm-5.62.54a.53.53 0 0 1 0-.39A4.7 4.7 0 0 1 10.2 25a.62.62 0 0 1 .31-.22.5.5 0 0 1 .38.07.5.5 0 0 1 .22.31.5.5 0 0 1-.06.38 4.5 4.5 0 0 0-.35.6 3 3 0 0 0-.12.29.57.57 0 0 1-.24.29.58.58 0 0 1-.39 0 .57.57 0 0 1-.29-.22Zm1.49-2.79a.5.5 0 0 1 .06-.38 5.3 5.3 0 0 1 .95-1 .57.57 0 0 1 .36-.14.5.5 0 0 1 .35.17.49.49 0 0 1 0 .7 6 6 0 0 0-.66.64l-.12.17a.5.5 0 0 1-.31.21.54.54 0 0 1-.39-.06.5.5 0 0 1-.26-.31Z" style="fill:#401968"/></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 14.5a1.73 1.73 0 0 1-.86-.23L3 11.88a1.73 1.73 0 0 1-.86-1.49V5.61A1.73 1.73 0 0 1 3 4.12l4.14-2.39a1.72 1.72 0 0 1 1.72 0L13 4.12a1.73 1.73 0 0 1 .86 1.49v4.78a1.73 1.73 0 0 1-.86 1.49l-4.14 2.39a1.73 1.73 0 0 1-.86.23" style="fill:#cde4cd"/><path d="M8 2a1.2 1.2 0 0 1 .61.16l4.14 2.39a1.22 1.22 0 0 1 .61 1.06v4.78a1.22 1.22 0 0 1-.61 1.06l-4.14 2.39a1.24 1.24 0 0 1-1.22 0l-4.14-2.39a1.22 1.22 0 0 1-.61-1.06V5.61a1.22 1.22 0 0 1 .61-1.06l4.14-2.39A1.2 1.2 0 0 1 8 2m0-1a2.15 2.15 0 0 0-1.11.3L2.75 3.69a2.23 2.23 0 0 0-1.11 1.92v4.78a2.23 2.23 0 0 0 1.11 1.92l4.14 2.39a2.2 2.2 0 0 0 2.22 0l4.14-2.39a2.23 2.23 0 0 0 1.11-1.92V5.61a2.23 2.23 0 0 0-1.11-1.92L9.11 1.3A2.15 2.15 0 0 0 8 1"/><path d="M9.77 8.81 12 7.96 9.77 7.1l.74-1.65-1.65.73L8 3.96l-.86 2.22-1.64-.73.73 1.65L4 7.96l2.23.85-.73 1.65 1.64-.73.86 2.23.86-2.23 1.65.73z" style="fill:#fcf6c4"/><path d="M8 12.46a.51.51 0 0 1-.47-.33l-.66-1.73-1.17.52a.51.51 0 0 1-.56-.11.47.47 0 0 1-.1-.55l.52-1.17-1.74-.67a.5.5 0 0 1 0-.93l1.74-.67L5 5.65a.47.47 0 0 1 .1-.55.51.51 0 0 1 .6-.1l1.17.52.66-1.73a.52.52 0 0 1 .94 0l.66 1.73L10.3 5a.51.51 0 0 1 .56.11.47.47 0 0 1 .1.55l-.52 1.17 1.74.67a.5.5 0 0 1 0 .93l-1.74.67.56 1.16a.47.47 0 0 1-.1.55.51.51 0 0 1-.56.11l-1.21-.52-.66 1.73a.51.51 0 0 1-.47.33m-.86-3.23a.4.4 0 0 1 .19 0 .48.48 0 0 1 .28.28l.39 1 .39-1a.48.48 0 0 1 .28-.28.45.45 0 0 1 .39 0l.46.21-.2-.44a.48.48 0 0 1 0-.39.5.5 0 0 1 .28-.28l1-.38-1-.39a.5.5 0 0 1-.28-.28.48.48 0 0 1 0-.39l.2-.47-.46.21a.51.51 0 0 1-.67-.28l-.39-1-.39 1a.48.48 0 0 1-.28.28.44.44 0 0 1-.39 0l-.46-.21.2.47a.48.48 0 0 1 0 .39.5.5 0 0 1-.28.28L5.39 8l1 .38a.5.5 0 0 1 .28.28.48.48 0 0 1 0 .39l-.2.47.46-.21a.45.45 0 0 1 .21-.08" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 14.5a1.73 1.73 0 0 1-.86-.23L3 11.88a1.73 1.73 0 0 1-.86-1.49V5.61A1.73 1.73 0 0 1 3 4.12l4.14-2.39a1.72 1.72 0 0 1 1.72 0L13 4.12a1.73 1.73 0 0 1 .86 1.49v4.78a1.73 1.73 0 0 1-.86 1.49l-4.14 2.39a1.73 1.73 0 0 1-.86.23" style="fill:#cde4cd"/><path d="M8 2a1.2 1.2 0 0 1 .61.16l4.14 2.39a1.22 1.22 0 0 1 .61 1.06v4.78a1.22 1.22 0 0 1-.61 1.06l-4.14 2.39a1.24 1.24 0 0 1-1.22 0l-4.14-2.39a1.22 1.22 0 0 1-.61-1.06V5.61a1.22 1.22 0 0 1 .61-1.06l4.14-2.39A1.2 1.2 0 0 1 8 2m0-1a2.15 2.15 0 0 0-1.11.3L2.75 3.69a2.23 2.23 0 0 0-1.11 1.92v4.78a2.23 2.23 0 0 0 1.11 1.92l4.14 2.39a2.2 2.2 0 0 0 2.22 0l4.14-2.39a2.23 2.23 0 0 0 1.11-1.92V5.61a2.23 2.23 0 0 0-1.11-1.92L9.11 1.3A2.15 2.15 0 0 0 8 1" style="fill:#fff"/><path d="M9.77 8.81 12 7.96 9.77 7.1l.74-1.65-1.65.73L8 3.96l-.86 2.22-1.64-.73.73 1.65L4 7.96l2.23.85-.73 1.65 1.64-.73.86 2.23.86-2.23 1.65.73z" style="fill:#fcf6c4"/><path d="M8 12.46a.51.51 0 0 1-.47-.33l-.66-1.73-1.17.52a.51.51 0 0 1-.56-.11.47.47 0 0 1-.1-.55l.52-1.17-1.74-.67a.5.5 0 0 1 0-.93l1.74-.67L5 5.65a.47.47 0 0 1 .1-.55.51.51 0 0 1 .6-.1l1.17.52.66-1.73a.52.52 0 0 1 .94 0l.66 1.73L10.3 5a.51.51 0 0 1 .56.11.47.47 0 0 1 .1.55l-.52 1.17 1.74.67a.5.5 0 0 1 0 .93l-1.74.67.56 1.16a.47.47 0 0 1-.1.55.51.51 0 0 1-.56.11l-1.21-.52-.66 1.73a.51.51 0 0 1-.47.33m-.86-3.23a.4.4 0 0 1 .19 0 .48.48 0 0 1 .28.28l.39 1 .39-1a.48.48 0 0 1 .28-.28.45.45 0 0 1 .39 0l.46.21-.2-.44a.48.48 0 0 1 0-.39.5.5 0 0 1 .28-.28l1-.38-1-.39a.5.5 0 0 1-.28-.28.48.48 0 0 1 0-.39l.2-.47-.46.21a.51.51 0 0 1-.67-.28l-.39-1-.39 1a.48.48 0 0 1-.28.28.44.44 0 0 1-.39 0l-.46-.21.2.47a.48.48 0 0 1 0 .39.5.5 0 0 1-.28.28L5.39 8l1 .38a.5.5 0 0 1 .28.28.48.48 0 0 1 0 .39l-.2.47.46-.21a.45.45 0 0 1 .21-.08" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="160" height="160"><path d="M150 111.11V48.79a16 16 0 0 0-8-13.86L88 3.78a16 16 0 0 0-16 0L18 34.93a16 16 0 0 0-8 13.86v62.32A16 16 0 0 0 18 125l54 31.16a16 16 0 0 0 16 0L142 125a16 16 0 0 0 8-13.89" style="fill:#cde4cd"/><path d="M142 34.93 88 3.78a16 16 0 0 0-16 0L18 34.93a16 16 0 0 0-8 13.86v26.69c50.89 12.29 95.68 33.77 121 55.78l11-6.26a16 16 0 0 0 8-13.85V48.79a16 16 0 0 0-8-13.86" style="fill:#aca"/><path d="M91.67 97.25 69.3 91.18l7.7-13.5-13.5 7.74-6.03-22.37-6.07 22.37-13.5-7.74 7.73 13.5-22.37 6.07 22.37 6.07-7.73 13.5 13.5-7.74 6.07 22.38 6.06-22.38L77 116.82l-7.73-13.5Z" style="fill:#fcf6c4"/><path d="M106.16 21.29c-1.47 1.57-2.93 3.17-4.35 4.79a2 2 0 0 1-1.42.58 2 2 0 0 1-1.39-.58 2 2 0 0 1-.59-1.42 2.14 2.14 0 0 1 .59-1.41c1.43-1.62 2.88-3.21 4.35-4.79a2 2 0 0 1 1.42-.58 2 2 0 0 1 1.41.58 2 2 0 0 1 .59 1.42 2.07 2.07 0 0 1-.61 1.41m-9.51 10.87a2.12 2.12 0 0 0 .59-1.41 2 2 0 0 0-.59-1.42 2 2 0 0 0-2.83 0c-1.69 2.08-3.34 4.2-4.95 6.34a2 2 0 0 0-.2 1.54 2.07 2.07 0 0 0 .92 1.19 2 2 0 0 0 1.54.2 2.35 2.35 0 0 0 1.2-.91l1.33-1.76c.99-1.27 1.98-2.52 2.99-3.77M80.53 51.85a2 2 0 0 0 2.74-.71q2.13-3.59 4.46-7a2 2 0 0 0-.73-2.76 2 2 0 0 0-2.73.72q-2.34 3.45-4.47 7a2 2 0 0 0 .73 2.75m-1.72 3a2 2 0 0 0-2.73.72c-1.29 2.25-2.57 4.5-3.86 6.74a2 2 0 1 0 3.45 2c1.3-2.24 2.57-4.49 3.86-6.74a2 2 0 0 0-.72-2.76Zm45.93-17.45a2 2 0 1 0-2-3.46q-2.91 1.86-5.76 3.81A2.16 2.16 0 0 0 116 39a2.06 2.06 0 0 0 .2 1.54 2 2 0 0 0 2.74.72q2.89-2.02 5.8-3.86M104 48.46a2 2 0 0 0 .58 1.42 2 2 0 0 0 1.42.58 2.25 2.25 0 0 0 1.41-.58q1.76-1.43 3.54-2.8c.54-.42 1.08-.84 1.63-1.25a2.22 2.22 0 0 0 .92-1.19 2 2 0 0 0-1.4-2.47 1.93 1.93 0 0 0-1.54.21c-2 1.52-4 3.07-6 4.67a2 2 0 0 0-.56 1.41m-7.83 11.31c1.7-1.63 3.44-3.22 5.2-4.78a2 2 0 0 0 0-2.83 2.05 2.05 0 0 0-2.83 0c-1.76 1.56-3.5 3.16-5.2 4.78a2 2 0 1 0 2.83 2.83m-5 4.15a2 2 0 0 0-3.41-1.41q-2.34 2.43-4.59 4.94a2.13 2.13 0 0 0-.58 1.42 2 2 0 0 0 2 2 2.05 2.05 0 0 0 1.41-.59q2.25-2.5 4.59-4.94a2.08 2.08 0 0 0 .57-1.42Zm47.75-11.35c-2.5.84-5 1.73-7.47 2.67a2.14 2.14 0 0 0-1.19.92 2.07 2.07 0 0 0-.26 1.54 2 2 0 0 0 2.46 1.4c2.48-.94 5-1.84 7.48-2.68a2 2 0 0 0-1.07-3.85ZM120.8 64.73c1.84-.94 3.7-1.87 5.56-2.77a2 2 0 0 0 .92-1.2 2 2 0 0 0-1.4-2.46 2.3 2.3 0 0 0-1.54.2c-1.86.91-3.72 1.84-5.56 2.78a2 2 0 0 0-.72 2.73 2 2 0 0 0 2.74.72m-14 6.86c2.18-1.15 4.36-2.27 6.57-3.36a2 2 0 0 0 .72-2.74 2.05 2.05 0 0 0-2.74-.71q-3.3 1.62-6.56 3.36a2 2 0 0 0-.72 2.73 2 2 0 0 0 2.72.72Zm-13.33 7.55q3.32-2 6.7-3.93a2 2 0 0 0-2-3.45q-3.39 1.9-6.7 3.92a2 2 0 0 0 2 3.46m36.27-49.44c-2.23 1.28-.22 4.74 2 3.45 1.2-.69 2.41-1.36 3.62-2l-4-2.33c-.55.28-1.09.57-1.62.88M150 49.27c-1.3.34-2.6.69-3.9 1.07-2.47.71-1.42 4.57 1.06 3.85 1-.27 1.89-.52 2.84-.77Zm-56.36 48a1.8 1.8 0 0 1-1.12 1.81 1.5 1.5 0 0 1-.29.11h-.18l-2.6.7-17.08 4.64 6.44 11.23a2 2 0 0 1-2.81 2.79l-11.23-6.44-.09.31L59.39 132a2 2 0 0 1-3.85 0c-.26-.93-.51-1.87-.76-2.8q-2.33-8.55-4.64-17.08l-11.23 6.44a2 2 0 0 1-2.74-2.74l6.44-11.23-.31-.09-19.57-5.32a2 2 0 0 1 0-3.86l2.8-.76 17.08-4.63q-3.22-5.61-6.44-11.24A2 2 0 0 1 38.91 76l11.23 6.4.09-.31 5.31-19.57a2 2 0 0 1 3.85 0c.26.93.51 1.87.76 2.8q2.33 8.54 4.64 17.08L76 76a2 2 0 0 1 2.74 2.73q-3.23 5.63-6.44 11.24l.31.09L92 95.27a1.7 1.7 0 0 1 .5.17 1.8 1.8 0 0 1 1.11 1.82Zm-29.07 10.1 7.09 4.06-4.06-7.09a2 2 0 0 1 1.19-2.94l2.81-.76L84 97.25l-15.24-4.14a2 2 0 0 1-1.19-2.94l4.06-7.08-7.09 4.06A2 2 0 0 1 61.61 86c-.26-.93-.51-1.87-.76-2.8q-1.7-6.23-3.38-12.46-2.08 7.59-4.15 15.26a2 2 0 0 1-2.93 1.2l-7.09-4.11 4.06 7.08a2 2 0 0 1-1.19 2.94l-2.81.76-12.46 3.38 15.27 4.14a2 2 0 0 1 1.19 2.94l-4.06 7.09 7.09-4.06a2 2 0 0 1 2.93 1.19l.77 2.81q1.68 6.23 3.38 12.46l4.14-15.27a2 2 0 0 1 2.93-1.19Zm66.74-15-5.61-1.52a.15.15 0 0 1-.11-.11L124 85.16a.83.83 0 0 0-.81-.62.84.84 0 0 0-.81.61l-1.52 5.61a.15.15 0 0 1-.12.11l-5.6 1.52a.84.84 0 0 0 0 1.62l5.6 1.52a.15.15 0 0 1 .12.12l1.52 5.6a.83.83 0 0 0 .81.62.83.83 0 0 0 .81-.62l1.52-5.6a.15.15 0 0 1 .12-.12l5.6-1.52a.84.84 0 0 0 0-1.62ZM57.43 38.25l-3.57-1-1-3.59a.65.65 0 0 0-.63-.48.65.65 0 0 0-.63.48l-1 3.58-3.58 1a.65.65 0 0 0-.48.64.64.64 0 0 0 .48.63l3.58 1 1 3.59a.64.64 0 0 0 .63.48.63.63 0 0 0 .63-.48l1-3.58 3.58-1a.65.65 0 0 0 .49-.63.66.66 0 0 0-.5-.64" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M12 21.25a2.8 2.8 0 0 1-1.44-.39L5 17.68a2.91 2.91 0 0 1-1.44-2.5V8.82A2.91 2.91 0 0 1 5 6.32l5.52-3.18a2.85 2.85 0 0 1 2.88 0L19 6.32a2.91 2.91 0 0 1 1.44 2.5v6.36a2.91 2.91 0 0 1-1.44 2.5l-5.52 3.18a2.8 2.8 0 0 1-1.48.39" style="fill:#cde4cd"/><path d="M12 4a1.63 1.63 0 0 1 .82.22l5.51 3.18a1.63 1.63 0 0 1 .82 1.42v6.36a1.63 1.63 0 0 1-.82 1.42l-5.51 3.18a1.64 1.64 0 0 1-1.64 0L5.67 16.6a1.63 1.63 0 0 1-.82-1.42V8.82a1.63 1.63 0 0 1 .82-1.42l5.51-3.18A1.63 1.63 0 0 1 12 4m0-2.5a4.2 4.2 0 0 0-2.07.55L4.42 5.24a4.12 4.12 0 0 0-2.07 3.58v6.36a4.12 4.12 0 0 0 2.07 3.58L9.93 22a4.17 4.17 0 0 0 4.14 0l5.51-3.19a4.12 4.12 0 0 0 2.07-3.58V8.82a4.12 4.12 0 0 0-2.07-3.58l-5.51-3.19A4.2 4.2 0 0 0 12 1.5" style="fill:#2e2e2e"/><path d="m17.5 12-3.1-1.19.54-1.75-1.75.54L12 6.5l-1.19 3.1-1.75-.54.54 1.75L6.5 12l3.1 1.19-.54 1.75 1.75-.54L12 17.5l1.19-3.1 1.75.54-.54-1.75Z" style="fill:#fcf6c4"/><path d="M18 12a.44.44 0 0 0-.41-.47l-2.53-1c.13-.44.27-.88.4-1.32a.5.5 0 0 0-.61-.61l-1.36.4-1-2.61a.5.5 0 0 0-1 0L10.51 9l-1.32-.4a.5.5 0 0 0-.61.61l.42 1.3-2.61 1a.5.5 0 0 0 0 1l2.61 1-.4 1.32a.5.5 0 0 0 .61.61l1.32-.4 1 2.61a.5.5 0 0 0 1 0l1-2.61 1.32.4a.5.5 0 0 0 .61-.61L15 13.49l2.53-1A.45.45 0 0 0 18 12m-5.26 2.27c-.24.61-.47 1.23-.71 1.84-.24-.61-.47-1.23-.71-1.84a.5.5 0 0 0-.61-.35l-.87.27.27-.87a.51.51 0 0 0-.35-.61L7.89 12l1.84-.71a.5.5 0 0 0 .35-.61l-.27-.87.87.27a.51.51 0 0 0 .61-.35c.24-.61.47-1.23.71-1.84.24.61.47 1.23.71 1.84a.5.5 0 0 0 .61.35l.87-.27-.27.87a.51.51 0 0 0 .35.61l1.84.71-1.84.71a.5.5 0 0 0-.35.61l.27.87-.87-.27a.51.51 0 0 0-.61.35Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M12 21.25a2.8 2.8 0 0 1-1.44-.39L5 17.68a2.91 2.91 0 0 1-1.44-2.5V8.82A2.91 2.91 0 0 1 5 6.32l5.52-3.18a2.85 2.85 0 0 1 2.88 0L19 6.32a2.91 2.91 0 0 1 1.44 2.5v6.36a2.91 2.91 0 0 1-1.44 2.5l-5.52 3.18a2.8 2.8 0 0 1-1.48.39" style="fill:#cde4cd"/><path d="M12 4a1.63 1.63 0 0 1 .82.22l5.51 3.18a1.63 1.63 0 0 1 .82 1.42v6.36a1.63 1.63 0 0 1-.82 1.42l-5.51 3.18a1.64 1.64 0 0 1-1.64 0L5.67 16.6a1.63 1.63 0 0 1-.82-1.42V8.82a1.63 1.63 0 0 1 .82-1.42l5.51-3.18A1.63 1.63 0 0 1 12 4m0-2.5a4.2 4.2 0 0 0-2.07.55L4.42 5.24a4.12 4.12 0 0 0-2.07 3.58v6.36a4.12 4.12 0 0 0 2.07 3.58L9.93 22a4.17 4.17 0 0 0 4.14 0l5.51-3.19a4.12 4.12 0 0 0 2.07-3.58V8.82a4.12 4.12 0 0 0-2.07-3.58l-5.51-3.19A4.2 4.2 0 0 0 12 1.5" style="fill:#fff"/><path d="m17.5 12-3.1-1.19.54-1.75-1.75.54L12 6.5l-1.19 3.1-1.75-.54.54 1.75L6.5 12l3.1 1.19-.54 1.75 1.75-.54L12 17.5l1.19-3.1 1.75.54-.54-1.75Z" style="fill:#fcf6c4"/><path d="M18 12a.44.44 0 0 0-.41-.47l-2.53-1c.13-.44.27-.88.4-1.32a.5.5 0 0 0-.61-.61l-1.36.4-1-2.61a.5.5 0 0 0-1 0L10.51 9l-1.32-.4a.5.5 0 0 0-.61.61l.42 1.3-2.61 1a.5.5 0 0 0 0 1l2.61 1-.4 1.32a.5.5 0 0 0 .61.61l1.32-.4 1 2.61a.5.5 0 0 0 1 0l1-2.61 1.32.4a.5.5 0 0 0 .61-.61L15 13.49l2.53-1A.45.45 0 0 0 18 12m-5.26 2.27c-.24.61-.47 1.23-.71 1.84-.24-.61-.47-1.23-.71-1.84a.5.5 0 0 0-.61-.35l-.87.27.27-.87a.51.51 0 0 0-.35-.61L7.89 12l1.84-.71a.5.5 0 0 0 .35-.61l-.27-.87.87.27a.51.51 0 0 0 .61-.35c.24-.61.47-1.23.71-1.84.24.61.47 1.23.71 1.84a.5.5 0 0 0 .61.35l.87-.27-.27.87a.51.51 0 0 0 .35.61l1.84.71-1.84.71a.5.5 0 0 0-.35.61l.27.87-.87-.27a.51.51 0 0 0-.61.35Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"><path d="M18 32a4.5 4.5 0 0 1-2.23-.6L7.5 26.63a4.46 4.46 0 0 1-2.22-3.86v-9.54A4.46 4.46 0 0 1 7.5 9.37l8.27-4.77a4.44 4.44 0 0 1 4.46 0l8.27 4.77a4.46 4.46 0 0 1 2.22 3.86v9.54a4.46 4.46 0 0 1-2.22 3.86l-8.27 4.77A4.5 4.5 0 0 1 18 32" style="fill:#cde4cd"/><path d="M18 6a2.47 2.47 0 0 1 1.23.33l8.26 4.77a2.46 2.46 0 0 1 1.23 2.13v9.54a2.46 2.46 0 0 1-1.23 2.13l-8.26 4.77a2.46 2.46 0 0 1-2.46 0L8.51 24.9a2.46 2.46 0 0 1-1.23-2.13v-9.54a2.46 2.46 0 0 1 1.23-2.13l8.26-4.77A2.47 2.47 0 0 1 18 6m0-4a6.53 6.53 0 0 0-3.23.86L6.51 7.64a6.48 6.48 0 0 0-3.23 5.59v9.54a6.48 6.48 0 0 0 3.23 5.59l8.26 4.78a6.5 6.5 0 0 0 6.46 0l8.26-4.78a6.48 6.48 0 0 0 3.23-5.59v-9.54a6.48 6.48 0 0 0-3.23-5.59l-8.26-4.78A6.53 6.53 0 0 0 18 2"/><path d="m16.84 19.48.3-1-1 .29a.51.51 0 0 1-.62-.34c-.26-.68-.51-1.35-.77-2-.26.67-.52 1.34-.77 2a.51.51 0 0 1-.62.34l-1-.29.3 1a.51.51 0 0 1-.35.61l-2 .78 2 .77a.52.52 0 0 1 .35.62l-.3.95 1-.29a.51.51 0 0 1 .62.35c.25.67.51 1.34.77 2l.77-2a.51.51 0 0 1 .62-.35l1 .29-.3-.95a.45.45 0 0 1 .26-.56s0-.05.09-.06l2-.77-2-.78a.51.51 0 0 1-.35-.61" style="fill:#fcf6c4"/><path d="M20.61 10.74c-.27.41-.52.82-.77 1.24a.51.51 0 0 1-.69.18.52.52 0 0 1-.18-.69l.77-1.24a.52.52 0 0 1 .69-.18.51.51 0 0 1 .18.69m-1.91 2.32a.5.5 0 0 0-.69.18l-.6 1.16a.58.58 0 0 0-.05.39.52.52 0 0 0 .23.3.51.51 0 0 0 .69-.18c.19-.4.39-.78.6-1.17a.56.56 0 0 0 .05-.38.54.54 0 0 0-.23-.3m4.7-.91a.53.53 0 0 0-.15-.35.5.5 0 0 0-.35-.15.6.6 0 0 0-.36.15l-1.06 1a.5.5 0 0 0 0 .71.5.5 0 0 0 .35.15.56.56 0 0 0 .35-.15c.35-.34.71-.67 1.07-1a.53.53 0 0 0 .15-.36m-3.34 2c-.3.32-.6.64-.89 1a.57.57 0 0 0-.14.36.5.5 0 0 0 .14.35.53.53 0 0 0 .36.15.5.5 0 0 0 .35-.15c.29-.33.58-.65.88-1a.5.5 0 0 0 .15-.35.5.5 0 0 0-.15-.36.51.51 0 0 0-.7 0m3.85 1.57c.44-.22.88-.43 1.33-.63a.53.53 0 0 0 .23-.3.5.5 0 0 0-.06-.38.48.48 0 0 0-.29-.23h-.14a.45.45 0 0 0-.25.07l-1.32.62a.52.52 0 0 0-.23.3.53.53 0 0 0 .05.39.51.51 0 0 0 .68.19Zm-1.61.66a.5.5 0 0 0-.05-.39.51.51 0 0 0-.68-.18l-1.14.65a.52.52 0 0 0-.23.3.5.5 0 0 0 .73.56l1.14-.65a.5.5 0 0 0 .23-.26Zm-1.19-8.11a.57.57 0 0 0-.14.35.54.54 0 0 0 .14.36.52.52 0 0 0 .36.14.46.46 0 0 0 .35-.12l.63-.79-.87-.5Zm3.11 2.07A.51.51 0 0 0 24 11a.57.57 0 0 0 .3.23.58.58 0 0 0 .39 0c.43-.33.86-.64 1.3-1l-.94-.55Zm4.5 2.89a2.4 2.4 0 0 0-.18-.88c-.62.28-1.24.58-1.86.88a.5.5 0 0 0 .51.86l1.54-.73Zm-8 8.12-2.78 1.07.43 1.42a.5.5 0 0 1-.61.61L16.34 24c-.36.92-.71 1.85-1.07 2.78a.5.5 0 0 1-1 0c-.36-.93-.72-1.86-1.07-2.78l-1.42.43a.5.5 0 0 1-.62-.61l.44-1.42-2.74-1.05a.51.51 0 0 1 0-1l2.78-1.07c-.15-.47-.29-.94-.44-1.41a.51.51 0 0 1 .62-.62l1.42.44 1.07-2.79a.5.5 0 0 1 1 0l1.07 2.79 1.42-.44a.5.5 0 0 1 .61.62c-.14.47-.29.94-.43 1.41l2.78 1.07a.51.51 0 0 1-.04 1m-1.52-.48-2-.78a.51.51 0 0 1-.35-.61l.3-1-1 .29a.51.51 0 0 1-.62-.34c-.26-.68-.51-1.35-.77-2-.26.67-.52 1.34-.77 2a.51.51 0 0 1-.62.34l-1-.29.3 1a.51.51 0 0 1-.35.61l-2 .78 2 .77a.52.52 0 0 1 .35.62l-.3.95 1-.29a.51.51 0 0 1 .62.35c.25.67.51 1.34.77 2l.77-2a.51.51 0 0 1 .62-.35l1 .29-.3-.95a.45.45 0 0 1 .26-.56s0-.05.09-.06Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"><path d="M18 32a4.5 4.5 0 0 1-2.23-.6L7.5 26.63a4.46 4.46 0 0 1-2.22-3.86v-9.54A4.46 4.46 0 0 1 7.5 9.37l8.27-4.77a4.44 4.44 0 0 1 4.46 0l8.27 4.77a4.46 4.46 0 0 1 2.22 3.86v9.54a4.46 4.46 0 0 1-2.22 3.86l-8.27 4.77A4.5 4.5 0 0 1 18 32" style="fill:#cde4cd"/><path d="M18 6a2.47 2.47 0 0 1 1.23.33l8.26 4.77a2.46 2.46 0 0 1 1.23 2.13v9.54a2.46 2.46 0 0 1-1.23 2.13l-8.26 4.77a2.46 2.46 0 0 1-2.46 0L8.51 24.9a2.46 2.46 0 0 1-1.23-2.13v-9.54a2.46 2.46 0 0 1 1.23-2.13l8.26-4.77A2.47 2.47 0 0 1 18 6m0-4a6.53 6.53 0 0 0-3.23.86L6.51 7.64a6.48 6.48 0 0 0-3.23 5.59v9.54a6.48 6.48 0 0 0 3.23 5.59l8.26 4.78a6.5 6.5 0 0 0 6.46 0l8.26-4.78a6.48 6.48 0 0 0 3.23-5.59v-9.54a6.48 6.48 0 0 0-3.23-5.59l-8.26-4.78A6.53 6.53 0 0 0 18 2" style="fill:#fff"/><path d="m16.84 19.48.3-1-1 .29a.51.51 0 0 1-.62-.34c-.26-.68-.51-1.35-.77-2-.26.67-.52 1.34-.77 2a.51.51 0 0 1-.62.34l-1-.29.3 1a.51.51 0 0 1-.35.61l-2 .78 2 .77a.52.52 0 0 1 .35.62l-.3.95 1-.29a.51.51 0 0 1 .62.35c.25.67.51 1.34.77 2l.77-2a.51.51 0 0 1 .62-.35l1 .29-.3-.95a.45.45 0 0 1 .26-.56s0-.05.09-.06l2-.77-2-.78a.51.51 0 0 1-.35-.61" style="fill:#fcf6c4"/><path d="M20.61 10.74c-.27.41-.52.82-.77 1.24a.51.51 0 0 1-.69.18.52.52 0 0 1-.18-.69l.77-1.24a.52.52 0 0 1 .69-.18.51.51 0 0 1 .18.69m-1.91 2.32a.5.5 0 0 0-.69.18l-.6 1.16a.58.58 0 0 0-.05.39.52.52 0 0 0 .23.3.51.51 0 0 0 .69-.18c.19-.4.39-.78.6-1.17a.56.56 0 0 0 .05-.38.54.54 0 0 0-.23-.3m4.7-.91a.53.53 0 0 0-.15-.35.5.5 0 0 0-.35-.15.6.6 0 0 0-.36.15l-1.06 1a.5.5 0 0 0 0 .71.5.5 0 0 0 .35.15.56.56 0 0 0 .35-.15c.35-.34.71-.67 1.07-1a.53.53 0 0 0 .15-.36m-3.34 2c-.3.32-.6.64-.89 1a.57.57 0 0 0-.14.36.5.5 0 0 0 .14.35.53.53 0 0 0 .36.15.5.5 0 0 0 .35-.15c.29-.33.58-.65.88-1a.5.5 0 0 0 .15-.35.5.5 0 0 0-.15-.36.51.51 0 0 0-.7 0m3.85 1.57c.44-.22.88-.43 1.33-.63a.53.53 0 0 0 .23-.3.5.5 0 0 0-.06-.38.48.48 0 0 0-.29-.23h-.14a.45.45 0 0 0-.25.07l-1.32.62a.52.52 0 0 0-.23.3.53.53 0 0 0 .05.39.51.51 0 0 0 .68.19Zm-1.61.66a.5.5 0 0 0-.05-.39.51.51 0 0 0-.68-.18l-1.14.65a.52.52 0 0 0-.23.3.5.5 0 0 0 .73.56l1.14-.65a.5.5 0 0 0 .23-.26Zm-1.19-8.11a.57.57 0 0 0-.14.35.54.54 0 0 0 .14.36.52.52 0 0 0 .36.14.46.46 0 0 0 .35-.12l.63-.79-.87-.5Zm3.11 2.07A.51.51 0 0 0 24 11a.57.57 0 0 0 .3.23.58.58 0 0 0 .39 0c.43-.33.86-.64 1.3-1l-.94-.55Zm4.5 2.89a2.4 2.4 0 0 0-.18-.88c-.62.28-1.24.58-1.86.88a.5.5 0 0 0 .51.86l1.54-.73Zm-8 8.12-2.78 1.07.43 1.42a.5.5 0 0 1-.61.61L16.34 24c-.36.92-.71 1.85-1.07 2.78a.5.5 0 0 1-1 0c-.36-.93-.72-1.86-1.07-2.78l-1.42.43a.5.5 0 0 1-.62-.61l.44-1.42-2.74-1.05a.51.51 0 0 1 0-1l2.78-1.07c-.15-.47-.29-.94-.44-1.41a.51.51 0 0 1 .62-.62l1.42.44 1.07-2.79a.5.5 0 0 1 1 0l1.07 2.79 1.42-.44a.5.5 0 0 1 .61.62c-.14.47-.29.94-.43 1.41l2.78 1.07a.51.51 0 0 1-.04 1m-1.52-.48-2-.78a.51.51 0 0 1-.35-.61l.3-1-1 .29a.51.51 0 0 1-.62-.34c-.26-.68-.51-1.35-.77-2-.26.67-.52 1.34-.77 2a.51.51 0 0 1-.62.34l-1-.29.3 1a.51.51 0 0 1-.35.61l-2 .78 2 .77a.52.52 0 0 1 .35.62l-.3.95 1-.29a.51.51 0 0 1 .62.35c.25.67.51 1.34.77 2l.77-2a.51.51 0 0 1 .62-.35l1 .29-.3-.95a.45.45 0 0 1 .26-.56s0-.05.09-.06Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="16" height="16"><defs><style>.cls-2{fill:#6d2313}</style></defs><path d="M7.71 14.07C7.46 13.9 1.5 9.63 1.5 5.33A3.51 3.51 0 0 1 5 1.83a4 4 0 0 1 .68.07 3.5 3.5 0 0 1 1.8 1c.18.18.35.36.52.56a7 7 0 0 1 .53-.57 3.5 3.5 0 0 1 1.13-.79 3.46 3.46 0 0 1 2.68 0 3.4 3.4 0 0 1 1.13.76A3.4 3.4 0 0 1 14.23 4a3.5 3.5 0 0 1 .27 1.34c0 4.3-6 8.57-6.21 8.74l-.29.2Z" style="fill:#f5d7d7"/><path d="M5 2.33a3 3 0 0 1 .59.06 3 3 0 0 1 1.53.82 7.7 7.7 0 0 1 .88 1 7.7 7.7 0 0 1 .88-1A3 3 0 0 1 11 2.33a3.1 3.1 0 0 1 1.15.23 3 3 0 0 1 1 .65 3 3 0 0 1 .65 1 3 3 0 0 1 .2 1.12c0 4.09-6 8.34-6 8.34S2 9.42 2 5.33a3 3 0 0 1 1.85-2.77A3.1 3.1 0 0 1 5 2.33m0-1a4 4 0 0 0-4 4c0 4.56 6.16 9 6.42 9.15l.58.41.58-.41C8.84 14.3 15 9.89 15 5.33a4 4 0 0 0-.3-1.53 4.2 4.2 0 0 0-.87-1.3 3.9 3.9 0 0 0-1.3-.86 3.93 3.93 0 0 0-3.06 0 3.8 3.8 0 0 0-1.3.87c-.06.05-.11.11-.17.17l-.18-.19A4.06 4.06 0 0 0 5 1.33"/><path d="M9.8 10.67a.5.5 0 1 0-.93.36c.1.27.36.91.58 1.46.25-.21.52-.45.79-.72-.18-.43-.36-.88-.44-1.1M5 2.34a3 3 0 0 0-1.08.21l.45.63 1.14 1.64a.49.49 0 0 0 .41.18.5.5 0 0 0 .29-.09.51.51 0 0 0 .12-.69L5.16 2.6ZM10.13 5a.49.49 0 0 0 .41-.21l1.61-2.26a3 3 0 0 0-1.07-.22L9.72 4.25a.5.5 0 0 0 .12.69.5.5 0 0 0 .29.06m-3.05 6.12a.5.5 0 0 0-.92-.41l-.44 1c.27.26.53.5.78.71.22-.48.5-1.07.58-1.3m4.45-2.57a.49.49 0 0 0-.65.27.51.51 0 0 0 .27.65l.89.37c.21-.27.42-.54.61-.83Zm-6.69.89a.5.5 0 1 0-.37-.93L3.32 9c.19.29.4.57.61.84ZM14 5.22 11.41 6a.5.5 0 0 0-.34.62.49.49 0 0 0 .48.36h.14l2.2-.63a5 5 0 0 0 .11-1s0-.09 0-.13M4.53 6.94A.49.49 0 0 0 5 6.58.51.51 0 0 0 4.67 6L2 5.2v.13a4.3 4.3 0 0 0 .11.94l2.28.65Z" class="cls-2"/><circle cx="8" cy="7.57" r="2" style="fill:#fcf6c4"/><path d="M8 6.07a1.5 1.5 0 1 1-1.5 1.5A1.5 1.5 0 0 1 8 6.07m0-1a2.5 2.5 0 1 0 2.5 2.5A2.5 2.5 0 0 0 8 5.07" class="cls-2"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="16" height="16"><defs><style>.cls-3{fill:#6d2313}</style></defs><path d="M7.71 14.07C7.46 13.9 1.5 9.63 1.5 5.33A3.51 3.51 0 0 1 5 1.83a4 4 0 0 1 .68.07 3.5 3.5 0 0 1 1.8 1c.18.18.35.36.52.56a7 7 0 0 1 .53-.57 3.5 3.5 0 0 1 1.13-.79 3.46 3.46 0 0 1 2.68 0 3.4 3.4 0 0 1 1.13.76A3.4 3.4 0 0 1 14.23 4a3.5 3.5 0 0 1 .27 1.34c0 4.3-6 8.57-6.21 8.74l-.29.2Z" style="fill:#f5d7d7"/><path d="M5 2.33a3 3 0 0 1 .59.06 3 3 0 0 1 1.53.82 7.7 7.7 0 0 1 .88 1 7.7 7.7 0 0 1 .88-1A3 3 0 0 1 11 2.33a3.1 3.1 0 0 1 1.15.23 3 3 0 0 1 1 .65 3 3 0 0 1 .65 1 3 3 0 0 1 .2 1.12c0 4.09-6 8.34-6 8.34S2 9.42 2 5.33a3 3 0 0 1 1.85-2.77A3.1 3.1 0 0 1 5 2.33m0-1a4 4 0 0 0-4 4c0 4.56 6.16 9 6.42 9.15l.58.41.58-.41C8.84 14.3 15 9.89 15 5.33a4 4 0 0 0-.3-1.53 4.2 4.2 0 0 0-.87-1.3 3.9 3.9 0 0 0-1.3-.86 3.93 3.93 0 0 0-3.06 0 3.8 3.8 0 0 0-1.3.87c-.06.05-.11.11-.17.17l-.18-.19A4.06 4.06 0 0 0 5 1.33" style="fill:#fff"/><path d="M9.8 10.67a.5.5 0 1 0-.93.36c.1.27.36.91.58 1.46.25-.21.52-.45.79-.72-.18-.43-.36-.88-.44-1.1M5 2.34a3 3 0 0 0-1.08.21l.45.63 1.14 1.64a.49.49 0 0 0 .41.18.5.5 0 0 0 .29-.09.51.51 0 0 0 .12-.69L5.16 2.6ZM10.13 5a.49.49 0 0 0 .41-.21l1.61-2.26a3 3 0 0 0-1.07-.22L9.72 4.25a.5.5 0 0 0 .12.69.5.5 0 0 0 .29.06m-3.05 6.12a.5.5 0 0 0-.92-.41l-.44 1c.27.26.53.5.78.71.22-.48.5-1.07.58-1.3m4.45-2.57a.49.49 0 0 0-.65.27.51.51 0 0 0 .27.65l.89.37c.21-.27.42-.54.61-.83Zm-6.69.89a.5.5 0 1 0-.37-.93L3.32 9c.19.29.4.57.61.84ZM14 5.22 11.41 6a.5.5 0 0 0-.34.62.49.49 0 0 0 .48.36h.14l2.2-.63a5 5 0 0 0 .11-1s0-.09 0-.13M4.53 6.94A.49.49 0 0 0 5 6.58.51.51 0 0 0 4.67 6L2 5.2v.13a4.3 4.3 0 0 0 .11.94l2.28.65Z" class="cls-3"/><circle cx="8" cy="7.57" r="2" style="fill:#fcf6c4"/><path d="M8 6.07a1.5 1.5 0 1 1-1.5 1.5A1.5 1.5 0 0 1 8 6.07m0-1a2.5 2.5 0 1 0 2.5 2.5A2.5 2.5 0 0 0 8 5.07" class="cls-3"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="160" height="160"><defs><style>.cls-2{fill:#e2b7b7}</style></defs><path d="M118.9 7a38.7 38.7 0 0 0-27.52 11.45A97.3 97.3 0 0 0 80 31.56a97.3 97.3 0 0 0-11.38-13.11A38.9 38.9 0 0 0 2.2 45.94C2.2 99 80 154 80 154s77.8-55 77.8-108.06A38.89 38.89 0 0 0 118.9 7" style="fill:#f5d7d7"/><path d="m126.53 72-.14.14C118.32 81 103 101.93 93.22 107.81a1.3 1.3 0 0 1-.27.12c-2.7.74-8.31 1.68-12.06 3.73a2.34 2.34 0 0 0 1.08 4.4 26 26 0 0 1 3.89.14.6.6 0 0 0 .18 0c5.21-.32 13.53 6 7.27 10.23-4.91 4-16.38 1.64-20.22 5.7a1.05 1.05 0 0 0 .52 1.76c9.8 2.25 21.79 0 24.12 6 19.17-16.48 48.21-45.41 57.27-75.84-8.3-1.74-20.52 1.83-28.47 7.95" class="cls-2"/><path d="M74 149.52c6.68-2.47 12.58-5.16 13.14-7.87a1 1 0 0 0-.28-.89c-5.73-5.8-18.77.73-25.55-5.47a1.1 1.1 0 0 1-.32-.57c-1.84-9.88 20.72-6.1 25.18-13a.5.5 0 0 0 0-.14c-3.26-4.42-10-.7-13.92-4.11-2.17-2.1-1.08-4.83.85-6.63a1.06 1.06 0 0 0-.58-1.8c-29.6-5-25.62-31.32-37.74-39.36a1 1 0 0 0-.81-.14c-9.59 2-13.47-3.73-18.32-11.69a1 1 0 0 0-.11-.15A26.67 26.67 0 0 0 2.35 50C5.43 92.7 56.37 135.8 74 149.52" class="cls-2"/><path d="M87.08 97.77A21.88 21.88 0 1 0 62.55 91a22.07 22.07 0 0 0 24.53 6.77" style="fill:#fcf6c4"/><path d="M84.57 102.6c12.05-2.28 20.78-13.23 20.87-25.38a25.88 25.88 0 1 0-20.87 25.38M60.78 66a21.88 21.88 0 1 1 1.77 25 22.06 22.06 0 0 1-1.77-25m4.31-29.28a2 2 0 0 1-1.4 2.46 2 2 0 0 1-1.54-.2 2.18 2.18 0 0 1-.92-1.19l-2.07-5.24a2 2 0 0 1 1.4-2.46 2 2 0 0 1 1.54.2 2.18 2.18 0 0 1 .9 1.18l2.07 5.24Zm4.49 11.36a2 2 0 0 1-.21 1.54 2 2 0 0 1-2.73.71 2.18 2.18 0 0 1-.92-1.19l-2.07-5.24a1.9 1.9 0 0 1 .2-1.54 2 2 0 0 1 2.74-.72 2.15 2.15 0 0 1 .91 1.2zm25.53 62.54a2 2 0 0 1-1.4 2.46 2 2 0 0 1-1.54-.2 2.18 2.18 0 0 1-.92-1.19q-1-2.49-1.94-5a1.94 1.94 0 0 1 .2-1.54 2 2 0 0 1 1.19-.92 2.1 2.1 0 0 1 1.55.21 2.17 2.17 0 0 1 .91 1.19c.65 1.66 1.29 3.33 2 5Zm4.35 10.74a1.93 1.93 0 0 1-.21 1.55 2 2 0 0 1-1.19.91 2 2 0 0 1-1.54-.2 1.4 1.4 0 0 1-.56-.51 1.5 1.5 0 0 1-.36-.68l-1.86-4.54a1.94 1.94 0 0 1 .2-1.54 2.06 2.06 0 0 1 1.2-.92 2 2 0 0 1 1.54.2 2.2 2.2 0 0 1 .92 1.2q.91 2.27 1.86 4.53m-1.71-83.2a2.06 2.06 0 0 1-.52.89l-.4.31a2 2 0 0 1-2.94-2.26c.73-1.8 1.47-3.59 2.2-5.39a2 2 0 0 1 .52-.88l.4-.31a2 2 0 0 1 2.74.72 2 2 0 0 1 .2 1.54c-.74 1.79-1.47 3.59-2.2 5.38m-4.57 11.2a1.9 1.9 0 0 1-.51.88l-.41.31a2 2 0 0 1-2.73-.71 2 2 0 0 1-.21-1.55l1.86-4.56a2.1 2.1 0 0 1 .52-.88l.4-.31a2 2 0 0 1 2.9 2.25l-1.86 4.56Zm-26 61.74a1.9 1.9 0 0 1-1.18.9 2.06 2.06 0 0 1-1.54-.2 2 2 0 0 1-.92-1.2 2.18 2.18 0 0 1 .2-1.54q.93-2.2 1.9-4.39a1.9 1.9 0 0 1 1.19-.92 2 2 0 0 1 1.54.2 2.06 2.06 0 0 1 .92 1.2 1.5 1.5 0 0 1 0 .79 1.55 1.55 0 0 1-.24.75q-1 2.19-1.9 4.39Zm-4.28 10.42a1.9 1.9 0 0 1-.51.88l-.4.31a2 2 0 0 1-2.94-2.26q1-2.45 2-4.88a2 2 0 0 1 .52-.88l.4-.32a2 2 0 0 1 2.74.72 2 2 0 0 1 .2 1.54l-2 4.89Zm54.88-26.11a2 2 0 0 1-.88-.52l-.31-.4a2 2 0 0 1 .72-2.74 2 2 0 0 1 1.54-.2l4.15 1.71a1.86 1.86 0 0 1 .88.51l.32.4a2 2 0 0 1-.72 2.74 2 2 0 0 1-1.54.2l-4.15-1.7Zm-10.36-4.28a1.86 1.86 0 0 1-.88-.51l-.32-.4a2 2 0 0 1-.2-1.55 2.07 2.07 0 0 1 .92-1.19 2 2 0 0 1 1.54-.2l4.15 1.72a1.9 1.9 0 0 1 .88.51l.31.41a2 2 0 0 1 .2 1.54 2 2 0 0 1-2.46 1.39l-4.14-1.71Zm-62.64-26.3a2 2 0 0 1-.88-.52l-.31-.4a2 2 0 0 1-.2-1.54 2 2 0 0 1 .91-1.2 2 2 0 0 1 1.55-.2l5.66 2.35a2.06 2.06 0 0 1 .89.52l.31.4a2 2 0 0 1 .2 1.54A2 2 0 0 1 52 67a2 2 0 0 1-1.54.2l-5.67-2.35Zm-12.21-5.07a2.32 2.32 0 0 1-1.19-.92 2 2 0 0 1 .72-2.73 2 2 0 0 1 1.54-.21l6.1 2.54a2.34 2.34 0 0 1 1.2.92 2 2 0 0 1-.72 2.73 2 2 0 0 1-1.54.2zM40 91a2 2 0 0 1 1.55.21 2 2 0 0 1 .92 1.19 2.07 2.07 0 0 1-.26 1.6 1.4 1.4 0 0 1-.51.56 1.45 1.45 0 0 1-.68.36l-4.6 1.89a2 2 0 0 1-1.54-.2 2 2 0 0 1-.71-2.74 2.22 2.22 0 0 1 1.19-.92zm10.77-4.35a1.93 1.93 0 0 1 1.55.2 2 2 0 0 1 .91 1.2 2 2 0 0 1-.2 1.54 2.18 2.18 0 0 1-1.19.92q-2.28.9-4.56 1.83a2 2 0 0 1-1.54-.2 2 2 0 0 1-.74-2.71 2.14 2.14 0 0 1 1.19-.92l4.56-1.83Zm61.71-25.13a1.9 1.9 0 0 1 1-.28l.53.07a2 2 0 0 1 .48 3.66l-5.61 2.38a2 2 0 0 1-1 .27l-.53-.07a2 2 0 0 1-1.19-.92 2 2 0 0 1-.21-1.54 2.1 2.1 0 0 1 .92-1.2zm13.79-5.89a2.35 2.35 0 0 1 1.54-.2 2 2 0 0 1 1.19.92 2 2 0 0 1-.72 2.74l-6.89 2.94a2.3 2.3 0 0 1-1.54.2 2 2 0 0 1-1.19-.91 2 2 0 0 1 .71-2.74l6.9-3Z" style="fill:#6d2313"/></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="24" height="24"><defs><style>.cls-4{fill:#6d2313}</style></defs><path d="M16 5a4 4 0 0 0-1.53.3 4.1 4.1 0 0 0-1.3.87A10.7 10.7 0 0 0 12 7.52a10.7 10.7 0 0 0-1.17-1.35 4 4 0 0 0-4.36-.87 4.07 4.07 0 0 0-1.8 1.48A4 4 0 0 0 4 9c0 5.45 8 11.11 8 11.11S20 14.45 20 9a4 4 0 0 0-.3-1.53 4 4 0 0 0-2.17-2.17A4 4 0 0 0 16 5" style="fill:none"/><path d="M11.28 21.13C10.93 20.89 2.75 15 2.75 9A5.22 5.22 0 0 1 6 4.15a5.3 5.3 0 0 1 3-.3 5.2 5.2 0 0 1 2.68 1.44l.29.29.3-.31A5.3 5.3 0 0 1 14 4.15 5.26 5.26 0 0 1 20.85 7a5.15 5.15 0 0 1 .4 2c0 6-8.18 11.89-8.53 12.13l-.72.51Z" style="fill:#f5d7d7"/><path d="M8 5a4 4 0 0 1 .78.08 4 4 0 0 1 2.05 1.09A10.7 10.7 0 0 1 12 7.52a10.7 10.7 0 0 1 1.17-1.35 4.1 4.1 0 0 1 1.3-.87A4 4 0 0 1 16 5a4 4 0 0 1 1.53.3 4 4 0 0 1 2.17 2.17A4 4 0 0 1 20 9c0 5.45-8 11.11-8 11.11S4 14.45 4 9a4 4 0 0 1 .67-2.22A4 4 0 0 1 8 5m0-2.5a6.7 6.7 0 0 0-2.49.5 6.54 6.54 0 0 0-4 6c0 6.56 8.13 12.5 9.06 13.15l1.44 1 1.44-1c.92-.65 9.05-6.59 9.05-13.15a6.47 6.47 0 0 0-1.9-4.6A6.54 6.54 0 0 0 13.51 3a6.7 6.7 0 0 0-1.51.87 6.5 6.5 0 0 0-2.73-1.24A6 6 0 0 0 8 2.5" style="fill:#2e2e2e"/><path d="M14.15 16a.5.5 0 1 0-1 .27c.29.74.6 1.48.89 2.22l.79-.71c-.21-.64-.45-1.23-.68-1.78M16 5h-.15c-.65 1.06-1.31 2.11-1.95 3.16-.34.55.52 1.05.86.5L17 5.13A4 4 0 0 0 16 5M9.84 18.36c.29-.69.58-1.38.88-2.07a.5.5 0 1 0-.86-.51c-.27.62-.54 1.25-.8 1.87Zm6.26-5.19a.51.51 0 0 0-.62.35.52.52 0 0 0 .35.62l1.69.7c.21-.27.41-.54.61-.82Zm-8.23-.04-2 .82c.19.28.4.56.6.83l1.71-.69a.5.5 0 0 0 .35-.61.51.51 0 0 0-.66-.35M20 8.78l-4 1.39a.51.51 0 0 0-.35.62.5.5 0 0 0 .61.35l3.72-1.29A5 5 0 0 0 20 9zm-9.9-.61C9.45 7.11 8.79 6.06 8.14 5A3.7 3.7 0 0 0 7 5.12c.73 1.19 1.47 2.37 2.2 3.55.37.55 1.23.05.9-.5m-1.7 2.62a.51.51 0 0 0-.35-.62L4 8.78A2 2 0 0 0 4 9a5 5 0 0 0 .08.86l3.71 1.28a.5.5 0 0 0 .61-.35" class="cls-4"/><circle cx="12" cy="12.16" r="2.75" style="fill:#fdf1c0"/><path d="M13.12 9.11a3.25 3.25 0 1 0 2.13 3.05 3.31 3.31 0 0 0-2.13-3.05m-.34 5.16a2.25 2.25 0 1 1 1.47-2.11 2.28 2.28 0 0 1-1.47 2.11" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Export" width="24" height="24"><defs><style>.cls-4{fill:#6d2313}</style></defs><path d="M16 5a4 4 0 0 0-1.53.3 4.1 4.1 0 0 0-1.3.87A10.7 10.7 0 0 0 12 7.52a10.7 10.7 0 0 0-1.17-1.35 4 4 0 0 0-4.36-.87 4.07 4.07 0 0 0-1.8 1.48A4 4 0 0 0 4 9c0 5.45 8 11.11 8 11.11S20 14.45 20 9a4 4 0 0 0-.3-1.53 4 4 0 0 0-2.17-2.17A4 4 0 0 0 16 5" style="fill:none"/><path d="M11.28 21.13C10.93 20.89 2.75 15 2.75 9A5.22 5.22 0 0 1 6 4.15a5.3 5.3 0 0 1 3-.3 5.2 5.2 0 0 1 2.68 1.44l.29.29.3-.31A5.3 5.3 0 0 1 14 4.15 5.26 5.26 0 0 1 20.85 7a5.15 5.15 0 0 1 .4 2c0 6-8.18 11.89-8.53 12.13l-.72.51Z" style="fill:#f5d7d7"/><path d="M8 5a4 4 0 0 1 .78.08 4 4 0 0 1 2.05 1.09A10.7 10.7 0 0 1 12 7.52a10.7 10.7 0 0 1 1.17-1.35 4.1 4.1 0 0 1 1.3-.87A4 4 0 0 1 16 5a4 4 0 0 1 1.53.3 4 4 0 0 1 2.17 2.17A4 4 0 0 1 20 9c0 5.45-8 11.11-8 11.11S4 14.45 4 9a4 4 0 0 1 .67-2.22A4 4 0 0 1 8 5m0-2.5a6.7 6.7 0 0 0-2.49.5 6.54 6.54 0 0 0-4 6c0 6.56 8.13 12.5 9.06 13.15l1.44 1 1.44-1c.92-.65 9.05-6.59 9.05-13.15a6.47 6.47 0 0 0-1.9-4.6A6.54 6.54 0 0 0 13.51 3a6.7 6.7 0 0 0-1.51.87 6.5 6.5 0 0 0-2.73-1.24A6 6 0 0 0 8 2.5" style="fill:#fff"/><path d="M14.15 16a.5.5 0 1 0-1 .27c.29.74.6 1.48.89 2.22l.79-.71c-.21-.64-.45-1.23-.68-1.78M16 5h-.15c-.65 1.06-1.31 2.11-1.95 3.16-.34.55.52 1.05.86.5L17 5.13A4 4 0 0 0 16 5M9.84 18.36c.29-.69.58-1.38.88-2.07a.5.5 0 1 0-.86-.51c-.27.62-.54 1.25-.8 1.87Zm6.26-5.19a.51.51 0 0 0-.62.35.52.52 0 0 0 .35.62l1.69.7c.21-.27.41-.54.61-.82Zm-8.23-.04-2 .82c.19.28.4.56.6.83l1.71-.69a.5.5 0 0 0 .35-.61.51.51 0 0 0-.66-.35M20 8.78l-4 1.39a.51.51 0 0 0-.35.62.5.5 0 0 0 .61.35l3.72-1.29A5 5 0 0 0 20 9zm-9.9-.61C9.45 7.11 8.79 6.06 8.14 5A3.7 3.7 0 0 0 7 5.12c.73 1.19 1.47 2.37 2.2 3.55.37.55 1.23.05.9-.5m-1.7 2.62a.51.51 0 0 0-.35-.62L4 8.78A2 2 0 0 0 4 9a5 5 0 0 0 .08.86l3.71 1.28a.5.5 0 0 0 .61-.35" class="cls-4"/><circle cx="12" cy="12.16" r="2.75" style="fill:#fdf1c0"/><path d="M13.12 9.11a3.25 3.25 0 1 0 2.13 3.05 3.31 3.31 0 0 0-2.13-3.05m-.34 5.16a2.25 2.25 0 1 1 1.47-2.11 2.28 2.28 0 0 1-1.47 2.11" class="cls-4"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"><path d="M16.87 31.65C16.34 31.29 4 22.71 4 13.82a7.7 7.7 0 0 1 1.36-4.37A8 8 0 0 1 9 6.59a8.1 8.1 0 0 1 4.59-.44 8 8 0 0 1 4.09 2.12l.36.35.39-.37A7.9 7.9 0 0 1 21 6.59a8.13 8.13 0 0 1 6.08 0 7.9 7.9 0 0 1 2.6 1.68 7.8 7.8 0 0 1 1.74 2.54 7.6 7.6 0 0 1 .62 3c0 8.89-12.34 17.47-12.87 17.83l-1.17.79Z" style="fill:#f5d7d7"/><path d="M12 8a6.5 6.5 0 0 1 1.17.11 6.07 6.07 0 0 1 3.08 1.6 15 15 0 0 1 1.75 2 15 15 0 0 1 1.75-2A6.05 6.05 0 0 1 24 8a6.2 6.2 0 0 1 2.3.44 6 6 0 0 1 1.94 1.27A5.77 5.77 0 0 1 30 13.82C30 21.76 18 30 18 30S6 21.76 6 13.82a5.7 5.7 0 0 1 1-3.23 6 6 0 0 1 2.7-2.15A6.2 6.2 0 0 1 12 8m0-4a10.3 10.3 0 0 0-3.79.73 10 10 0 0 0-4.49 3.59A9.6 9.6 0 0 0 2 13.82c0 4.38 2.4 9.05 7.15 13.87a49 49 0 0 0 6.59 5.61L18 34.85l2.26-1.55a49 49 0 0 0 6.59-5.61C31.6 22.87 34 18.2 34 13.82a9.6 9.6 0 0 0-.78-3.8A9.7 9.7 0 0 0 31 6.84a10.1 10.1 0 0 0-3.24-2.11A10.14 10.14 0 0 0 18 6a10 10 0 0 0-4.07-1.77A9.6 9.6 0 0 0 12 4"/><circle cx="17.91" cy="18.32" r="3.68" style="fill:#fdf1c0"/><path d="M19.36 14.4a4.18 4.18 0 1 0 2.73 3.92 4.2 4.2 0 0 0-2.73-3.92M19 21.31a3.19 3.19 0 1 1 2.09-3 3.22 3.22 0 0 1-2.09 3m-3.93-10.94a.48.48 0 0 1-.05.39.5.5 0 0 1-.29.23.53.53 0 0 1-.39-.05.35.35 0 0 1-.14-.13.6.6 0 0 1-.09-.17l-.37-.93a.48.48 0 0 1 0-.39.51.51 0 0 1 .69-.18.44.44 0 0 1 .14.13.6.6 0 0 1 .09.17l.36.93Zm1.19 2.74a.46.46 0 0 1-.05.38.5.5 0 0 1-.3.23.53.53 0 0 1-.39-.05.4.4 0 0 1-.14-.13.5.5 0 0 1-.09-.17l-.36-.93a.5.5 0 0 1 .73-.56.3.3 0 0 1 .14.13.3.3 0 0 1 .09.17zm4.53 11.11a.46.46 0 0 1-.05.38.48.48 0 0 1-.29.23.5.5 0 0 1-.39 0 .35.35 0 0 1-.14-.13.4.4 0 0 1-.09-.17c-.12-.29-.23-.59-.35-.88a.54.54 0 0 1 .06-.39.5.5 0 0 1 .29-.23.53.53 0 0 1 .39.05.6.6 0 0 1 .14.13.6.6 0 0 1 .09.17c.11.3.23.59.34.89Zm1 2.35a.6.6 0 0 1 0 .27l-.05.12a.53.53 0 0 1-.3.23.34.34 0 0 1-.2 0 .33.33 0 0 1-.19-.06.5.5 0 0 1-.15-.13.6.6 0 0 1-.09-.17l-.29-.72a.6.6 0 0 1 0-.27l.05-.12a.53.53 0 0 1 .3-.23.45.45 0 0 1 .2 0 .6.6 0 0 1 .18.06.35.35 0 0 1 .14.13.32.32 0 0 1 .09.17l.3.72Zm-.3-15.69a.43.43 0 0 1-.12.22l-.11.08a.5.5 0 0 1-.68-.18.46.46 0 0 1-.05-.38l.39-1a.5.5 0 0 1 .08-.18l.1-.08a.53.53 0 0 1 .39 0 .5.5 0 0 1 .29.23.53.53 0 0 1 .06.39c-.14.31-.27.63-.4 1Zm-1 2.53a.38.38 0 0 1-.13.22l-.1.08a.5.5 0 0 1-.38 0 .53.53 0 0 1-.3-.23.33.33 0 0 1-.06-.19.3.3 0 0 1 0-.19l.33-.81a.45.45 0 0 1 .13-.23l.1-.07a.5.5 0 0 1 .68.18.3.3 0 0 1 .06.18.34.34 0 0 1 0 .2l-.33.81Zm-4.63 11a.5.5 0 0 1-.18.18l-.12.05a.5.5 0 0 1-.39-.05.54.54 0 0 1-.23-.3.3.3 0 0 1 0-.19.33.33 0 0 1 .06-.19l.33-.78a.5.5 0 0 1 .18-.18l.12-.05a.53.53 0 0 1 .37.1.58.58 0 0 1 .23.3.34.34 0 0 1 0 .2.4.4 0 0 1-.05.18c-.12.26-.23.52-.34.78Zm-.9 2.2a.46.46 0 0 1-.13.22l-.1.08a.5.5 0 0 1-.38.05.53.53 0 0 1-.3-.23.33.33 0 0 1-.06-.19.34.34 0 0 1 0-.2l.3-.76a.6.6 0 0 1 .13-.22l.1-.08a.51.51 0 0 1 .69.18.33.33 0 0 1 .06.19.45.45 0 0 1 0 .2c-.1.25-.21.5-.31.76m10.15-4.76a.7.7 0 0 1-.22-.13l-.08-.1a.6.6 0 0 1-.05-.39.53.53 0 0 1 .23-.3.6.6 0 0 1 .19-.06.45.45 0 0 1 .2 0l.74.31a.5.5 0 0 1 .22.12l.07.1a.49.49 0 0 1-.17.69.33.33 0 0 1-.19.06.45.45 0 0 1-.2 0zm-2.27-.91a.6.6 0 0 1-.22-.13l-.08-.1a.51.51 0 0 1 .18-.69.6.6 0 0 1 .19-.06.45.45 0 0 1 .2 0l.74.3a.7.7 0 0 1 .22.13l.07.1a.5.5 0 0 1 0 .39.46.46 0 0 1-.23.3.28.28 0 0 1-.18.06.45.45 0 0 1-.2 0l-.74-.3Zm-11.16-4.68a.38.38 0 0 1-.22-.13l-.08-.1a.5.5 0 0 1 .18-.68.46.46 0 0 1 .38 0l1 .42a.5.5 0 0 1 .22.12l.08.11a.5.5 0 0 1 .05.38.53.53 0 0 1-.23.3.5.5 0 0 1-.39.05l-1-.42ZM6.39 14a.38.38 0 0 1-.22-.13l-.08-.1a.5.5 0 0 1 0-.38.5.5 0 0 1 .23-.3.46.46 0 0 1 .38-.05l1 .42a.43.43 0 0 1 .22.12l.08.11a.5.5 0 0 1 0 .38.53.53 0 0 1-.23.3.48.48 0 0 1-.39.05l-1-.42ZM9 15.14a.53.53 0 0 1-.26-.14l-.07-.1a.48.48 0 0 1-.05-.39.47.47 0 0 1 .23-.29.46.46 0 0 1 .38-.05l1.09.45a.5.5 0 0 1 .22.12l.07.11a.5.5 0 0 1 .06.38.53.53 0 0 1-.23.3.5.5 0 0 1-.39.05zm1.57 5.57a.6.6 0 0 1 .27 0l.12.05a.57.57 0 0 1 .23.3.48.48 0 0 1-.18.53.6.6 0 0 1-.17.09L10 22a.42.42 0 0 1-.27 0h-.12a.44.44 0 0 1-.23-.3.46.46 0 0 1 0-.38.33.33 0 0 1 .12-.14.32.32 0 0 1 .17-.09l.82-.34Zm2.19-.85a.54.54 0 0 1 .39.06.5.5 0 0 1 .23.29.53.53 0 0 1 0 .39.6.6 0 0 1-.13.14.6.6 0 0 1-.17.09l-.81.32a.42.42 0 0 1-.27 0h-.12a.5.5 0 0 1-.23-.29.53.53 0 0 1 0-.39.44.44 0 0 1 .13-.14.6.6 0 0 1 .17-.09l.81-.33Zm10.93-4.45a.54.54 0 0 1 .25-.06H24a.53.53 0 0 1 .3.23.5.5 0 0 1 .05.39.5.5 0 0 1-.23.3l-1 .42a.45.45 0 0 1-.25.07h-.14a.5.5 0 0 1-.3-.23.5.5 0 0 1 .18-.68l1-.43Zm2.92-1.29a.6.6 0 0 1 .26-.06H27a.5.5 0 0 1 .35.62.52.52 0 0 1-.23.3l-1.23.52a.43.43 0 0 1-.25.07h-.13a.5.5 0 0 1-.3-.23.5.5 0 0 1-.05-.38.47.47 0 0 1 .23-.3l1.22-.53ZM29.23 13a.45.45 0 0 1 .25-.07h.13a.5.5 0 0 1 .3.23.46.46 0 0 1 .05.38.47.47 0 0 1-.23.3l-1.22.52a.45.45 0 0 1-.25.07h-.14a.5.5 0 0 1-.29-.23.5.5 0 0 1 0-.39.46.46 0 0 1 .23-.3z" style="fill:#6d2313"/></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"><path d="M16.87 31.65C16.34 31.29 4 22.71 4 13.82a7.7 7.7 0 0 1 1.36-4.37A8 8 0 0 1 9 6.59a8.1 8.1 0 0 1 4.59-.44 8 8 0 0 1 4.09 2.12l.36.35.39-.37A7.9 7.9 0 0 1 21 6.59a8.13 8.13 0 0 1 6.08 0 7.9 7.9 0 0 1 2.6 1.68 7.8 7.8 0 0 1 1.74 2.54 7.6 7.6 0 0 1 .62 3c0 8.89-12.34 17.47-12.87 17.83l-1.17.79Z" style="fill:#f5d7d7"/><path d="M12 8a6.5 6.5 0 0 1 1.17.11 6.07 6.07 0 0 1 3.08 1.6 15 15 0 0 1 1.75 2 15 15 0 0 1 1.75-2A6.05 6.05 0 0 1 24 8a6.2 6.2 0 0 1 2.3.44 6 6 0 0 1 1.94 1.27A5.77 5.77 0 0 1 30 13.82C30 21.76 18 30 18 30S6 21.76 6 13.82a5.7 5.7 0 0 1 1-3.23 6 6 0 0 1 2.7-2.15A6.2 6.2 0 0 1 12 8m0-4a10.3 10.3 0 0 0-3.79.73 10 10 0 0 0-4.49 3.59A9.6 9.6 0 0 0 2 13.82c0 4.38 2.4 9.05 7.15 13.87a49 49 0 0 0 6.59 5.61L18 34.85l2.26-1.55a49 49 0 0 0 6.59-5.61C31.6 22.87 34 18.2 34 13.82a9.6 9.6 0 0 0-.78-3.8A9.7 9.7 0 0 0 31 6.84a10.1 10.1 0 0 0-3.24-2.11A10.14 10.14 0 0 0 18 6a10 10 0 0 0-4.07-1.77A9.6 9.6 0 0 0 12 4" style="fill:#fff"/><circle cx="17.91" cy="18.32" r="3.68" style="fill:#fdf1c0"/><path d="M19.36 14.4a4.18 4.18 0 1 0 2.73 3.92 4.2 4.2 0 0 0-2.73-3.92M19 21.31a3.19 3.19 0 1 1 2.09-3 3.22 3.22 0 0 1-2.09 3m-3.93-10.94a.48.48 0 0 1-.05.39.5.5 0 0 1-.29.23.53.53 0 0 1-.39-.05.35.35 0 0 1-.14-.13.6.6 0 0 1-.09-.17l-.37-.93a.48.48 0 0 1 0-.39.51.51 0 0 1 .69-.18.44.44 0 0 1 .14.13.6.6 0 0 1 .09.17l.36.93Zm1.19 2.74a.46.46 0 0 1-.05.38.5.5 0 0 1-.3.23.53.53 0 0 1-.39-.05.4.4 0 0 1-.14-.13.5.5 0 0 1-.09-.17l-.36-.93a.5.5 0 0 1 .73-.56.3.3 0 0 1 .14.13.3.3 0 0 1 .09.17zm4.53 11.11a.46.46 0 0 1-.05.38.48.48 0 0 1-.29.23.5.5 0 0 1-.39 0 .35.35 0 0 1-.14-.13.4.4 0 0 1-.09-.17c-.12-.29-.23-.59-.35-.88a.54.54 0 0 1 .06-.39.5.5 0 0 1 .29-.23.53.53 0 0 1 .39.05.6.6 0 0 1 .14.13.6.6 0 0 1 .09.17c.11.3.23.59.34.89Zm1 2.35a.6.6 0 0 1 0 .27l-.05.12a.53.53 0 0 1-.3.23.34.34 0 0 1-.2 0 .33.33 0 0 1-.19-.06.5.5 0 0 1-.15-.13.6.6 0 0 1-.09-.17l-.29-.72a.6.6 0 0 1 0-.27l.05-.12a.53.53 0 0 1 .3-.23.45.45 0 0 1 .2 0 .6.6 0 0 1 .18.06.35.35 0 0 1 .14.13.32.32 0 0 1 .09.17l.3.72Zm-.3-15.69a.43.43 0 0 1-.12.22l-.11.08a.5.5 0 0 1-.68-.18.46.46 0 0 1-.05-.38l.39-1a.5.5 0 0 1 .08-.18l.1-.08a.53.53 0 0 1 .39 0 .5.5 0 0 1 .29.23.53.53 0 0 1 .06.39c-.14.31-.27.63-.4 1Zm-1 2.53a.38.38 0 0 1-.13.22l-.1.08a.5.5 0 0 1-.38 0 .53.53 0 0 1-.3-.23.33.33 0 0 1-.06-.19.3.3 0 0 1 0-.19l.33-.81a.45.45 0 0 1 .13-.23l.1-.07a.5.5 0 0 1 .68.18.3.3 0 0 1 .06.18.34.34 0 0 1 0 .2l-.33.81Zm-4.63 11a.5.5 0 0 1-.18.18l-.12.05a.5.5 0 0 1-.39-.05.54.54 0 0 1-.23-.3.3.3 0 0 1 0-.19.33.33 0 0 1 .06-.19l.33-.78a.5.5 0 0 1 .18-.18l.12-.05a.53.53 0 0 1 .37.1.58.58 0 0 1 .23.3.34.34 0 0 1 0 .2.4.4 0 0 1-.05.18c-.12.26-.23.52-.34.78Zm-.9 2.2a.46.46 0 0 1-.13.22l-.1.08a.5.5 0 0 1-.38.05.53.53 0 0 1-.3-.23.33.33 0 0 1-.06-.19.34.34 0 0 1 0-.2l.3-.76a.6.6 0 0 1 .13-.22l.1-.08a.51.51 0 0 1 .69.18.33.33 0 0 1 .06.19.45.45 0 0 1 0 .2c-.1.25-.21.5-.31.76m10.15-4.76a.7.7 0 0 1-.22-.13l-.08-.1a.6.6 0 0 1-.05-.39.53.53 0 0 1 .23-.3.6.6 0 0 1 .19-.06.45.45 0 0 1 .2 0l.74.31a.5.5 0 0 1 .22.12l.07.1a.49.49 0 0 1-.17.69.33.33 0 0 1-.19.06.45.45 0 0 1-.2 0zm-2.27-.91a.6.6 0 0 1-.22-.13l-.08-.1a.51.51 0 0 1 .18-.69.6.6 0 0 1 .19-.06.45.45 0 0 1 .2 0l.74.3a.7.7 0 0 1 .22.13l.07.1a.5.5 0 0 1 0 .39.46.46 0 0 1-.23.3.28.28 0 0 1-.18.06.45.45 0 0 1-.2 0l-.74-.3Zm-11.16-4.68a.38.38 0 0 1-.22-.13l-.08-.1a.5.5 0 0 1 .18-.68.46.46 0 0 1 .38 0l1 .42a.5.5 0 0 1 .22.12l.08.11a.5.5 0 0 1 .05.38.53.53 0 0 1-.23.3.5.5 0 0 1-.39.05l-1-.42ZM6.39 14a.38.38 0 0 1-.22-.13l-.08-.1a.5.5 0 0 1 0-.38.5.5 0 0 1 .23-.3.46.46 0 0 1 .38-.05l1 .42a.43.43 0 0 1 .22.12l.08.11a.5.5 0 0 1 0 .38.53.53 0 0 1-.23.3.48.48 0 0 1-.39.05l-1-.42ZM9 15.14a.53.53 0 0 1-.26-.14l-.07-.1a.48.48 0 0 1-.05-.39.47.47 0 0 1 .23-.29.46.46 0 0 1 .38-.05l1.09.45a.5.5 0 0 1 .22.12l.07.11a.5.5 0 0 1 .06.38.53.53 0 0 1-.23.3.5.5 0 0 1-.39.05zm1.57 5.57a.6.6 0 0 1 .27 0l.12.05a.57.57 0 0 1 .23.3.48.48 0 0 1-.18.53.6.6 0 0 1-.17.09L10 22a.42.42 0 0 1-.27 0h-.12a.44.44 0 0 1-.23-.3.46.46 0 0 1 0-.38.33.33 0 0 1 .12-.14.32.32 0 0 1 .17-.09l.82-.34Zm2.19-.85a.54.54 0 0 1 .39.06.5.5 0 0 1 .23.29.53.53 0 0 1 0 .39.6.6 0 0 1-.13.14.6.6 0 0 1-.17.09l-.81.32a.42.42 0 0 1-.27 0h-.12a.5.5 0 0 1-.23-.29.53.53 0 0 1 0-.39.44.44 0 0 1 .13-.14.6.6 0 0 1 .17-.09l.81-.33Zm10.93-4.45a.54.54 0 0 1 .25-.06H24a.53.53 0 0 1 .3.23.5.5 0 0 1 .05.39.5.5 0 0 1-.23.3l-1 .42a.45.45 0 0 1-.25.07h-.14a.5.5 0 0 1-.3-.23.5.5 0 0 1 .18-.68l1-.43Zm2.92-1.29a.6.6 0 0 1 .26-.06H27a.5.5 0 0 1 .35.62.52.52 0 0 1-.23.3l-1.23.52a.43.43 0 0 1-.25.07h-.13a.5.5 0 0 1-.3-.23.5.5 0 0 1-.05-.38.47.47 0 0 1 .23-.3l1.22-.53ZM29.23 13a.45.45 0 0 1 .25-.07h.13a.5.5 0 0 1 .3.23.46.46 0 0 1 .05.38.47.47 0 0 1-.23.3l-1.22.52a.45.45 0 0 1-.25.07h-.14a.5.5 0 0 1-.29-.23.5.5 0 0 1 0-.39.46.46 0 0 1 .23-.3z" style="fill:#6d2313"/></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6.5" style="fill:#e3e3fe"/><path d="M8 2a6 6 0 1 1 0 12A6 6 0 0 1 8 2m0-1C4.14 1 1 4.14 1 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7"/><path d="M4.801 13.07a5.97 5.97 0 0 0 6.41-.008L9.026 8.136l-2.054-.002L4.8 13.07Z" style="fill:#fdf1c0"/><path d="M9.809 6.243c.038-.119.064-.241.064-.37 0-.829-.834-1.501-1.863-1.501s-1.863.672-1.863 1.501c0 .128.026.251.064.37-1.48.221-2.512.704-2.512 1.267 0 .772 1.93 1.398 4.312 1.398s4.312-.626 4.312-1.398c0-.563-1.033-1.045-2.512-1.267Z" style="fill:#d8e8f0"/><path d="M10.639 12.166a.5.5 0 0 1-.46-.303l-.459-1.069a.5.5 0 0 1 .919-.395l.459 1.069a.5.5 0 0 1-.459.698m-4.742-.293.485-1.069a.5.5 0 0 0-.911-.413l-.485 1.069a.5.5 0 0 0 .911.413m6.924-4.362c0 1.304-2.495 1.898-4.812 1.898s-4.812-.594-4.812-1.898c0-.852 1.068-1.4 2.453-1.678.027-1.084 1.072-1.959 2.358-1.959s2.332.876 2.358 1.959c1.386.278 2.454.825 2.454 1.678ZM6.673 5.68a13.2 13.2 0 0 1 2.672 0c-.128-.453-.687-.806-1.336-.806s-1.208.353-1.336.806m5.146 1.831c-.088-.254-1.36-.898-3.811-.898-2.472 0-3.746.656-3.812.905.052.182.838.614 2.336.801a.55.55 0 0 1-.041-.383c.069-.255.296-.391.531-.469a2.7 2.7 0 0 1 .656-.106q.357-.027.712.006c.363.034.811.105 1.018.404a.43.43 0 0 1 .117.311.4.4 0 0 1-.066.24c1.497-.183 2.29-.613 2.359-.81Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6.5" style="fill:#e3e3fe"/><path d="M8 2a6 6 0 1 1 0 12A6 6 0 0 1 8 2m0-1C4.14 1 1 4.14 1 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7" style="fill:#fff"/><path d="M4.801 13.07a5.97 5.97 0 0 0 6.41-.008L9.026 8.136l-2.054-.002L4.8 13.07Z" style="fill:#fdf1c0"/><path d="M9.809 6.243c.038-.119.064-.241.064-.37 0-.829-.834-1.501-1.863-1.501s-1.863.672-1.863 1.501c0 .128.026.251.064.37-1.48.221-2.512.704-2.512 1.267 0 .772 1.93 1.398 4.312 1.398s4.312-.626 4.312-1.398c0-.563-1.033-1.045-2.512-1.267Z" style="fill:#d8e8f0"/><path d="M10.639 12.166a.5.5 0 0 1-.46-.303l-.459-1.069a.5.5 0 0 1 .919-.395l.459 1.069a.5.5 0 0 1-.459.698m-4.742-.293.485-1.069a.5.5 0 0 0-.911-.413l-.485 1.069a.5.5 0 0 0 .911.413m6.924-4.362c0 1.304-2.495 1.898-4.812 1.898s-4.812-.594-4.812-1.898c0-.852 1.068-1.4 2.453-1.678.027-1.084 1.072-1.959 2.358-1.959s2.332.876 2.358 1.959c1.386.278 2.454.825 2.454 1.678ZM6.673 5.68a13.2 13.2 0 0 1 2.672 0c-.128-.453-.687-.806-1.336-.806s-1.208.353-1.336.806m5.146 1.831c-.088-.254-1.36-.898-3.811-.898-2.472 0-3.746.656-3.812.905.052.182.838.614 2.336.801a.55.55 0 0 1-.041-.383c.069-.255.296-.391.531-.469a2.7 2.7 0 0 1 .656-.106q.357-.027.712.006c.363.034.811.105 1.018.404a.43.43 0 0 1 .117.311.4.4 0 0 1-.066.24c1.497-.183 2.29-.613 2.359-.81Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9.25" style="fill:#e3e3fe"/><path d="M13.113 4.078a8 8 0 1 1-2.227 15.845 8 8 0 0 1 2.227-15.845m.348-2.476C7.728.796 2.408 4.805 1.602 10.539s3.203 11.053 8.936 11.859 11.053-3.203 11.859-8.936-3.202-11.054-8.936-11.86" style="fill:#2e2e2e"/><path d="M7.725 18.754a7.95 7.95 0 0 0 8.566-.01l-2.91-6.562-2.762-.003-2.894 6.574Z" style="fill:#fdf1c0"/><path d="M14.452 8.835c.042-.119.07-.241.07-.369 0-.901-1.124-1.631-2.509-1.631s-2.509.73-2.509 1.631c0 .127.028.25.07.369-1.982.299-3.359.948-3.359 1.704 0 1.038 2.596 1.88 5.798 1.88s5.798-.842 5.798-1.88c0-.755-1.377-1.405-3.359-1.704" style="fill:#d8e8f0"/><path d="M10.023 11.593c.011-.002-.037.046 0 0m-.02.013c0 .006.002.005.002.012.011-.002.011.009 0-.012Zm8.307-1.068a.5.5 0 0 1-.035.217c-.148.666-.773 1.079-1.379 1.346-.763.336-1.586.522-2.416.64-.266.24-.605.414-.959.541-.345.205-.86.236-1.211.254-.08.004-.16-.008-.241-.007q-.252.007-.506-.015c-.067-.005-.135.002-.202-.006-.29-.034-.571-.079-.838-.201-.02-.009-.035-.025-.054-.036-.343-.129-.67-.291-.938-.536-.041-.037-.075-.082-.112-.123.037.041.07.085.111.121-.062-.009-.124-.014-.186-.024-.932-.148-1.946-.372-2.753-.889-.515-.33-.995-.864-.848-1.522.148-.667.806-1.069 1.387-1.325a9.3 9.3 0 0 1 1.905-.585c.021-.482.247-.952.67-1.301.898-.74 2.2-.902 3.308-.637.956.229 1.947.904 2.003 1.966 1.271.213 3.009.672 3.261 1.904a.5.5 0 0 1 .034.215Zm-8.262-2.306c1.322-.152 2.681-.108 3.943.043a.8.8 0 0 0-.083-.168 1.2 1.2 0 0 0-.32-.327c-.338-.242-.759-.375-1.169-.424-.728-.087-1.634.044-2.166.583a1.3 1.3 0 0 0-.204.293Zm3.973 3.384-.007-.009c-.059-.072.026.034-.013-.014-.008-.01-.076-.072-.035-.037a1.3 1.3 0 0 0-.344-.171c-.405-.137-.832-.185-1.256-.203-.718-.03-1.638-.023-2.241.329l-.058.038a.2.2 0 0 0-.046.045c-.002 0 .007-.009-.001-.003l-.019.016c-.013-.023-.004-.021-.001.001-.017.014-.031.028 0 .012h.003v.031l.017.08a.8.8 0 0 0 .156.241c.096.09.173.15.293.22q.126-.074.263-.12c.266-.088.558-.116.836-.137.318-.024.64-.022.958.008.308.029.71.074.997.243.073-.041.153-.07.219-.122.026-.021.1-.092.14-.134.059-.062.036-.035.069-.09l.039-.071.014-.039q.01-.035.017-.073v-.04Zm.003-.012s-.004-.001-.009-.009l.008.013zm3.287-1.066c-.026-.453-1.005-.741-1.331-.847-.969-.315-1.992-.452-3.006-.507-1.773-.096-3.813-.044-5.459.707-.248.113-.859.37-.782.723.088.406 1.001.669 1.313.771s.638.167.961.238l-.003-.025c.009-.432.301-.775.664-.978.452-.253.979-.344 1.487-.401a7.6 7.6 0 0 1 1.755.005c.757.09 1.867.325 2.069 1.174a.5.5 0 0 1 .043.219c0 .009-.004.014-.004.023.422-.087.838-.2 1.237-.352.281-.107 1.034-.371 1.055-.751Zm-1.43 7.1a.5.5 0 0 0 .248-.663l-1.151-2.521a.503.503 0 0 0-.663-.248.5.5 0 0 0-.248.663l1.151 2.521a.5.5 0 0 0 .663.247Zm-7.018-.244 1.173-2.521a.5.5 0 1 0-.906-.422l-1.173 2.521a.5.5 0 1 0 .906.422" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9.25" style="fill:#e3e3fe"/><path d="M12 4a8 8 0 1 1 0 16 8 8 0 0 1 0-16m0-2.5C6.21 1.5 1.5 6.21 1.5 12S6.21 22.5 12 22.5 22.5 17.79 22.5 12 17.79 1.5 12 1.5" style="fill:#fff"/><path d="M7.725 18.754a7.95 7.95 0 0 0 8.566-.01l-2.91-6.562-2.762-.003-2.894 6.574Z" style="fill:#fdf1c0"/><path d="M14.452 8.835c.042-.119.07-.241.07-.369 0-.901-1.124-1.631-2.509-1.631s-2.509.73-2.509 1.631c0 .127.028.25.07.369-1.982.299-3.359.948-3.359 1.704 0 1.038 2.596 1.88 5.798 1.88s5.798-.842 5.798-1.88c0-.755-1.377-1.405-3.359-1.704" style="fill:#d8e8f0"/><path d="M10.023 11.593c.011-.002-.037.046 0 0m-.02.013c0 .006.002.005.002.012.011-.002.011.009 0-.012Zm8.307-1.068a.5.5 0 0 1-.035.217c-.148.666-.773 1.079-1.379 1.346-.763.336-1.586.522-2.416.64-.266.24-.605.414-.959.541-.345.205-.86.236-1.211.254-.08.004-.16-.008-.241-.007q-.252.007-.506-.015c-.067-.005-.135.002-.202-.006-.29-.034-.571-.079-.838-.201-.02-.009-.035-.025-.054-.036-.343-.129-.67-.291-.938-.536-.041-.037-.075-.082-.112-.123.037.041.07.085.111.121-.062-.009-.124-.014-.186-.024-.932-.148-1.946-.372-2.753-.889-.515-.33-.995-.864-.848-1.522.148-.667.806-1.069 1.387-1.325a9.3 9.3 0 0 1 1.905-.585c.021-.482.247-.952.67-1.301.898-.74 2.2-.902 3.308-.637.956.229 1.947.904 2.003 1.966 1.271.213 3.009.672 3.261 1.904a.5.5 0 0 1 .034.215Zm-8.262-2.306c1.322-.152 2.681-.108 3.943.043a.8.8 0 0 0-.083-.168 1.2 1.2 0 0 0-.32-.327c-.338-.242-.759-.375-1.169-.424-.728-.087-1.634.044-2.166.583a1.3 1.3 0 0 0-.204.293Zm3.973 3.384-.007-.009c-.059-.072.026.034-.013-.014-.008-.01-.076-.072-.035-.037a1.3 1.3 0 0 0-.344-.171c-.405-.137-.832-.185-1.256-.203-.718-.03-1.638-.023-2.241.329l-.058.038a.2.2 0 0 0-.046.045c-.002 0 .007-.009-.001-.003l-.019.016c-.013-.023-.004-.021-.001.001-.017.014-.031.028 0 .012h.003v.031l.017.08a.8.8 0 0 0 .156.241c.096.09.173.15.293.22q.126-.074.263-.12c.266-.088.558-.116.836-.137.318-.024.64-.022.958.008.308.029.71.074.997.243.073-.041.153-.07.219-.122.026-.021.1-.092.14-.134.059-.062.036-.035.069-.09l.039-.071.014-.039q.01-.035.017-.073v-.04Zm.003-.012s-.004-.001-.009-.009l.008.013zm3.287-1.066c-.026-.453-1.005-.741-1.331-.847-.969-.315-1.992-.452-3.006-.507-1.773-.096-3.813-.044-5.459.707-.248.113-.859.37-.782.723.088.406 1.001.669 1.313.771s.638.167.961.238l-.003-.025c.009-.432.301-.775.664-.978.452-.253.979-.344 1.487-.401a7.6 7.6 0 0 1 1.755.005c.757.09 1.867.325 2.069 1.174a.5.5 0 0 1 .043.219c0 .009-.004.014-.004.023.422-.087.838-.2 1.237-.352.281-.107 1.034-.371 1.055-.751Zm-1.43 7.1a.5.5 0 0 0 .248-.663l-1.151-2.521a.503.503 0 0 0-.663-.248.5.5 0 0 0-.248.663l1.151 2.521a.5.5 0 0 0 .663.247Zm-7.018-.244 1.173-2.521a.5.5 0 1 0-.906-.422l-1.173 2.521a.5.5 0 1 0 .906.422" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle cx="18" cy="18" r="14" style="fill:#e3e3fe"/><path d="M18 6c6.627 0 12 5.373 12 12s-5.373 12-12 12S6 24.627 6 18 11.373 6 18 6m0-4C9.178 2 2 9.178 2 18s7.178 16 16 16 16-7.178 16-16S26.822 2 18 2"/><path d="M21.746 13.675c.001-.025.011-.048.011-.073 0-1.342-1.674-2.43-3.738-2.43s-3.738 1.088-3.738 2.43c0 .025.01.048.011.073-2.902.451-4.911 1.41-4.911 2.523 0 1.547 3.867 2.8 8.638 2.8s8.638-1.254 8.638-2.8c0-1.113-2.009-2.072-4.911-2.523" style="fill:#d8e8f0"/><path d="M11.813 28.268C13.621 29.36 15.734 30 18 30s4.397-.645 6.21-1.746l-4.153-9.365-4.115-.004z" style="fill:#fdf1c0"/><path d="M25.539 14.252c-1.038-.524-2.183-.815-3.333-1.008-.238-1.298-1.538-2.112-2.762-2.405-1.563-.375-3.418-.155-4.69.886a2.48 2.48 0 0 0-.904 1.52c-.999.17-1.987.412-2.916.809-.81.346-1.795.89-2.014 1.823-.216.921.527 1.651 1.246 2.084 1.194.72 2.647 1.038 4.007 1.249q.149.022.298.037l.089.011.133.017-.002-.002c1.173.882 2.816 1.115 4.23.923.726-.099 1.695-.389 2.403-.908l.057-.009-.004.004c1.257-.161 2.508-.427 3.669-.914.871-.365 1.906-.955 2.077-1.958a.5.5 0 0 0 .035-.212c-.038-.94-.843-1.555-1.618-1.946Zm-10.314-1.609c.848-.859 2.251-1.07 3.4-.94.847.096 2.114.514 2.505 1.384a25.4 25.4 0 0 0-5.693-.063c-.172.018-.345.043-.518.063.067-.153.166-.303.306-.445Zm5.47 5.883c-.099.068-.212.11-.317.167-.347-.406-1.121-.47-1.594-.514a8.6 8.6 0 0 0-1.426-.012c-.393.029-.804.071-1.18.195-.203.067-.416.168-.561.328l-.031-.013c-.295-.168-.684-.418-.787-.764-.06-.201.075-.353.322-.497.971-.567 2.343-.549 3.428-.504.668.028 1.347.104 1.982.326.191.067.394.154.551.284.119.098.173.193.177.285-.01.271-.32.552-.563.719Zm3.813-1.013c-.743.291-1.527.486-2.319.63l-.009.023h-.014c.012-.045.036-.085.045-.132a.5.5 0 0 0 .046-.228.5.5 0 0 0-.046-.227c-.235-1.159-1.802-1.474-2.796-1.598a11.4 11.4 0 0 0-2.674-.014c-.692.078-1.396.204-2.021.526-.475.245-.895.665-.934 1.224-.01.153.012.3.052.443a15 15 0 0 1-2.02-.541c-.578-.202-1.696-.579-1.905-1.255-.198-.638.77-1.098 1.212-1.309 2.505-1.195 5.672-1.271 8.385-1.117 1.563.088 3.149.303 4.636.811.583.199 1.979.654 2.011 1.448-.028.688-1.132 1.114-1.649 1.316m-1.048 9.536a.5.5 0 0 1-.458-.3l-.601-1.375a.5.5 0 1 1 .916-.4l.601 1.375a.5.5 0 0 1-.458.7m-1.604-3.665a.5.5 0 0 1-.458-.3l-.601-1.374a.499.499 0 1 1 .916-.4l.601 1.374a.5.5 0 0 1-.458.7m-9.265 3.669a.5.5 0 0 1-.458-.7l.599-1.375a.5.5 0 0 1 .917.399l-.599 1.375a.5.5 0 0 1-.459.3Zm1.596-3.667a.5.5 0 0 1-.458-.7l.599-1.375a.5.5 0 0 1 .917.399l-.599 1.375a.5.5 0 0 1-.459.3Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle cx="18" cy="18" r="14" style="fill:#e3e3fe"/><path d="M18 6c6.627 0 12 5.373 12 12s-5.373 12-12 12S6 24.627 6 18 11.373 6 18 6m0-4C9.178 2 2 9.178 2 18s7.178 16 16 16 16-7.178 16-16S26.822 2 18 2" style="fill:#fff"/><path d="M21.746 13.675c.001-.025.011-.048.011-.073 0-1.342-1.674-2.43-3.738-2.43s-3.738 1.088-3.738 2.43c0 .025.01.048.011.073-2.902.451-4.911 1.41-4.911 2.523 0 1.547 3.867 2.8 8.638 2.8s8.638-1.254 8.638-2.8c0-1.113-2.009-2.072-4.911-2.523" style="fill:#d8e8f0"/><path d="M11.813 28.268C13.621 29.36 15.734 30 18 30s4.397-.645 6.21-1.746l-4.153-9.365-4.115-.004z" style="fill:#fdf1c0"/><path d="M25.539 14.252c-1.038-.524-2.183-.815-3.333-1.008-.238-1.298-1.538-2.112-2.762-2.405-1.563-.375-3.418-.155-4.69.886a2.48 2.48 0 0 0-.904 1.52c-.999.17-1.987.412-2.916.809-.81.346-1.795.89-2.014 1.823-.216.921.527 1.651 1.246 2.084 1.194.72 2.647 1.038 4.007 1.249q.149.022.298.037l.089.011.133.017-.002-.002c1.173.882 2.816 1.115 4.23.923.726-.099 1.695-.389 2.403-.908l.057-.009-.004.004c1.257-.161 2.508-.427 3.669-.914.871-.365 1.906-.955 2.077-1.958a.5.5 0 0 0 .035-.212c-.038-.94-.843-1.555-1.618-1.946Zm-10.314-1.609c.848-.859 2.251-1.07 3.4-.94.847.096 2.114.514 2.505 1.384a25.4 25.4 0 0 0-5.693-.063c-.172.018-.345.043-.518.063.067-.153.166-.303.306-.445Zm5.47 5.883c-.099.068-.212.11-.317.167-.347-.406-1.121-.47-1.594-.514a8.6 8.6 0 0 0-1.426-.012c-.393.029-.804.071-1.18.195-.203.067-.416.168-.561.328l-.031-.013c-.295-.168-.684-.418-.787-.764-.06-.201.075-.353.322-.497.971-.567 2.343-.549 3.428-.504.668.028 1.347.104 1.982.326.191.067.394.154.551.284.119.098.173.193.177.285-.01.271-.32.552-.563.719Zm3.813-1.013c-.743.291-1.527.486-2.319.63l-.009.023h-.014c.012-.045.036-.085.045-.132a.5.5 0 0 0 .046-.228.5.5 0 0 0-.046-.227c-.235-1.159-1.802-1.474-2.796-1.598a11.4 11.4 0 0 0-2.674-.014c-.692.078-1.396.204-2.021.526-.475.245-.895.665-.934 1.224-.01.153.012.3.052.443a15 15 0 0 1-2.02-.541c-.578-.202-1.696-.579-1.905-1.255-.198-.638.77-1.098 1.212-1.309 2.505-1.195 5.672-1.271 8.385-1.117 1.563.088 3.149.303 4.636.811.583.199 1.979.654 2.011 1.448-.028.688-1.132 1.114-1.649 1.316m-1.048 9.536a.5.5 0 0 1-.458-.3l-.601-1.375a.5.5 0 1 1 .916-.4l.601 1.375a.5.5 0 0 1-.458.7m-1.604-3.665a.5.5 0 0 1-.458-.3l-.601-1.374a.499.499 0 1 1 .916-.4l.601 1.374a.5.5 0 0 1-.458.7m-9.265 3.669a.5.5 0 0 1-.458-.7l.599-1.375a.5.5 0 0 1 .917.399l-.599 1.375a.5.5 0 0 1-.459.3Zm1.596-3.667a.5.5 0 0 1-.458-.7l.599-1.375a.5.5 0 0 1 .917.399l-.599 1.375a.5.5 0 0 1-.459.3Z" style="fill:#0b3a52"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -6189,14 +6189,6 @@ button.module-calling-participants-list__contact {
}
}
.module-background-color {
&__default {
background-color: variables.$color-black-alpha-40;
}
@include mixins.avatar-colors();
}
.module-tooltip {
--tooltip-text-color: #{variables.$color-gray-75};
--tooltip-background-color: #{variables.$color-gray-02};

View File

@@ -5,7 +5,7 @@ import type { ReactNode, MouseEvent, FC } from 'react';
import { useLayoutEffect } from '@react-aria/utils';
import { computeAccessibleName } from 'dom-accessibility-api';
import { tw } from './tw.dom.js';
import { assert } from './_internal/assert.dom.js';
import { assert } from './_internal/assert.std.js';
import {
createStrictContext,
useStrictContext,

View File

@@ -0,0 +1,379 @@
// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { Meta } from '@storybook/react';
import type { JSX, ReactNode } from 'react';
import React from 'react';
import { action } from '@storybook/addon-actions';
import { AxoAvatar } from './AxoAvatar.dom.js';
import { tw } from './tw.dom.js';
import { BADGES_FIXTURE } from './_internal/storybook-fixtures.std.js';
import { _getAllAxoSymbolIconNames } from './_internal/AxoSymbolDefs.generated.std.js';
import { AxoTokens } from './AxoTokens.std.js';
export default {
title: 'Axo/AxoAvatar',
} satisfies Meta;
function Stack(props: { children: ReactNode }) {
return <div className={tw('flex flex-col gap-4')}>{props.children}</div>;
}
function Row(props: { children: ReactNode }) {
return (
<div className={tw('flex flex-wrap items-end gap-2')}>{props.children}</div>
);
}
function Cell(props: { children: ReactNode; label: ReactNode }) {
return (
<div className={tw('flex flex-col items-center gap-2')}>
{props.children}
<span className={tw('font-mono type-caption text-label-secondary')}>
{props.label}
</span>
</div>
);
}
function SizesTemplate(props: {
children: (size: AxoAvatar.Size) => ReactNode;
}) {
const sizes = AxoAvatar._getAllSizes();
return (
<Row>
{sizes.map(size => {
return (
<Cell key={size} label={size}>
{props.children(size)}
</Cell>
);
})}
</Row>
);
}
export function Colors(): JSX.Element {
const colors = AxoTokens.Avatar.getAllColorNames();
return (
<Row>
<Cell label="Default">
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Icon symbol="palette" />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
{colors.map(color => {
return (
<Cell key={color} label={color}>
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Initials initials="JK" color={color} />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
);
})}
</Row>
);
}
export function Gradients(): JSX.Element {
const gradientsCount = AxoTokens.Avatar.getGradientsCount();
return (
<Row>
{Array.from({ length: gradientsCount }, (_, index) => {
return (
<Cell label="">
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Gradient identifierHash={index} />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
);
})}
</Row>
);
}
export function Images(): JSX.Element {
return (
<SizesTemplate>
{size => (
<AxoAvatar.Root size={size}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Image
src="/fixtures/kitten-3-64-64.jpg"
srcWidth={64}
srcHeight={64}
blur={false}
fallbackIcon="person"
fallbackColor="A100"
/>
</AxoAvatar.Content>
</AxoAvatar.Root>
)}
</SizesTemplate>
);
}
export function BrokenImage(): JSX.Element {
return (
<Row>
<Cell label="Shows fallback icon">
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Image
src="/fake-path-should-not-exist.png"
srcWidth={64}
srcHeight={64}
blur={false}
fallbackIcon="person"
fallbackColor="A100"
/>
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
<Cell label="Stays blurred">
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Image
src="/fake-path-should-not-exist.png"
srcWidth={64}
srcHeight={64}
blur
fallbackIcon="person"
fallbackColor="A100"
/>
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
</Row>
);
}
export function Initials(): JSX.Element {
return (
<Stack>
<SizesTemplate>
{size => (
<AxoAvatar.Root size={size}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Initials initials="JK" color="A100" />
</AxoAvatar.Content>
</AxoAvatar.Root>
)}
</SizesTemplate>
<SizesTemplate>
{size => (
<AxoAvatar.Root size={size}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Initials initials="WW" color="A100" />
</AxoAvatar.Content>
</AxoAvatar.Root>
)}
</SizesTemplate>
</Stack>
);
}
export function Icons(): JSX.Element {
const icons = _getAllAxoSymbolIconNames();
return (
<SizesTemplate>
{size => (
<AxoAvatar.Root size={size}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Icon symbol={icons[size % icons.length]} />
</AxoAvatar.Content>
</AxoAvatar.Root>
)}
</SizesTemplate>
);
}
export function Presets(): JSX.Element {
const contactPresets = AxoTokens.Avatar.getAllContactPresetNames();
const groupPresets = AxoTokens.Avatar.getAllGroupPresetNames();
return (
<Stack>
<Row>
{contactPresets.map(preset => {
return (
<Cell key={preset} label={preset}>
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Preset preset={preset} />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
);
})}
</Row>
<Row>
{groupPresets.map(preset => {
return (
<Cell key={preset} label={preset}>
<AxoAvatar.Root size={64}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Preset preset={preset} />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
);
})}
</Row>
</Stack>
);
}
function ActionsTemplate(props: { ring: boolean }) {
const ring = props.ring ? 'unread' : null;
return (
<Row>
<Cell label="Default">
<AxoAvatar.Root size={48} ring={ring}>
<AxoAvatar.Content
label="View Jamie's Profile"
onClick={action('onClick')}
>
<AxoAvatar.Initials initials="JK" color="A100" />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
<Cell label="Static badge">
<AxoAvatar.Root size={48} ring={ring}>
<AxoAvatar.Content
label="View Jamie's profile"
onClick={action('onClick')}
>
<AxoAvatar.Initials initials="JK" color="A100" />
</AxoAvatar.Content>
<AxoAvatar.Badge
label={BADGES_FIXTURE.planet.name}
svgs={BADGES_FIXTURE.planet.svgs}
/>
</AxoAvatar.Root>
</Cell>
<Cell label="Clickable badge">
<AxoAvatar.Root size={48} ring={ring}>
<AxoAvatar.Content
label="View Jamie's profile"
onClick={action('onClick')}
>
<AxoAvatar.Initials initials="JK" color="A100" />
</AxoAvatar.Content>
<AxoAvatar.Badge
label={BADGES_FIXTURE.planet.name}
svgs={BADGES_FIXTURE.planet.svgs}
onClick={action('onClick')}
/>
</AxoAvatar.Root>
</Cell>
</Row>
);
}
export function Actions(): JSX.Element {
return (
<Stack>
<ActionsTemplate ring={false} />
<h2>With focus ring</h2>
<ActionsTemplate ring />
</Stack>
);
}
export function Badges(): JSX.Element {
return (
<Stack>
{Object.values(BADGES_FIXTURE).map(badge => {
return (
<SizesTemplate key={badge.id}>
{size => (
<AxoAvatar.Root size={size}>
<AxoAvatar.Content label={null}>
<AxoAvatar.Initials initials={`${size}`} color="A140" />
</AxoAvatar.Content>
<AxoAvatar.Badge
label={badge.name}
svgs={badge.svgs}
onClick={action('onClick')}
/>
</AxoAvatar.Root>
)}
</SizesTemplate>
);
})}
</Stack>
);
}
export function Stories(): JSX.Element {
return (
<Stack>
<SizesTemplate>
{size => (
<AxoAvatar.Root size={size} ring="unread">
<AxoAvatar.Content
label="View Jamie's stories"
onClick={action('onClick')}
>
<AxoAvatar.Initials initials="JK" color="A100" />
</AxoAvatar.Content>
<AxoAvatar.Badge
label={BADGES_FIXTURE.rocket.name}
svgs={BADGES_FIXTURE.rocket.svgs}
/>
</AxoAvatar.Root>
)}
</SizesTemplate>
<SizesTemplate>
{size => (
<AxoAvatar.Root size={size} ring="read">
<AxoAvatar.Content
label="View Jamie's stories"
onClick={action('onClick')}
>
<AxoAvatar.Initials initials="JK" color="A100" />
</AxoAvatar.Content>
</AxoAvatar.Root>
)}
</SizesTemplate>
</Stack>
);
}
export function ClickToView(): JSX.Element {
const sizes = AxoAvatar._getAllSizes().filter(size => {
return size >= AxoAvatar.MIN_CLICK_TO_VIEW_SIZE;
});
return (
<Row>
{sizes.map(size => {
return (
<Cell key={size} label={size}>
<AxoAvatar.Root size={size}>
<AxoAvatar.Content
label="Click to view Kitten's profile photo"
onClick={action('onClick')}
>
<AxoAvatar.Image
src="/fixtures/kitten-3-64-64.jpg"
srcWidth={64}
srcHeight={64}
blur
fallbackIcon="person"
fallbackColor="A140"
/>
<AxoAvatar.ClickToView label="View" />
</AxoAvatar.Content>
</AxoAvatar.Root>
</Cell>
);
})}
</Row>
);
}

526
ts/axo/AxoAvatar.dom.tsx Normal file
View File

@@ -0,0 +1,526 @@
// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type {
CSSProperties,
FC,
ImgHTMLAttributes,
MouseEventHandler,
ReactNode,
} from 'react';
import React, { memo, useCallback, useMemo, useRef, useState } from 'react';
import { AxoSymbol } from './AxoSymbol.dom.js';
import type { TailwindStyles } from './tw.dom.js';
import { tw } from './tw.dom.js';
import {
createStrictContext,
useStrictContext,
} from './_internal/StrictContext.dom.js';
import { assert } from './_internal/assert.std.js';
import { AxoTokens } from './AxoTokens.std.js';
const Namespace = 'AxoAvatar';
/**
* @example Anatomy
* ```tsx
* <AxoAvatar.Root>
* <AxoAvatar.Content>
* {
* <AxoAvatar.Icon/> ||
* <AxoAvatar.Initials/> ||
* <AxoAvatar.Gradient/> ||
* <AxoAvatar.Image/>
* }
* <AxoAvatar.ClickToView/>
* </AxoAvatar.Content>
* <AxoAvatar.Badge/>
* </AxoAlertDialog.Root>
* ```
*/
export namespace AxoAvatar {
export type Size =
| 20
| 24
| 28
| 30
| 32
| 36
| 40
| 48
| 52
| 64
| 72
| 80
| 96
| 216;
const SizeContext = createStrictContext<Size>(`${Namespace}.Root`);
const RootSizes: Record<Size, TailwindStyles> = {
20: tw('size-[20px]'),
24: tw('size-[24px]'),
28: tw('size-[28px]'),
30: tw('size-[30px]'),
32: tw('size-[32px]'),
36: tw('size-[36px]'),
40: tw('size-[40px]'),
48: tw('size-[48px]'),
52: tw('size-[52px]'),
64: tw('size-[64px]'),
72: tw('size-[72px]'),
80: tw('size-[80px]'),
96: tw('size-[96px]'),
216: tw('size-[216px]'),
};
const RingSizes: Record<Size, TailwindStyles | null> = {
20: tw('border-[1px] p-[1.5px]'),
24: tw('border-[1px] p-[1.5px]'),
28: tw('border-[1.5px] p-[2px]'),
30: tw('border-[1.5px] p-[2px]'),
32: tw('border-[1.5px] p-[2px]'),
36: tw('border-[1.5px] p-[2px]'),
40: tw('border-[1.5px] p-[2px]'),
48: tw('border-[2px] p-[3px]'),
52: tw('border-[2px] p-[3px]'),
64: tw('border-[2px] p-[3px]'),
72: tw('border-[2.5px] p-[3.5px]'),
80: tw('border-[2.5px] p-[3.5px]'),
96: tw('border-[3px] p-[4px]'),
216: tw('border-[4px] p-[6px]'),
};
export function _getAllSizes(): ReadonlyArray<Size> {
return Object.keys(RootSizes).map(size => Number(size) as Size);
}
const DefaultColor = tw('bg-fill-secondary text-label-primary');
/**
* Component: <AxoAvatar.Root>
* ---------------------------
*/
export type RootProps = Readonly<{
size: Size;
ring?: 'unread' | 'read' | null;
children: ReactNode;
}>;
export const Root: FC<RootProps> = memo(props => {
return (
<SizeContext.Provider value={props.size}>
<div
className={tw(
'relative shrink-0 rounded-full contain-layout select-none',
RootSizes[props.size],
props.ring != null && RingSizes[props.size],
props.ring === 'unread' && 'border-border-selected',
props.ring === 'read' && 'border-label-secondary'
)}
>
{props.children}
</div>
</SizeContext.Provider>
);
});
Root.displayName = `${Namespace}.Root`;
/**
* Component: <AxoAvatar.Content>
* ------------------------------
*/
export type ContentProps = Readonly<{
label: string | null;
onClick?: MouseEventHandler<HTMLButtonElement> | null;
children: ReactNode;
}>;
export const Content: FC<ContentProps> = memo(props => {
const ariaLabel = props.label ?? undefined;
const baseClassName = tw('relative size-full rounded-full contain-strict');
let result: ReactNode;
if (props.onClick != null) {
result = (
<button
type="button"
aria-label={ariaLabel}
className={tw(
baseClassName,
'outline-0 outline-border-focused focused:outline-[2.5px]'
)}
onClick={props.onClick}
>
{props.children}
</button>
);
} else {
result = (
<div role="img" aria-label={ariaLabel} className={baseClassName}>
{props.children}
</div>
);
}
return result;
});
Content.displayName = `${Namespace}.Content`;
/**
* Component: <AxoAvatar.Icon>
* ---------------------------
*/
export type IconProps = Readonly<{
symbol: AxoSymbol.IconName;
}>;
export const Icon: FC<IconProps> = memo(props => {
const size = useStrictContext(SizeContext);
return (
<span
className={tw(
'flex size-full items-center justify-center',
DefaultColor
)}
style={{ fontSize: size * 0.55 }}
>
<AxoSymbol.InlineGlyph symbol={props.symbol} label={null} />
</span>
);
});
Icon.displayName = `${Namespace}.Icon`;
/**
* Component: <AxoAvatar.Image>
* ----------------------------
*/
export type ImageProps = Readonly<{
src: string;
srcWidth: number;
srcHeight: number;
blur: boolean;
fallbackIcon: AxoSymbol.IconName;
fallbackColor: AxoTokens.Avatar.ColorName;
}>;
export const Image: FC<ImageProps> = memo(props => {
const { src } = props;
const ref = useRef<HTMLImageElement>(null);
const [loadedSrc, setLoadedSrc] = useState<string | null>(null);
const [brokenSrc, setBrokenSrc] = useState<string | null>(null);
const isLoaded = src === loadedSrc;
const isBroken = src === brokenSrc;
const handleError = useCallback(() => {
setBrokenSrc(src);
}, [src]);
const handleLoad = useCallback(() => {
setLoadedSrc(src);
}, [src]);
if (!isLoaded && isBroken) {
const color = AxoTokens.Avatar.getColorValues(props.fallbackColor);
return (
<div
className={tw('size-full', props.blur && 'blur-thin')}
style={{ background: color.bg, color: color.fg }}
>
<Icon symbol={props.fallbackIcon} />
</div>
);
}
return (
// eslint-disable-next-line jsx-a11y/alt-text
<img
ref={ref}
src={props.src}
width={props.srcWidth}
height={props.srcHeight}
decoding="async"
// eslint-disable-next-line react/no-unknown-property
fetchPriority="low"
loading="lazy"
draggable={false}
onError={handleError}
onLoad={handleLoad}
className={tw(
'size-full object-cover object-center',
props.blur && 'scale-110 blur-thin',
'transition-[filter] duration-100 ease-out-cubic',
!isLoaded && 'opacity-0'
)}
/>
);
});
Image.displayName = `${Namespace}.Image`;
/**
* Component: <AxoAvatar.PresetImage>
*/
export type PresetProps = Readonly<{
preset: AxoTokens.Avatar.PresetName;
}>;
export const Preset: FC<PresetProps> = memo(props => {
const { preset } = props;
const src = useMemo(() => {
return `images/avatars/avatar_${preset}.svg`;
}, [preset]);
const style = useMemo((): CSSProperties => {
const colorName = AxoTokens.Avatar.getPresetColorName(preset);
const color = AxoTokens.Avatar.getColorValues(colorName);
return { background: color.bg };
}, [preset]);
return (
// eslint-disable-next-line jsx-a11y/alt-text
<img
src={src}
width={1024}
height={1024}
className={tw('size-full object-cover object-center')}
style={style}
/>
);
});
Preset.displayName = `${Namespace}.Preset`;
/**
* Component: <AxoAvatar.ClickToView>
* ----------------------------------
*/
export const MIN_CLICK_TO_VIEW_SIZE = 80;
export type ClickToViewProps = Readonly<{
label: string;
}>;
export const ClickToView: FC<ClickToViewProps> = memo(props => {
const size = useStrictContext(SizeContext);
assert(
size >= MIN_CLICK_TO_VIEW_SIZE,
`Cannot render ${Namespace}.ClickToView at a size smaller than ${MIN_CLICK_TO_VIEW_SIZE}`
);
return (
<div
className={tw(
'absolute inset-0 rounded-full',
'flex flex-col items-center-safe justify-center-safe gap-2',
// eslint-disable-next-line better-tailwindcss/no-restricted-classes
'bg-[#000]/20 text-[#fff] hover:bg-[#000]/40',
'outline-0 outline-border-focused focused:outline-[2.5px]'
)}
>
<AxoSymbol.Icon size={24} symbol="raisehand" label={null} />
<span className={tw('type-body-medium')}>{props.label}</span>
</div>
);
});
ClickToView.displayName = `${Namespace}.ClickToView`;
/**
* Component: <AxoAvatar.Initials>
* -------------------------------
*/
export type InitialsProps = Readonly<{
initials: string;
color: AxoTokens.Avatar.ColorName;
}>;
export const Initials: FC<InitialsProps> = memo(props => {
const style = useMemo((): CSSProperties => {
const color = AxoTokens.Avatar.getColorValues(props.color);
return { fill: color.fg, background: color.bg };
}, [props.color]);
return (
<svg
width={256}
height={256}
viewBox="0 0 256 256"
className={tw('size-full fill-current')}
style={style}
>
<text
x="50%"
y="50%"
dominantBaseline="central"
textAnchor="middle"
fontSize={120}
>
{props.initials}
</text>
</svg>
);
});
Initials.displayName = `${Namespace}.Initials`;
/**
* Component: <AxoAvatar.Gradient>
* -------------------------------
*/
export type GradientProps = Readonly<{
identifierHash: number;
}>;
export const Gradient: FC<GradientProps> = memo(props => {
const { identifierHash } = props;
const style = useMemo((): CSSProperties => {
const gradient = AxoTokens.Avatar.getGradientValuesByHash(identifierHash);
return {
backgroundImage:
AxoTokens.Avatar.gradientToCssBackgroundImage(gradient),
};
}, [identifierHash]);
return (
<div className={tw('absolute inset-0 rounded-full')} style={style} />
);
});
Gradient.displayName = `${Namespace}.Gradient`;
/**
* Component: <AxoAvatar.Badge>
* ----------------------------
*/
export type BadgeSvg = Readonly<{
light: string;
dark: string;
}>;
export type BadgeSvgs = Readonly<{
16: BadgeSvg;
24: BadgeSvg;
36: BadgeSvg;
}>;
export type BadgeProps = Readonly<{
label: string;
svgs: BadgeSvgs;
onClick?: MouseEventHandler<HTMLButtonElement> | null;
}>;
const BadgeSvgSizes: Record<Size, keyof BadgeSvgs | null> = {
20: null,
24: null,
28: 16,
30: 16,
32: 16,
36: 16,
40: 24,
48: 24,
52: 24,
64: 24,
72: 36,
80: 36,
96: 36,
216: 36,
};
export const Badge: FC<BadgeProps> = memo(props => {
const { svgs } = props;
const avatarSize = useStrictContext(SizeContext);
const badge = useMemo(() => {
const badgeSize = BadgeSvgSizes[avatarSize];
if (badgeSize == null) {
return null;
}
const svg = svgs[badgeSize];
if (svg == null) {
return null;
}
return { size: badgeSize, light: svg.light, dark: svg.dark };
}, [svgs, avatarSize]);
if (badge == null) {
return null;
}
const baseImageProps: Omit<
ImgHTMLAttributes<HTMLImageElement>,
'src' | 'className'
> = {
width: badge.size,
height: badge.size,
decoding: 'async',
fetchPriority: 'low',
loading: 'lazy',
draggable: false,
};
const children = (
<>
{/* eslint-disable-next-line jsx-a11y/alt-text */}
<img
{...baseImageProps}
src={badge.light}
className={tw('size-full dark:hidden')}
/>
{/* eslint-disable-next-line jsx-a11y/alt-text */}
<img
{...baseImageProps}
src={badge.dark}
className={tw('size-full not-dark:hidden')}
/>
</>
);
const baseClassName = tw(
'absolute rounded-full',
// Proportionately sized & positioned based on the size of the avatar
'-end-[calc(2.75px-3%)] -bottom-[calc(6.25px-1%)] size-[calc(5px+37.5%)]'
);
let result: ReactNode;
if (props.onClick != null) {
result = (
<button
type="button"
aria-label={props.label}
onClick={props.onClick}
className={tw(
baseClassName,
'outline-0 -outline-offset-[2.5px] outline-border-focused focused:outline-[2.5px]'
)}
>
{children}
</button>
);
} else {
result = (
<div className={tw(baseClassName, 'pointer-events-none')}>
{children}
</div>
);
}
return result;
});
Badge.displayName = `${Namespace}.Badge`;
}

View File

@@ -5,7 +5,7 @@ import React, { memo, useMemo } from 'react';
import { AxoSymbol } from './AxoSymbol.dom.js';
import type { TailwindStyles } from './tw.dom.js';
import { tw } from './tw.dom.js';
import { unreachable } from './_internal/assert.dom.js';
import { unreachable } from './_internal/assert.std.js';
const Namespace = 'AxoBadge';

View File

@@ -5,7 +5,7 @@ import type { ButtonHTMLAttributes, FC, ForwardedRef, ReactNode } from 'react';
import type { TailwindStyles } from './tw.dom.js';
import { tw } from './tw.dom.js';
import { AxoSymbol } from './AxoSymbol.dom.js';
import { assert } from './_internal/assert.dom.js';
import { assert } from './_internal/assert.std.js';
import type { SpinnerVariant } from '../components/SpinnerV2.dom.js';
import { SpinnerV2 } from '../components/SpinnerV2.dom.js';

View File

@@ -18,7 +18,7 @@ import type {
import { AxoSymbol } from './AxoSymbol.dom.js';
import { AxoBaseMenu } from './_internal/AxoBaseMenu.dom.js';
import { tw } from './tw.dom.js';
import { assert } from './_internal/assert.dom.js';
import { assert } from './_internal/assert.std.js';
import {
createStrictContext,
useStrictContext,

View File

@@ -20,7 +20,7 @@ import {
useAriaLabellingContext,
useCreateAriaLabellingContext,
} from './_internal/AriaLabellingContext.dom.js';
import { assert } from './_internal/assert.dom.js';
import { assert } from './_internal/assert.std.js';
import {
getElementAriaRole,
isAriaWidgetRole,

View File

@@ -4,7 +4,7 @@
import type { FC } from 'react';
import React, { memo } from 'react';
import type { AxoBaseMenu } from './_internal/AxoBaseMenu.dom.js';
import { unreachable } from './_internal/assert.dom.js';
import { unreachable } from './_internal/assert.std.js';
import { AxoDropdownMenu } from './AxoDropdownMenu.dom.js';
import { AxoContextMenu } from './AxoContextMenu.dom.js';
import {

188
ts/axo/AxoTokens.std.ts Normal file
View File

@@ -0,0 +1,188 @@
// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from './_internal/assert.std.js';
export namespace AxoTokens {
export type HexColor = `#${string}` & { HexColor: never };
function hexColor(input: `#${string}`): HexColor {
return input as HexColor;
}
export namespace Avatar {
export type ColorName =
| 'A100'
| 'A110'
| 'A120'
| 'A130'
| 'A140'
| 'A150'
| 'A160'
| 'A170'
| 'A180'
| 'A190'
| 'A200'
| 'A210';
export type ColorValues = Readonly<{
bg: HexColor;
fg: HexColor;
}>;
const Colors: Record<ColorName, ColorValues> = {
A100: { bg: hexColor('#e3e3fe'), fg: hexColor('#3838f5') },
A110: { bg: hexColor('#dde7fc'), fg: hexColor('#1251d3') },
A120: { bg: hexColor('#d8e8f0'), fg: hexColor('#086da0') },
A130: { bg: hexColor('#cde4cd'), fg: hexColor('#067906') },
A140: { bg: hexColor('#eae0fd'), fg: hexColor('#661aff') },
A150: { bg: hexColor('#f5e3fe'), fg: hexColor('#9f00f0') },
A160: { bg: hexColor('#f6d8ec'), fg: hexColor('#b8057c') },
A170: { bg: hexColor('#f5d7d7'), fg: hexColor('#be0404') },
A180: { bg: hexColor('#fef5d0'), fg: hexColor('#836b01') },
A190: { bg: hexColor('#eae6d5'), fg: hexColor('#7d6f40') },
A200: { bg: hexColor('#d2d2dc'), fg: hexColor('#4f4f6d') },
A210: { bg: hexColor('#d7d7d9'), fg: hexColor('#5c5c5c') },
};
const ALL_COLOR_NAMES = Object.keys(Colors) as ReadonlyArray<ColorName>;
export function getColorValues(color: ColorName): ColorValues {
return assert(Colors[color], `Missing avatar color: ${color}`);
}
export function getAllColorNames(): ReadonlyArray<ColorName> {
return ALL_COLOR_NAMES;
}
export function getColorNameByHash(hash: number): ColorName {
assert(
Number.isInteger(hash) && hash >= 0,
'Hash must be positive integer'
);
return ALL_COLOR_NAMES[hash % ALL_COLOR_NAMES.length];
}
export type GradientValues = Readonly<{
start: HexColor;
end: HexColor;
}>;
const Gradients: ReadonlyArray<GradientValues> = [
{ start: hexColor('#252568'), end: hexColor('#9C8F8F') },
{ start: hexColor('#2A4275'), end: hexColor('#9D9EA1') },
{ start: hexColor('#2E4B5F'), end: hexColor('#8AA9B1') },
{ start: hexColor('#2E426C'), end: hexColor('#7A9377') },
{ start: hexColor('#1A341A'), end: hexColor('#807F6E') },
{ start: hexColor('#464E42'), end: hexColor('#D5C38F') },
{ start: hexColor('#595643'), end: hexColor('#93A899') },
{ start: hexColor('#2C2F36'), end: hexColor('#687466') },
{ start: hexColor('#2B1E18'), end: hexColor('#968980') },
{ start: hexColor('#7B7067'), end: hexColor('#A5A893') },
{ start: hexColor('#706359'), end: hexColor('#BDA194') },
{ start: hexColor('#383331'), end: hexColor('#A48788') },
{ start: hexColor('#924F4F'), end: hexColor('#897A7A') },
{ start: hexColor('#663434'), end: hexColor('#C58D77') },
{ start: hexColor('#8F4B02'), end: hexColor('#AA9274') },
{ start: hexColor('#784747'), end: hexColor('#8C8F6F') },
{ start: hexColor('#747474'), end: hexColor('#ACACAC') },
{ start: hexColor('#49484C'), end: hexColor('#A5A6B5') },
{ start: hexColor('#4A4E4D'), end: hexColor('#ABAFAE') },
{ start: hexColor('#3A3A3A'), end: hexColor('#929887') },
];
export function getGradientValuesByHash(hash: number): GradientValues {
assert(
Number.isInteger(hash) && hash >= 0,
'Hash must be positive integer'
);
return Gradients[hash % Gradients.length];
}
export function getGradientsCount(): number {
return Gradients.length;
}
export function gradientToCssBackgroundImage(
gradient: GradientValues
): string {
return `linear-gradient(to bottom, ${gradient.start}, ${gradient.end})`;
}
export type ContactPresetName =
| 'abstract_01'
| 'abstract_02'
| 'abstract_03'
| 'cat'
| 'dog'
| 'fox'
| 'tucan'
| 'pig'
| 'dinosour'
| 'sloth'
| 'incognito'
| 'ghost';
export type GroupPresetName =
| 'balloon'
| 'book'
| 'briefcase'
| 'celebration'
| 'drink'
| 'football'
| 'heart'
| 'house'
| 'melon'
| 'soccerball'
| 'sunset'
| 'surfboard';
export type PresetName = ContactPresetName | GroupPresetName;
const ContactPresetColors: Record<ContactPresetName, ColorName> = {
abstract_01: 'A130',
abstract_02: 'A120',
abstract_03: 'A170',
cat: 'A190',
dog: 'A140',
fox: 'A190',
tucan: 'A120',
pig: 'A160',
dinosour: 'A130',
sloth: 'A180',
incognito: 'A210',
ghost: 'A100',
};
const GroupPresetColors: Record<GroupPresetName, ColorName> = {
balloon: 'A180',
book: 'A120',
briefcase: 'A110',
celebration: 'A170',
drink: 'A100',
football: 'A210',
heart: 'A100',
house: 'A180',
melon: 'A120',
soccerball: 'A110',
sunset: 'A130',
surfboard: 'A210',
};
const PresetColors = { ...ContactPresetColors, ...GroupPresetColors };
export function getAllContactPresetNames(): ReadonlyArray<ContactPresetName> {
return Object.keys(
ContactPresetColors
) as ReadonlyArray<ContactPresetName>;
}
export function getAllGroupPresetNames(): ReadonlyArray<GroupPresetName> {
return Object.keys(GroupPresetColors) as ReadonlyArray<GroupPresetName>;
}
export function getPresetColorName(preset: PresetName): ColorName {
return assert(PresetColors[preset], `Missing avatar preset: ${preset}`);
}
}
}

View File

@@ -12,7 +12,7 @@ import React, {
import { Tooltip, Direction } from 'radix-ui';
import { computeAccessibleName } from 'dom-accessibility-api';
import { tw } from './tw.dom.js';
import { assert } from './_internal/assert.dom.js';
import { assert } from './_internal/assert.std.js';
import {
getElementAriaRole,
isAriaWidgetRole,

View File

@@ -3,7 +3,7 @@
import type { AriaRole as ReactAriaRole } from 'react';
import { getRole } from 'dom-accessibility-api';
import { assert } from './assert.dom.js';
import { assert } from './assert.std.js';
const AbstractRoles = {
/** Abstract Roles: https://www.w3.org/TR/wai-aria-1.2/#abstract_roles */

View File

@@ -1,6 +1,6 @@
// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from './assert.dom.js';
import { assert } from './assert.std.js';
export type ScrollbarWidth = 'auto' | 'thin' | 'none';

View File

@@ -0,0 +1,79 @@
// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
type BadgeFixture = Readonly<{
id: string;
category: 'donor' | 'other';
name: string;
description: string;
svg: { size: 160; src: string };
svgs: {
16: { size: 16; light: string; dark: string };
24: { size: 24; light: string; dark: string };
36: { size: 36; light: string; dark: string };
};
}>;
// prettier-ignore
export const BADGES_FIXTURE = {
planet: {
id: 'R_MED',
category: 'donor',
name: 'Signal Planet',
description: '{short_name} supports Signal with a monthly donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.',
svg: { size: 160, src: 'fixtures/badges/planet/planet-160.svg' },
svgs: {
16: { size: 16, light: 'fixtures/badges/planet/planet-16-light.svg', dark: 'fixtures/badges/planet/planet-16-dark.svg' },
24: { size: 24, light: 'fixtures/badges/planet/planet-24-light.svg', dark: 'fixtures/badges/planet/planet-24-dark.svg' },
36: { size: 36, light: 'fixtures/badges/planet/planet-36-light.svg', dark: 'fixtures/badges/planet/planet-36-dark.svg' },
},
},
rocket: {
id: 'BOOST',
category: 'donor',
name: 'Signal Boost',
description: '{short_name} supported Signal with a donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.',
svg: { size: 160, src: 'fixtures/badges/rocket/rocket-160.svg' },
svgs: {
16: { size: 16, light: 'fixtures/badges/rocket/rocket-16-light.svg', dark: 'fixtures/badges/rocket/rocket-16-dark.svg' },
24: { size: 24, light: 'fixtures/badges/rocket/rocket-24-light.svg', dark: 'fixtures/badges/rocket/rocket-24-dark.svg' },
36: { size: 36, light: 'fixtures/badges/rocket/rocket-36-light.svg', dark: 'fixtures/badges/rocket/rocket-36-dark.svg' },
},
},
star: {
id: 'R_LOW',
category: 'donor',
name: 'Signal Star',
description: '{short_name} supports Signal with a monthly donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.',
svg: { size: 160, src: 'fixtures/badges/star/star-160.svg' },
svgs: {
16: { size: 16, light: 'fixtures/badges/star/star-16-light.svg', dark: 'fixtures/badges/star/star-16-dark.svg' },
24: { size: 24, light: 'fixtures/badges/star/star-24-light.svg', dark: 'fixtures/badges/star/star-24-dark.svg' },
36: { size: 36, light: 'fixtures/badges/star/star-36-light.svg', dark: 'fixtures/badges/star/star-36-dark.svg' },
},
},
sun: {
id: 'R_HIGH',
category: 'donor',
name: 'Signal Sun',
description: '{short_name} supports Signal with a monthly donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.',
svg: { size: 160, src: 'fixtures/badges/sun/sun-160.svg' },
svgs: {
16: { size: 16, light: 'fixtures/badges/sun/sun-16-light.svg', dark: 'fixtures/badges/sun/sun-16-dark.svg' },
24: { size: 24, light: 'fixtures/badges/sun/sun-24-light.svg', dark: 'fixtures/badges/sun/sun-24-dark.svg' },
36: { size: 36, light: 'fixtures/badges/sun/sun-36-light.svg', dark: 'fixtures/badges/sun/sun-36-dark.svg' },
},
},
ufo: {
id: 'GIFT',
category: 'donor',
name: 'Signal UFO',
description: 'A friend made a donation to Signal on behalf of {short_name}. Signal is a nonprofit with no advertisers or investors, supported only by people like you.',
svg: { size: 160, src: 'fixtures/badges/ufo/ufo-160.svg' },
svgs: {
16: { size: 16, light: 'fixtures/badges/ufo/ufo-16-light.svg', dark: 'fixtures/badges/ufo/ufo-16-dark.svg' },
24: { size: 24, light: 'fixtures/badges/ufo/ufo-24-light.svg', dark: 'fixtures/badges/ufo/ufo-24-dark.svg' },
36: { size: 36, light: 'fixtures/badges/ufo/ufo-36-light.svg', dark: 'fixtures/badges/ufo/ufo-36-dark.svg' },
},
},
} as const satisfies Record<string, BadgeFixture>;

View File

@@ -1,94 +1,15 @@
// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
export const AvatarColorMap = new Map([
[
'A100',
{
bg: '#e3e3fe',
fg: '#3838f5',
},
],
[
'A110',
{
bg: '#dde7fc',
fg: '#1251d3',
},
],
[
'A120',
{
bg: '#d8e8f0',
fg: '#086da0',
},
],
[
'A130',
{
bg: '#cde4cd',
fg: '#067906',
},
],
[
'A140',
{
bg: '#eae0fd',
fg: '#661aff',
},
],
[
'A150',
{
bg: '#f5e3fe',
fg: '#9f00f0',
},
],
[
'A160',
{
bg: '#f6d8ec',
fg: '#b8057c',
},
],
[
'A170',
{
bg: '#f5d7d7',
fg: '#be0404',
},
],
[
'A180',
{
bg: '#fef5d0',
fg: '#836b01',
},
],
[
'A190',
{
bg: '#eae6d5',
fg: '#7d6f40',
},
],
[
'A200',
{
bg: '#d2d2dc',
fg: '#4f4f6d',
},
],
[
'A210',
{
bg: '#d7d7d9',
fg: '#5c5c5c',
},
],
] as const);
import { AxoTokens } from '../axo/AxoTokens.std.js';
export const AvatarColors = Array.from(AvatarColorMap.keys()).sort();
export const AvatarColorMap = new Map(
AxoTokens.Avatar.getAllColorNames().map(colorName => {
return [colorName, AxoTokens.Avatar.getColorValues(colorName)];
})
);
export const AvatarColors = AxoTokens.Avatar.getAllColorNames();
export const AVATAR_COLOR_COUNT = AvatarColors.length;
@@ -164,7 +85,7 @@ export type CustomColorType = {
deg?: number;
};
export type AvatarColorType = (typeof AvatarColors)[number];
export type AvatarColorType = AxoTokens.Avatar.ColorName;
export type ConversationColorType =
| (typeof ConversationColors)[number]

View File

@@ -1,21 +1,20 @@
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { AVATAR_COLOR_COUNT, AvatarColors } from '../types/Colors.std.js';
import type { AvatarColorType } from '../types/Colors.std.js';
import { AxoTokens } from '../axo/AxoTokens.std.js';
// See https://github.com/signalapp/ringrtc/blob/49b4b8a16f997c7fa9a429e96aa83f80b2065c63/src/rust/src/lite/call_links/base16.rs#L8
const BASE_16_CONSONANT_ALPHABET = 'bcdfghkmnpqrstxz';
// See https://github.com/signalapp/ringrtc/blob/49b4b8a16f997c7fa9a429e96aa83f80b2065c63/src/rust/src/lite/call_links/base16.rs#L127-L139
export function getColorForCallLink(rootKey: string): AvatarColorType {
export function getColorForCallLink(
rootKey: string
): AxoTokens.Avatar.ColorName {
const rootKeyStart = rootKey.slice(0, 2);
const upper = (BASE_16_CONSONANT_ALPHABET.indexOf(rootKeyStart[0]) || 0) * 16;
const lower = BASE_16_CONSONANT_ALPHABET.indexOf(rootKeyStart[1]) || 0;
const firstByte = upper + lower;
const index = firstByte % AVATAR_COLOR_COUNT;
return AvatarColors[index];
return AxoTokens.Avatar.getColorNameByHash(firstByte);
}

View File

@@ -1,33 +1,11 @@
// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
const GRADIENTS = [
['#252568', '#9C8F8F'],
['#2A4275', '#9D9EA1'],
['#2E4B5F', '#8AA9B1'],
['#2E426C', '#7A9377'],
['#1A341A', '#807F6E'],
['#464E42', '#D5C38F'],
['#595643', '#93A899'],
['#2C2F36', '#687466'],
['#2B1E18', '#968980'],
['#7B7067', '#A5A893'],
['#706359', '#BDA194'],
['#383331', '#A48788'],
['#924F4F', '#897A7A'],
['#663434', '#C58D77'],
['#8F4B02', '#AA9274'],
['#784747', '#8C8F6F'],
['#747474', '#ACACAC'],
['#49484C', '#A5A6B5'],
['#4A4E4D', '#ABAFAE'],
['#3A3A3A', '#929887'],
] as const;
import { AxoTokens } from '../axo/AxoTokens.std.js';
export function getAvatarPlaceholderGradient(
identifierHash: number
): Readonly<[string, string]> {
const colorIndex = identifierHash % GRADIENTS.length;
return GRADIENTS[colorIndex];
const gradient = AxoTokens.Avatar.getGradientValuesByHash(identifierHash);
return [gradient.start, gradient.end];
}