Compare commits

...

87 Commits

Author SHA1 Message Date
Lou BRODA fcd9533b95 Mise à jour de 'README.md'
2 years ago
Lou BRODA a98405ded3 Mise à jour de 'README.md'
2 years ago
Lou BRODA 12fdc3747f Mise à jour de 'README.md'
2 years ago
Lou BRODA 6858476667 Mise à jour de 'README.md'
2 years ago
Lou BRODA 150487b6fe Merge branch 'fix-bugs-22-10'
2 years ago
Lou BRODA aa96dc3442 ADD : Infos en ligne + Description
2 years ago
Lou BRODA 038cdeb01a Mise à jour de 'README.md'
2 years ago
Lou BRODA 5f624d0de1 Mise à jour de 'README.md'
2 years ago
Lou BRODA c63ed977fa ADD : Changement Status Working + Navigation Status bug fixed
2 years ago
Lou BRODA bb53472775 Merge branch 'fix-bugs-21-10'
2 years ago
Lou BRODA 8920b37bb8 Mise à jour de 'README.md'
2 years ago
Lou BRODA 7f0cdf9bda Mise à jour de 'README.md'
2 years ago
Lou BRODA 094b18895f Transférer les fichiers vers 'documentation'
2 years ago
Lou BRODA 50fd90e87d Mise à jour de 'README.md'
2 years ago
Lou BRODA cbfcc95e55 ADD : Correct some bugs (Prêts & Contacts)
2 years ago
Lou BRODA 327415d79e Mise à jour de 'README.md'
2 years ago
Lou BRODA 4a47c2198b Mise à jour de 'README.md'
2 years ago
Lou BRODA 68371c878f ADD : Avancement ScanView (ToFinish)
2 years ago
Lou BRODA 37cd46dee8 ADD : Scan BarCode working - method to add book ToAdd
2 years ago
Lou BRODA a480a564ad ADD : Start Camera Scan implementation
2 years ago
Lou BRODA d1c24c19d2 Merge branch 'master' of https://codefirst.iut.uca.fr/git/lou.broda/LivreLand
2 years ago
Lou BRODA c3922a7200 ADD : Correctifs sur filtrages & SelectedStatus
2 years ago
Lou BRODA 6d16193450 ADD : Avancements multiples en TP
2 years ago
Lou BRODA c13bcb1ffa ADD : Order Books By Author, Loaner or Owner & Status in different pages (Header Style ToFix)
2 years ago
Lou BRODA 5c9c0e67fb ADD : Loan & Borrowing selection fonctionnel (ALirePlusTard Book Details ToDo)
2 years ago
Lou BRODA 456b275a84 ADD : Mise à jour apparence bouton ajouter/supprimer des favoris
2 years ago
Lou BRODA cdd4a4aa86 ADD : Use Command for OnSelectionChanged in TousView
2 years ago
Lou BRODA 47176188dd ADD : Avancement modification Statut Lecture (bug selecteditem ToFix)
2 years ago
Lou BRODA ed0f18ae25 ADD : navigation when clicked button details page book & Toast message
2 years ago
Lou BRODA 844f9b97fb ADD : avancement Navigation from MenuPage ( nullexception with SelectedValue ToFix)
2 years ago
Lou BRODA 569d16e571 ADD : Ajout d'un contact (update view after created contact ToDo)
2 years ago
Lou BRODA 346256b1fc FIX : Emprunts Prets Button Fonctionnel
2 years ago
Lou BRODA 81ace28547 ADD : Page contacts with lend to Contact (page add Contact ToDo) + had to find solution to dont use OnAppearing when open TousView
2 years ago
Lou BRODA 3f52cb2e78 ADD : ButtonsCommand Header Pages + Delete ok (bug nb pages int, navigation after delete)
2 years ago
Lou BRODA 4664a2e79f ADD : Avancement changement livre à lire (bug author books, lend book ToDo)
2 years ago
Lou BRODA 5ef7f9f9d8 ADD : page Favorite and AddToFavorites Method
2 years ago
Lou BRODA 3b2d64ed04 ADD : Ajout de méthode pour avoir les livres selon date/auteur/note
2 years ago
Lou BRODA dccbbbf8a0 ADD : Avancement Prets & Emprunts (bug switch button)
2 years ago
Lou BRODA d683ae38ce ADD : Avancement avec StatutLecture & Bibliotheque VIewModel
2 years ago
Lou BRODA a387a06a05 ADD : Update Model with favoritebooks methods
2 years ago
Lou BRODA 6681924b44 Mise à jour de 'README.md'
2 years ago
Lou BRODA 96b535075f Mise à jour de 'README.md'
2 years ago
Lou BRODA 7e3e2a9852 Mise à jour de 'README.md'
2 years ago
Lou BRODA 54e3491f62 Mise à jour de 'README.md'
2 years ago
Lou BRODA 147193f535 ADD : FiltrageNote + ALirePlusTard Pages
2 years ago
Lou BRODA ad5d0b50df ADD : number books/author + filter by date
2 years ago
Lou BRODA cfe11f537b ADD : Avancement page Détails Book + Filtrage Auteur
2 years ago
Lou BRODA a37283cabd ADD : Avancement avec premier affichage des livres fonctionnel 🔥
2 years ago
Lou BRODA 7a2ae56ca8 FIX : some using of MyToolkit & Debug .csproj
2 years ago
Lou BRODA 65f7d93a78 ADD : Avancement (add json files) - bug nullable when opening page
2 years ago
Lou BRODA e411da6a8d ADD : First Personal MVVM Toolkit
2 years ago
Lou BRODA b57e64fe61 FIX : StubbedDTO files
2 years ago
Lou BRODA 49d6407c1e ADD : update model
2 years ago
Lou BRODA c14fce6983 ADD : Avancement VM avec Manager et première commande
2 years ago
Lou BRODA 66f813b98d ADD : Model generated
2 years ago
Lou BRODA 781604b8bb ADD : dependencies model & VM + Start Manager part
2 years ago
Lou BRODA 4971951d45 ADD : Finish correction Navigation Command Header
2 years ago
Lou BRODA 60547644be ADD : Nav Button Command Popup (ToTest)
2 years ago
Lou BRODA 2bc8da6200 ADD : Commands on HomePage Button + Add Model class
2 years ago
Lou BRODA c3b7ef2f7f Merge branch 'master' of https://codefirst.iut.uca.fr/git/lou.broda/LivreLand
2 years ago
Lou BRODA 3b35d870b9 FIX : bug color chevron details livre
2 years ago
Lou BRODA a18d8d012a Mise à jour de 'README.md'
2 years ago
Lou BRODA d356a91d01 FIX : color back button color home page in dark mode
2 years ago
Lou BRODA 30e16b53d5 Merge branch 'homepage-05-09'
2 years ago
Lou BRODA d2c6455dbe Mise à jour de 'README.md'
2 years ago
Lou BRODA 0915c8a577 Mise à jour de 'README.md'
2 years ago
Lou BRODA f719a59f7c ADD : bug dark color, nice bookmark position
2 years ago
Lou BRODA aab6b54ecd ADD : Navigation & Last Views
2 years ago
Lou BRODA 4cdfd6a42d ADD : good book cover, status bar color, emprunts/prets page, collection view disposition
2 years ago
Lou BRODA 34191293d5 ADD : update views (Image book ToDo)
2 years ago
Lou BRODA 3fe06e764e ADD : logo shield XAML
2 years ago
Lou BRODA 5041c547d4 add README
2 years ago
Lou BRODA 804529aa0b ADD : fonts, start vertical alphabet, fix dark mode problems
2 years ago
Lou BRODA ba008b71e5 ADD : more images, colors icons, separator collectionView
2 years ago
Lou BRODA ca267e7af5 ADD : Corner Radius for Popup & init colors unless icons
2 years ago
Lou BRODA 17bc7d5746 ADD : work on SearchBar Visual
2 years ago
Lou BRODA d6186ab386 ADD : last icons
2 years ago
Lou BRODA 9f8d02a834 FIX : Popup format (corner radius ToDo)
2 years ago
Lou BRODA a8010c01c7 ADD : avancement view + mise en place popup (à revoir)
2 years ago
Lou BRODA b2b8f3a86f ADD : Avancement vues (éléments cliquables, couleurs icons...)
2 years ago
Lou BRODA a3054f2d21 ADD : note page + start dark mode 🔥
2 years ago
Lou BRODA a8b644e716 ADD : image cover book and more view
2 years ago
Lou BRODA a9a5e562f4 ADD : Avancement View
2 years ago
Lou BRODA 6733ddb544 ADD : Début code all pages 🔥
2 years ago
Lou BRODA 0a62c5f3e5 ADD : Forme de la page Détails du livre (à affiner)
2 years ago
Lou BRODA 394c438adc ADD : icons & Content View for HomePage
2 years ago
Lou BRODA 8bc6b5dba4 Initial commit
2 years ago

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\LibraryDTO\LibraryDTO.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,102 @@
using LibraryDTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DtoAbstractLayer
{
/// <summary>
/// abstract layer for requests on Books Library
/// </summary>
public interface IDtoManager
{
/// <summary>
/// get a book by specifying its id
/// </summary>
/// <param name="id">id of the Book to get</param>
/// <returns>a Book with this id (or null if id is unknown)</returns>
Task<BookDTO> GetBookById(string id);
/// <summary>
/// get a book by specifying its isbn
/// </summary>
/// <param name="isbn">isbn of the Book to get</param>
/// <returns>a Book with this isbn (or null if isbn is unknown)</returns>
Task<BookDTO> GetBookByISBN(string isbn);
/// <summary>
/// get books containing a substring in their titles
/// </summary>
/// <param name="title">the substring to look for in book titles</param>
/// <param name="index">index of the page of resulting books</param>
/// <param name="count">number of resulting books per page</param>
/// <param name="sort">sort criterium (not mandatory):
/// <ul>
/// <li>```title```: sort books by titles in alphabetical order,</li>
/// <li>```title_reverse```: sort books by titles in reverse alphabetical order,</li>
/// <li>```new```: sort books by publishing dates, beginning with the most recents,</li>
/// <li>```old```: sort books by publishing dates, beginning with the oldest</li>
/// </ul>
/// </param>
/// <returns>max <i>count</i> books</returns>
Task<Tuple<long, IEnumerable<BookDTO>>> GetBooksByTitle(string title, int index, int count, string sort = "");
/// <summary>
/// get books of a particular author by giving the author id
/// </summary>
/// <param name="authorId">the id of the author</param>
/// <param name="index">index of the page of resulting books</param>
/// <param name="count">number of resulting books per page</param>
/// <param name="sort">sort criterium (not mandatory):
/// <ul>
/// <li>```title```: sort books by titles in alphabetical order,</li>
/// <li>```title_reverse```: sort books by titles in reverse alphabetical order,</li>
/// <li>```new```: sort books by publishing dates, beginning with the most recents,</li>
/// <li>```old```: sort books by publishing dates, beginning with the oldest</li>
/// </ul>
/// </param>
/// <returns>max <i>count</i> books</returns>
Task<Tuple<long, IEnumerable<BookDTO>>> GetBooksByAuthorId(string authorId, int index, int count, string sort = "");
/// <summary>
/// get books of authors whose name (or alternate names) contains a particular substring
/// </summary>
/// <param name="author">name to look for in author names or alternate names</param>
/// <param name="index">index of the page of resulting books</param>
/// <param name="count">number of resulting books per page</param>
/// <param name="sort">sort criterium (not mandatory):
/// <ul>
/// <li>```title```: sort books by titles in alphabetical order,</li>
/// <li>```title_reverse```: sort books by titles in reverse alphabetical order,</li>
/// <li>```new```: sort books by publishing dates, beginning with the most recents,</li>
/// <li>```old```: sort books by publishing dates, beginning with the oldest</li>
/// </ul>
/// </param>
/// <returns>max <i>count</i> books</returns>
Task<Tuple<long, IEnumerable<BookDTO>>> GetBooksByAuthor(string author, int index, int count, string sort = "");
/// <summary>
/// get an author by specifying its id
/// </summary>
/// <param name="id">id of the Author to get</param>
/// <returns>an author with this id (or null if id is unknown)</returns>
Task<AuthorDTO> GetAuthorById(string id);
/// <summary>
/// get authors containing a substring in their names (or alternate names)
/// </summary>
/// <param name="substring">the substring to look for in author names (or alternate names)</param>
/// <param name="index">index of the page of resulting authors</param>
/// <param name="count">number of resulting authors per page</param>
/// <param name="sort">sort criterium (not mandatory):
/// <ul>
/// <li>```name```: sort authors by names in alphabetical order,</li>
/// <li>```name_reverse```: sort authors by names in reverse alphabetical order,</li>
/// </ul>
/// </param>
/// <returns>max <i>count</i> authors</returns>
Task<Tuple<long, IEnumerable<AuthorDTO>>> GetAuthorsByName(string substring, int index, int count, string sort = "");
}
}

@ -0,0 +1,78 @@
using LibraryDTO;
using Newtonsoft.Json.Linq;
using System.Globalization;
namespace JsonReader
{
public static class AuthorJsonReader
{
public static AuthorDTO ReadAuthor(string json)
{
JObject o = JObject.Parse(json);
string bioTokenAsString = null;
if (o.TryGetValue("bio", out JToken? bioToken))
{
if (bioToken.Type == JTokenType.String)
{
bioTokenAsString = (string)bioToken;
}
else
{
var bioTokenValue = o["bio"]?["value"];
bioTokenAsString = (string)bioTokenValue;
}
}
AuthorDTO author = new AuthorDTO
{
Id = (string)o["key"],
Name = (string)o["name"],
Bio = bioTokenAsString,
BirthDate = o.TryGetValue("birth_date", out JToken? bd) ? ReadDate((string)o["birth_date"]) : null,
DeathDate = o.TryGetValue("death_date", out JToken? dd) ? ReadDate((string)o["death_date"]) : null,
Links = o.TryGetValue("links", out JToken? links) ? links.Select(l => new LinkDTO { Title = (string)l["title"], Url = (string)l["url"] }).ToList() : new List<LinkDTO>(),
AlternateNames = o.TryGetValue("alternate_names", out JToken? altNames) ? altNames.Select(alt => (string)alt).ToList() : new List<string?>()
};
return author;
}
public static DateTime? ReadDate(string dateInJson)
{
if (dateInJson == null) return null;
List<Tuple<string, CultureInfo>> pubDateFormat = new List<Tuple<string, CultureInfo>>()
{
Tuple.Create("d MMMM yyyy", CultureInfo.GetCultureInfo("fr-FR")),
Tuple.Create("d MMMM yyyy", CultureInfo.InvariantCulture),
Tuple.Create("MMM dd, yyyy", CultureInfo.InvariantCulture)
};
DateTime? publishDate = null;
foreach (var format in pubDateFormat)
{
if (DateTime.TryParseExact(dateInJson, format.Item1, format.Item2, DateTimeStyles.None, out DateTime readDate))
{
publishDate = readDate;
break;
}
}
if (!publishDate.HasValue && int.TryParse(dateInJson, out int year))
{
publishDate = new DateTime(year, 12, 31);
}
return publishDate;
}
public static Tuple<long, IEnumerable<AuthorDTO>> GetAuthorsByName(string json)
{
JObject o = JObject.Parse(json);
long numFound = (long)o["numFound"];
var authors = o["docs"].Select(doc => new AuthorDTO
{
Id = $"/authors/{(string)doc["key"]}",
Name = (string)doc["name"],
});
return Tuple.Create(numFound, authors);
}
}
}

@ -0,0 +1,101 @@
using LibraryDTO;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JsonReader
{
public static class BookJsonReader
{
static Dictionary<string, Languages> languages = new Dictionary<string, Languages>()
{
[@"/languages/fre"] = Languages.French,
[@"/languages/eng"] = Languages.English,
["fre"] = Languages.French,
["eng"] = Languages.English,
[""] = Languages.Unknown
};
public static BookDTO ReadBook(string json)
{
JObject o = JObject.Parse(json);
var l = o["languages"]?.FirstOrDefault("");
Languages lang = l != null ? languages[(string)l["key"]] : Languages.Unknown;
//List<Tuple<string, CultureInfo>> pubDateFormat =new List<Tuple<string, CultureInfo>>()
//{
// Tuple.Create("d MMMM yyyy", CultureInfo.GetCultureInfo("fr-FR")),
// Tuple.Create("MMM dd, yyyy", CultureInfo.InvariantCulture)
//};
//DateTime? publishDate = null;
//foreach(var format in pubDateFormat)
//{
// if(DateTime.TryParseExact((string)o["publish_date"], format.Item1, format.Item2, DateTimeStyles.None, out DateTime readDate))
// {
// publishDate = readDate;
// break;
// }
//}
//if(!publishDate.HasValue)
//{
// publishDate = new DateTime((int)o["publish_date"], 12, 31);
//}
DateTime? publishDate = AuthorJsonReader.ReadDate((string)o["publish_date"]);
BookDTO book = new BookDTO
{
Id = (string)o["key"],
Title = (string)o["title"],
Publishers = o["publishers"].Select(p => (string)p).ToList(),
PublishDate = publishDate.GetValueOrDefault(DateTime.Now),
ISBN13 = (string)o["isbn_13"][0],
NbPages = o["number_of_pages"] != null ? (int)o["number_of_pages"] : -1,
Language = lang,
Format = o.TryGetValue("physical_format", out JToken? f) ? (string)f : null,
Works = o["works"].Select(w => new WorkDTO { Id = (string)w["key"] }).ToList(),
Contributors = o.TryGetValue("contributors", out JToken? contr) ? contr.Select(c => new ContributorDTO { Name = (string)c["name"], Role = (string)c["role"] }).ToList() : new List<ContributorDTO>(),
Authors = o["authors"]?.Select(a => new AuthorDTO { Id = (string)a["key"] }).ToList()
};
if (book.Authors == null)
{
book.Authors = new List<AuthorDTO>();
}
return book;
}
public static Tuple<long, IEnumerable<BookDTO>> GetBooksByAuthor(string json)
{
JObject o = JObject.Parse(json);
long numFound = (long)o["numFound"];
var books = o["docs"].Select(doc => new BookDTO
{
Id = (string)(doc["seed"].First()),
Title = (string)doc["title"],
ISBN13 = (string)(doc["isbn"].First()),
Authors = doc["seed"].Where(s => ((string)s).StartsWith("/authors/"))
.Select(s => new AuthorDTO { Id = (string)s }).ToList(),
Language = languages.GetValueOrDefault((string)(doc["language"].First()))
});
return Tuple.Create(numFound, books);
}
public static Tuple<long, IEnumerable<BookDTO>> GetBooksByTitle(string json)
{
JObject o = JObject.Parse(json);
long numFound = (long)o["numFound"];
var books = o["docs"].Select(doc => new BookDTO
{
Id = (string)(doc["seed"].First()),
Title = (string)doc["title"],
ISBN13 = (string)(doc["isbn"].First()),
Authors = doc["seed"].Where(s => ((string)s).StartsWith("/authors/"))
.Select(s => new AuthorDTO { Id = (string)s }).ToList(),
Language = languages.GetValueOrDefault((string)(doc["language"].First()))
});
return Tuple.Create(numFound, books);
}
}
}

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LibraryDTO\LibraryDTO.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,57 @@
using LibraryDTO;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JsonReader
{
public static class WorkJsonReader
{
public static WorkDTO ReadWork(string json, string ratingsJson)
{
JObject o = JObject.Parse(json);
JObject r = JObject.Parse(ratingsJson);
var ratingsDto = new RatingsDTO();
if (r["summary"]["average"].Type != JTokenType.Float)
{
ratingsDto.Average = -1;
ratingsDto.Count = 0;
}
else
{
ratingsDto.Average = (float)r["summary"]["average"];
ratingsDto.Count = (int)r["summary"]["count"];
}
string description = null;
if (o.TryGetValue("description", out JToken? descr))
{
if (descr.Type == JTokenType.String)
{
description = (string)descr;
}
else
{
if (descr["value"].Type == JTokenType.String)
{
description = (string)descr["value"];
}
}
}
WorkDTO work = new WorkDTO
{
Id = (string)o["key"],
Title = (string)o["title"],
Authors = o.TryGetValue("authors", out JToken? authors) ? authors.Select(a => new AuthorDTO { Id = (string)a["author"]["key"] }).ToList() : new List<AuthorDTO>(),
Description = description,
Subjects = o.TryGetValue("subjects", out JToken? subjects) ? subjects.Select(s => (string)s).ToList() : new List<string>(),
Ratings = ratingsDto
};
return work;
}
}
}

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryDTO
{
public class AuthorDTO
{
public string Id { get; set; }
public string Name { get; set; }
public string ImageSmall => $"https://covers.openlibrary.org/a/olid/{Id.Substring(Id.LastIndexOf("/"))}-S.jpg";
public string ImageMedium => $"https://covers.openlibrary.org/a/olid/{Id.Substring(Id.LastIndexOf("/"))}-M.jpg";
public string ImageLarge => $"https://covers.openlibrary.org/a/olid/{Id.Substring(Id.LastIndexOf("/"))}-L.jpg";
public string Bio { get; set; }
public List<string> AlternateNames { get; set; } = new List<string>();
public List<LinkDTO> Links { get; set; }
public DateTime? BirthDate { get; set; }
public DateTime? DeathDate { get; set; }
}
}

@ -0,0 +1,21 @@
namespace LibraryDTO
{
public class BookDTO
{
public string Id { get; set; }
public string Title { get; set; }
public List<string> Publishers { get; set; } = new List<string>();
public DateTime PublishDate { get; set; }
public string ISBN13 { get; set; }
public List<string> Series { get; set; } = new List<string>();
public int NbPages { get; set; }
public string Format { get; set; }
public Languages Language { get; set; }
public List<ContributorDTO> Contributors { get; set; }
public string ImageSmall => $"https://covers.openlibrary.org/b/isbn/{ISBN13}-S.jpg";
public string ImageMedium => $"https://covers.openlibrary.org/b/isbn/{ISBN13}-M.jpg";
public string ImageLarge => $"https://covers.openlibrary.org/b/isbn/{ISBN13}-L.jpg";
public List<WorkDTO> Works { get; set; } = new List<WorkDTO>();
public List<AuthorDTO> Authors { get; set; } = new List<AuthorDTO>();
}
}

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryDTO
{
public class ContributorDTO
{
public string Name { get; set; }
public string Role { get; set; }
}
}

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryDTO
{
public enum Languages
{
Unknown,
French,
English
}
}

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryDTO
{
public class LinkDTO
{
public string Title { get; set; }
public string Url { get; set; }
}
}

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryDTO
{
public class RatingsDTO
{
public float Average { get; set; }
public int Count { get; set; }
}
}

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryDTO
{
public class WorkDTO
{
public string Id { get; set; }
public string Description { get; set; }
public string Title { get; set; }
public List<string> Subjects { get; set; } = new List<string>();
public List<AuthorDTO> Authors { get; set; } = new List<AuthorDTO>();
public RatingsDTO Ratings { get; set; }
}
}

@ -4,6 +4,29 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 17.0.31611.283
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LivreLand", "LivreLand\LivreLand.csproj", "{0E95A11F-0D16-4CC3-82CD-E3BE44C28B2B}"
ProjectSection(ProjectDependencies) = postProject
{7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E} = {7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj", "{7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ViewModels", "ViewModels\ViewModels.csproj", "{72B707A3-3797-4F15-80BC-9D5ECA7B67EE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stub", "Stub\Stub.csproj", "{65A55AED-D8C3-4416-85FE-5E0688C70B88}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StubbedDTO", "StubbedDTO\StubbedDTO.csproj", "{73CAF8BC-E443-48F3-AB04-77F1AF6A24A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibraryDTO", "LibraryDTO\LibraryDTO.csproj", "{C42003CE-3CE8-4CAA-BF08-82FB9EA5E825}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DtoAbstractLayer", "DtoAbstractLayer\DtoAbstractLayer.csproj", "{0AAA2F93-2C4F-4245-A37D-DC8C7261ADEC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JsonReader", "JsonReader\JsonReader.csproj", "{62D56765-482A-4B7A-B77A-517B0AABF443}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Utils", "Utils\Utils.csproj", "{D74E6DD7-ED6A-400C-89EE-FA3BB50D924F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PersonalMVVMToolkit", "PersonalMVVMToolkit\PersonalMVVMToolkit.csproj", "{DBB77CBE-CB7A-4277-B625-60DBD5749C12}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{F2F8D537-7A2F-4B67-A7C6-F8B7FE37483D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -17,6 +40,46 @@ Global
{0E95A11F-0D16-4CC3-82CD-E3BE44C28B2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E95A11F-0D16-4CC3-82CD-E3BE44C28B2B}.Release|Any CPU.Build.0 = Release|Any CPU
{0E95A11F-0D16-4CC3-82CD-E3BE44C28B2B}.Release|Any CPU.Deploy.0 = Release|Any CPU
{7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DB41B43-9DAA-48C8-8D41-EF2F06FDD33E}.Release|Any CPU.Build.0 = Release|Any CPU
{72B707A3-3797-4F15-80BC-9D5ECA7B67EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72B707A3-3797-4F15-80BC-9D5ECA7B67EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72B707A3-3797-4F15-80BC-9D5ECA7B67EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72B707A3-3797-4F15-80BC-9D5ECA7B67EE}.Release|Any CPU.Build.0 = Release|Any CPU
{65A55AED-D8C3-4416-85FE-5E0688C70B88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65A55AED-D8C3-4416-85FE-5E0688C70B88}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65A55AED-D8C3-4416-85FE-5E0688C70B88}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65A55AED-D8C3-4416-85FE-5E0688C70B88}.Release|Any CPU.Build.0 = Release|Any CPU
{73CAF8BC-E443-48F3-AB04-77F1AF6A24A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73CAF8BC-E443-48F3-AB04-77F1AF6A24A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73CAF8BC-E443-48F3-AB04-77F1AF6A24A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73CAF8BC-E443-48F3-AB04-77F1AF6A24A3}.Release|Any CPU.Build.0 = Release|Any CPU
{C42003CE-3CE8-4CAA-BF08-82FB9EA5E825}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C42003CE-3CE8-4CAA-BF08-82FB9EA5E825}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C42003CE-3CE8-4CAA-BF08-82FB9EA5E825}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C42003CE-3CE8-4CAA-BF08-82FB9EA5E825}.Release|Any CPU.Build.0 = Release|Any CPU
{0AAA2F93-2C4F-4245-A37D-DC8C7261ADEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AAA2F93-2C4F-4245-A37D-DC8C7261ADEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AAA2F93-2C4F-4245-A37D-DC8C7261ADEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AAA2F93-2C4F-4245-A37D-DC8C7261ADEC}.Release|Any CPU.Build.0 = Release|Any CPU
{62D56765-482A-4B7A-B77A-517B0AABF443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62D56765-482A-4B7A-B77A-517B0AABF443}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62D56765-482A-4B7A-B77A-517B0AABF443}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62D56765-482A-4B7A-B77A-517B0AABF443}.Release|Any CPU.Build.0 = Release|Any CPU
{D74E6DD7-ED6A-400C-89EE-FA3BB50D924F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D74E6DD7-ED6A-400C-89EE-FA3BB50D924F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D74E6DD7-ED6A-400C-89EE-FA3BB50D924F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D74E6DD7-ED6A-400C-89EE-FA3BB50D924F}.Release|Any CPU.Build.0 = Release|Any CPU
{DBB77CBE-CB7A-4277-B625-60DBD5749C12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DBB77CBE-CB7A-4277-B625-60DBD5749C12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DBB77CBE-CB7A-4277-B625-60DBD5749C12}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DBB77CBE-CB7A-4277-B625-60DBD5749C12}.Release|Any CPU.Build.0 = Release|Any CPU
{F2F8D537-7A2F-4B67-A7C6-F8B7FE37483D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2F8D537-7A2F-4B67-A7C6-F8B7FE37483D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2F8D537-7A2F-4B67-A7C6-F8B7FE37483D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2F8D537-7A2F-4B67-A7C6-F8B7FE37483D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

@ -4,11 +4,25 @@
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:LivreLand"
Shell.FlyoutBehavior="Disabled">
xmlns:view="clr-namespace:LivreLand.View"
Shell.FlyoutBehavior="Disabled"
Shell.NavBarIsVisible="False"
Shell.TabBarTitleColor="Red">
<TabBar>
<ShellContent Title="My Library"
ContentTemplate="{DataTemplate view:BibliothequeView}"
Route="library"
Icon="books_vertical_fill.png"/>
<ShellContent Title="My Lists"
ContentTemplate="{DataTemplate view:TousView}"
Route="tous"
Icon="list_bullet.svg"/>
<ShellContent Title="My Readings"
Icon="bookmark_fill"/>
<ShellContent Title="Search"
Icon="magnifying_glass.png"/>
</TabBar>
<ShellContent
Title="Home"
ContentTemplate="{DataTemplate local:MainPage}"
Route="MainPage" />
</Shell>

@ -1,9 +1,22 @@
namespace LivreLand;
using LivreLand.View;
namespace LivreLand;
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute("library/tous/", typeof(TousView));
Routing.RegisterRoute("library/pret/", typeof(EmpruntsPretsView));
Routing.RegisterRoute("library/later/", typeof(ALirePlusTardView));
Routing.RegisterRoute("library/statut/", typeof(StatutLectureView));
Routing.RegisterRoute("library/favoris/", typeof(FavorisView));
Routing.RegisterRoute("library/auteur/", typeof(FiltrageAuteurView));
Routing.RegisterRoute("library/date/", typeof(FiltrageDateView));
Routing.RegisterRoute("library/note/", typeof(FiltrageNoteView));
Routing.RegisterRoute("library/contacts/", typeof(ContactsView));
Routing.RegisterRoute("library/scan/", typeof(ScanView));
Routing.RegisterRoute("library/tous/details/", typeof(DetailsLivreView));
InitializeComponent();
}
}

@ -32,7 +32,7 @@
<ItemGroup>
<!-- App Icon -->
<MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\appiconfg.svg" Color="#512BD4" />
<MauiIcon Include="Resources\AppIcon\appicon.svg" />
<!-- Splash Screen -->
<MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="128,128" />
@ -49,13 +49,104 @@
</ItemGroup>
<ItemGroup>
<Compile Remove="ViewModel\PublishDateVM.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Camera.MAUI" Version="1.4.4" />
<PackageReference Include="CommunityToolkit.Maui" Version="5.3.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Model\" />
<Folder Include="ViewModel\" />
<Folder Include="View\" />
<ProjectReference Include="..\Model\Model.csproj" />
<ProjectReference Include="..\PersonalMVVMToolkit\PersonalMVVMToolkit.csproj" />
<ProjectReference Include="..\Stub\Stub.csproj" />
<ProjectReference Include="..\ViewModels\ViewModels.csproj" />
</ItemGroup>
<ItemGroup>
<MauiXaml Update="View\ALirePlusTardView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\BibliothequeView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContactsView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\AlphabetVerticalMenuView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\DetailsLivreButtonView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\EmpruntsPretsButtonView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\HomeButtonView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\LetterVerticalMenuView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\PopupHomePlusButtonView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\PopupISBNView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\PopupLetterView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\SearchBarView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\SeparatorBigCutStartView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\SeparatorCutStartView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\SeparatorEntireView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ContentViews\StarNotationView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\DetailsLivreView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\EmpruntsPretsView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\FavorisView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\FiltrageAuteurView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\FiltrageDateView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\FiltrageNoteView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\HeaderHome.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\HeaderPage.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\ScanView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\StatutLectureView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="View\TousView.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
</ItemGroup>
</Project>

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LivreLand.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Image
Source="dotnet_bot.png"
SemanticProperties.Description="Cute dot net bot waving hi to you!"
HeightRequest="200"
HorizontalOptions="Center" />
<Label
Text="Hello, World!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center" />
<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to dot net Multi platform App U I"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="CounterBtn"
Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>

@ -1,24 +0,0 @@
namespace LivreLand;
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
}
private void OnCounterClicked(object sender, EventArgs e)
{
count++;
if (count == 1)
CounterBtn.Text = $"Clicked {count} time";
else
CounterBtn.Text = $"Clicked {count} times";
SemanticScreenReader.Announce(CounterBtn.Text);
}
}

@ -1,4 +1,12 @@
using Microsoft.Extensions.Logging;
using Camera.MAUI;
using CommunityToolkit.Maui;
using LivreLand.View;
using LivreLand.View.ContentViews;
using LivreLand.ViewModel;
using Microsoft.Extensions.Logging;
using Model;
using Stub;
using ViewModels;
namespace LivreLand;
@ -9,14 +17,51 @@ public static class MauiProgram
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit()
.UseMauiCameraView()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
fonts.AddFont("SF-Compact-Display-Black.otf", "SFCompactDisplayBlack");
fonts.AddFont("SF-Compact-Display-Bold.otf", "SFCompactDisplayBold");
});
builder.Services
.AddSingleton<BibliothequeView>()
.AddSingleton<TousView>()
.AddSingleton<FiltrageAuteurView>()
.AddSingleton<FiltrageDateView>()
.AddSingleton<FiltrageNoteView>()
.AddSingleton<ALirePlusTardView>()
.AddSingleton<StatutLectureView>()
.AddSingleton<EmpruntsPretsView>()
.AddSingleton<FavorisView>()
.AddSingleton<ContactsView>()
.AddSingleton<PopupISBNView>()
.AddSingleton<ScanView>()
.AddSingleton<NavigatorVM>()
.AddSingleton<ILibraryManager, LibraryStub>()
.AddSingleton<IUserLibraryManager, UserLibraryStub>()
.AddSingleton<Manager>()
.AddSingleton<ManagerVM>()
.AddSingleton<BibliothequeVM>()
.AddSingleton<TousVM>()
.AddSingleton<FiltrageAuteurVM>()
.AddSingleton<FiltrageDateVM>()
.AddSingleton<FiltrageNoteVM>()
.AddSingleton<ALirePlusTardVM>()
.AddSingleton<StatutLectureVM>()
.AddSingleton<EmpruntsPretsVM>()
.AddSingleton<FavorisVM>()
.AddSingleton<ContactsVM>()
.AddSingleton<PopupISBNVM>()
.AddSingleton<ScanVM>();
#if DEBUG
builder.Logging.AddDebug();
builder.Logging.AddDebug();
#endif
return builder.Build();

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LivreLand.Model
{
public class BookModel
{
public string Title { get; private set; }
public string Author { get; private set; }
public string State { get; private set; }
public int Rating { get; private set; }
public BookModel(string title, string author, string state, int rating)
{
Title = title;
Author = author;
State = state;
Rating = rating;
}
}
}

@ -3,4 +3,5 @@
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
</manifest>

@ -28,5 +28,7 @@
</array>
<key>XSAppIconAssets</key>
<string>Assets.xcassets/appicon.appiconset</string>
<key>NSCameraUsageDescription</key>
<string>This app uses camera for scanning barcodes</string>
</dict>
</plist>

@ -1,4 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="456" height="456" viewBox="0 0 456 456" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="456" height="456" fill="#512BD4" />
</svg>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="500.000000pt" height="500.000000pt" viewBox="0 0 500.000000 500.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,500.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2715 2400 c-22 -11 -31 -18 -20 -15 98 21 140 14 219 -35 54 -35 68
-32 46 8 -34 61 -162 83 -245 42z"/>
<path d="M2095 2385 c-38 -20 -65 -51 -65 -76 0 -17 9 -13 61 23 59 42 63 43
140 43 72 0 76 1 46 12 -47 17 -147 16 -182 -2z"/>
<path d="M2761 2308 c-149 -23 -259 -165 -248 -320 5 -77 31 -134 85 -191 40
-42 108 -82 116 -69 3 5 -10 14 -29 20 -42 16 -111 90 -137 150 -14 32 -21 67
-20 113 0 120 56 207 167 260 232 111 487 -121 396 -361 -10 -27 -33 -68 -51
-90 -17 -22 -27 -40 -22 -40 5 0 22 16 36 35 99 129 90 299 -20 409 -71 71
-167 100 -273 84z"/>
<path d="M2119 2299 c-100 -15 -183 -79 -231 -179 -32 -64 -31 -176 0 -245 24
-52 58 -95 76 -95 5 0 -2 12 -17 28 -40 42 -68 115 -69 180 -3 215 197 356
398 281 229 -86 247 -420 29 -528 -31 -16 -35 -20 -18 -21 30 0 102 57 139
112 18 26 36 71 43 105 41 210 -137 395 -350 362z"/>
<path d="M2158 2129 c-11 -6 -18 -22 -18 -39 0 -39 35 -42 52 -5 15 33 -7 60
-34 44z"/>
<path d="M2797 2133 c-13 -12 -7 -50 9 -63 12 -11 18 -10 31 3 14 13 14 21 5
42 -11 24 -31 32 -45 18z"/>
<path d="M2229 2083 c-39 -34 -59 -79 -59 -137 0 -56 14 -93 47 -128 80 -84
193 -9 193 127 0 69 -23 121 -64 146 -43 26 -79 24 -117 -8z"/>
<path d="M2643 2094 c-93 -46 -108 -201 -28 -281 105 -105 244 64 175 214 -18
42 -69 83 -100 83 -8 0 -30 -8 -47 -16z"/>
<path d="M2570 1730 c-43 -23 -79 -25 -125 -6 -19 8 -35 11 -35 6 0 -4 20 -16
45 -25 51 -20 101 -15 137 14 32 27 20 33 -22 11z"/>
<path d="M1684 1728 c-4 -7 -10 -215 -12 -464 -3 -339 -2 -453 7 -459 7 -4 54
-15 106 -26 202 -41 595 -201 610 -249 6 -18 15 -20 100 -20 89 0 94 1 97 23
6 46 271 154 567 232 74 19 138 38 143 43 5 5 7 207 6 450 -3 499 -1 482 -73
457 -22 -8 -182 -60 -357 -116 -271 -88 -318 -106 -327 -126 -9 -20 -18 -23
-66 -23 -48 0 -57 3 -66 24 -9 19 -65 42 -352 145 -188 66 -350 121 -359 121
-9 0 -20 -5 -24 -12z m1576 -153 c0 -50 -4 -85 -10 -85 -6 0 -10 31 -10 74 l0
75 -72 -25 c-78 -26 -98 -30 -82 -14 10 10 140 58 162 59 9 1 12 -22 12 -84z
m4 -296 c6 -154 4 -192 -8 -178 -7 8 -14 349 -6 349 4 0 10 -77 14 -171z m6
-209 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z
m0 -40 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10
-10z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -0,0 +1,3 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.7617 13.8828C24.7617 13.5898 24.6445 13.3203 24.4102 13.0977L16.6406 5.35156C16.3828 5.09375 16.1367 5 15.8555 5C15.2812 5 14.8359 5.42188 14.8359 6.00781C14.8359 6.28906 14.9297 6.55859 15.1172 6.74609L17.7422 9.41797L22.3945 13.6602L22.6289 13.0742L18.8555 12.8398H4.03125C3.42188 12.8398 3 13.2734 3 13.8828C3 14.4922 3.42188 14.9258 4.03125 14.9258H18.8555L22.6289 14.6914L22.3945 14.1172L17.7422 18.3477L15.1172 21.0195C14.9297 21.1953 14.8359 21.4766 14.8359 21.7578C14.8359 22.3438 15.2812 22.7656 15.8555 22.7656C16.1367 22.7656 16.3828 22.6602 16.6172 22.4375L24.4102 14.668C24.6445 14.4453 24.7617 14.1758 24.7617 13.8828Z" fill="black" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 785 B

@ -0,0 +1,4 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.1875 24.687L27.0938 18.6284C27.3047 18.4292 27.4219 18.1245 27.4219 17.855C27.4219 17.2339 27 16.8237 26.3906 16.8237C26.0859 16.8237 25.8633 16.9175 25.6641 17.1167L23.2266 19.6362L21.3398 21.8277L21.4453 19.1206V4.06202C21.4453 3.45264 21.0117 3.00732 20.4023 3.00732C19.7812 3.00732 19.3477 3.45264 19.3477 4.06202V19.1206L19.4648 21.8277L17.5781 19.6362L15.1406 17.1167C14.9414 16.9175 14.707 16.8237 14.4141 16.8237C13.8047 16.8237 13.3711 17.2339 13.3711 17.855C13.3711 18.1245 13.5 18.4292 13.7109 18.6284L19.6172 24.687C20.0508 25.1441 20.7305 25.1558 21.1875 24.687Z" fill="black" fill-opacity="0.85"/>
<path d="M6.24609 3.35888L0.328125 9.39404C0.128906 9.60497 0 9.90966 0 10.1675C0 10.7886 0.421875 11.2104 1.03125 11.2104C1.33594 11.2104 1.57031 11.105 1.76953 10.9058L4.20703 8.38622L6.09375 6.20654L5.97656 8.91357V23.9722C5.97656 24.5933 6.41016 25.0269 7.03125 25.0269C7.64062 25.0269 8.07422 24.5933 8.07422 23.9722V8.91357L7.96875 6.20654L9.84375 8.38622L12.293 10.9058C12.4922 11.105 12.7148 11.2104 13.0195 11.2104C13.6289 11.2104 14.0508 10.7886 14.0508 10.1675C14.0508 9.90966 13.9336 9.60497 13.7227 9.39404L7.81641 3.35888C7.38281 2.90185 6.69141 2.87841 6.24609 3.35888Z" fill="black" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100px" height="100px" viewBox="0 0 100 100" enable-background="new 0 0 100 100" xml:space="preserve">
<rect fill="none" width="100" height="100"/>
<g>
<rect x="11.345" y="16.049" width="4.09" height="67.902"/>
<rect x="17.48" y="16.049" width="4.09" height="67.902"/>
<rect x="23.616" y="16.049" width="2.045" height="67.902"/>
<rect x="27.937" y="16.049" width="2.813" height="67.902"/>
<rect x="32.819" y="16.049" width="4.091" height="67.902"/>
<rect x="37.933" y="16.049" width="5.727" height="67.902"/>
<rect x="45.194" y="16.049" width="4.09" height="67.902"/>
<rect x="51.33" y="16.049" width="2.964" height="67.902"/>
<rect x="56.441" y="16.049" width="2.045" height="67.902"/>
<rect x="60.123" y="16.049" width="4.092" height="67.902"/>
<rect x="65.951" y="16.049" width="5.933" height="67.902"/>
<rect x="73.417" y="16.049" width="2.045" height="67.902"/>
<rect x="77.201" y="16.049" width="4.091" height="67.902"/>
<rect x="82.622" y="16.049" width="6.033" height="67.902"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,10 @@
<svg width="30" height="28" viewBox="0 0 30 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_89400)">
<path d="M0 19.4961C0 22.7656 2.92969 25.2148 6.51562 25.2148C10.0898 25.2148 13.0078 22.7656 13.0078 19.4961V6.54688C13.0078 4.40234 11.543 2.97266 9.29297 2.97266C7.53516 2.97266 6.12891 3.86328 5.47266 5.38672L0.597656 16.7305C0.117188 17.8438 0 18.6406 0 19.4961ZM3.49219 14.4805L7.06641 6.17188C7.46484 5.23438 8.26172 4.68359 9.22266 4.68359C10.4648 4.68359 11.2617 5.50391 11.2617 6.73438V15.6406C10.0898 14.4805 8.35547 13.7773 6.51562 13.7773C5.47266 13.7773 4.40625 14.0352 3.49219 14.4805ZM1.83984 19.4961C1.83984 17.1406 3.86719 15.5352 6.51562 15.5352C9.15234 15.5352 11.25 17.1406 11.25 19.4961C11.25 21.8516 9.15234 23.457 6.51562 23.457C3.86719 23.457 1.83984 21.8516 1.83984 19.4961ZM29.918 19.4961C29.918 18.6406 29.7891 17.8438 29.3086 16.7305L24.4453 5.38672C23.7773 3.86328 22.3828 2.97266 20.625 2.97266C18.375 2.97266 16.9102 4.40234 16.9102 6.54688V19.4961C16.9102 22.7656 19.8281 25.2148 23.4023 25.2148C26.9766 25.2148 29.918 22.7656 29.918 19.4961ZM26.4258 14.4805C25.5117 14.0352 24.4453 13.7773 23.4023 13.7773C21.5625 13.7773 19.8164 14.4805 18.6445 15.6406V6.73438C18.6445 5.50391 19.4531 4.68359 20.6953 4.68359C21.6445 4.68359 22.4414 5.23438 22.8398 6.17188L26.4258 14.4805ZM28.0664 19.4961C28.0664 21.8516 26.0391 23.457 23.4023 23.457C20.7539 23.457 18.668 21.8516 18.668 19.4961C18.668 17.1406 20.7539 15.5352 23.4023 15.5352C26.0391 15.5352 28.0664 17.1406 28.0664 19.4961ZM12.2227 16.8594C12.9023 16.4258 13.9102 16.1445 14.9648 16.1445C16.2656 16.1445 17.1094 16.3438 17.7773 16.8359V15.0898C17.0039 14.7617 16.0781 14.6094 14.9648 14.6094C13.9922 14.6094 13.043 14.8086 12.2227 15.1484V16.8594ZM12.2227 13.2852C12.9023 12.8398 13.9102 12.5703 14.9648 12.5703C16.2656 12.5703 17.1094 12.7578 17.7773 13.2617V11.5156C17.0039 11.1875 16.0781 11.0352 14.9648 11.0352C13.9922 11.0352 13.043 11.2344 12.2227 11.5742V13.2852ZM12.2227 9.69922C12.9023 9.26562 13.9102 8.98438 14.9648 8.98438C16.2656 8.98438 17.1094 9.18359 17.7773 9.67578V7.94141C17.0039 7.61328 16.0781 7.44922 14.9648 7.44922C13.9922 7.44922 13.043 7.66016 12.2227 8V9.69922Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_89400">
<rect width="29.918" height="23.2148" fill="white" transform="translate(0 2)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1,10 @@
<svg width="30" height="28" viewBox="0 0 30 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_89401)">
<path d="M0 19.4961C0 22.7656 2.92969 25.2148 6.51562 25.2148C10.0898 25.2148 13.0078 22.7656 13.0078 19.4961V16.4961C13.582 16.2734 14.2734 16.1445 14.9648 16.1445C15.7266 16.1445 16.3828 16.2266 16.9102 16.4141V19.4961C16.9102 22.7656 19.8281 25.2148 23.4023 25.2148C26.9766 25.2148 29.918 22.7656 29.918 19.4961C29.918 18.6406 29.7891 17.8438 29.3086 16.7305L24.4453 5.38672C23.7773 3.86328 22.3828 2.97266 20.625 2.97266C18.375 2.97266 16.9102 4.40234 16.9102 6.54688V7.68359C16.3242 7.53125 15.6797 7.44922 14.9648 7.44922C14.2852 7.44922 13.6289 7.55469 13.0078 7.75391V6.54688C13.0078 4.40234 11.543 2.97266 9.29297 2.97266C7.53516 2.97266 6.12891 3.86328 5.47266 5.38672L0.597656 16.7305C0.117188 17.8438 0 18.6406 0 19.4961ZM1.83984 19.4961C1.83984 17.1406 3.86719 15.5352 6.51562 15.5352C9.15234 15.5352 11.25 17.1406 11.25 19.4961C11.25 21.8516 9.15234 23.457 6.51562 23.457C3.86719 23.457 1.83984 21.8516 1.83984 19.4961ZM18.668 19.4961C18.668 17.1406 20.7539 15.5352 23.4023 15.5352C26.0391 15.5352 28.0664 17.1406 28.0664 19.4961C28.0664 21.8516 26.0391 23.457 23.4023 23.457C20.7539 23.457 18.668 21.8516 18.668 19.4961ZM13.0078 12.9219V11.3281C13.6289 11.1289 14.2852 11.0352 14.9648 11.0352C15.6797 11.0352 16.3242 11.1055 16.9102 11.2578V12.8281C16.3828 12.6523 15.7383 12.5703 14.9648 12.5703C14.2734 12.5703 13.582 12.6992 13.0078 12.9219Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_89401">
<rect width="29.918" height="23.2148" fill="white" transform="translate(0 2)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88468)">
<path d="M1 22.8164C1 23.7773 1.63281 24.1523 2.32422 24.1523C2.72266 24.1523 3.0625 23.918 3.50781 23.6484C4.79688 22.7695 6.39062 22.2305 8.01953 22.2422C9.70703 22.2539 11.3828 22.875 12.6953 24.1406C13.2109 24.6094 13.5859 24.7617 14.0195 24.7617C14.4414 24.7617 14.8281 24.6094 15.332 24.1406C16.6445 22.8867 18.3203 22.2539 20.0195 22.2422C21.6484 22.2305 23.2305 22.7695 24.5195 23.6484C24.9648 23.918 25.3047 24.1523 25.7148 24.1523C26.3945 24.1523 27.0273 23.7773 27.0273 22.8164V6.91406C27.0273 6.71484 27.0156 6.55078 26.8867 6.35156C25.8438 4.53516 23.1953 3 19.9727 3C17.418 3 15.2031 4.01953 14.0195 5.46094C12.8359 4.01953 10.6094 3 8.06641 3C4.83203 3 2.18359 4.53516 1.14062 6.35156C1.02344 6.55078 1 6.71484 1 6.91406V22.8164ZM2.88672 21.8203V7.18359C3.83594 5.8125 5.89844 4.88672 8.06641 4.88672C10.293 4.88672 12.2383 5.82422 13.0703 7.25391V22.0195C11.875 21.0703 10.0117 20.3555 8.06641 20.3555C6.02734 20.3555 4.12891 20.9297 2.88672 21.8203ZM14.957 22.0195V7.25391C15.7891 5.82422 17.7461 4.88672 19.9727 4.88672C22.1289 4.88672 24.1914 5.8125 25.1406 7.18359V21.8203C23.8984 20.9297 22 20.3555 19.9727 20.3555C18.0156 20.3555 16.1523 21.0703 14.957 22.0195Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88468">
<rect width="26.0273" height="21.7852" fill="white" transform="translate(1 3)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88476)">
<path d="M7.59766 26.1133H22.7734C23.2891 26.1133 23.7109 25.7031 23.7109 25.1758C23.7109 24.7656 23.4297 24.4023 23.0547 24.2734C21.5781 23.6875 21.2734 21.7773 22.7266 20.3125C23.1719 19.8672 23.7109 19.293 23.7109 18.1211V4.67969C23.7109 2.24219 22.5039 1 20.0781 1H7.63281C5.20703 1 4 2.23047 4 4.67969V22.4922C4 24.9062 5.21875 26.1133 7.59766 26.1133ZM5.88672 19.3398V4.71484C5.88672 3.54297 6.50781 2.88672 7.71484 2.88672H19.9844C21.2031 2.88672 21.8242 3.54297 21.8242 4.71484V17.8633C21.8242 18.4961 21.4609 18.8594 20.8047 18.8594H7.79688C7.03516 18.8594 6.40234 19.0234 5.88672 19.3398ZM7.70312 24.2266C6.51953 24.2266 5.88672 23.5938 5.88672 22.4805C5.88672 21.4258 6.63672 20.7461 7.80859 20.7461H19.832C19.9844 20.7461 20.125 20.7344 20.2422 20.7109C19.6914 21.9297 19.7852 23.2188 20.4062 24.2266H7.70312ZM7.26953 19.8672H8.80469V2.42969H7.26953V19.8672Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88476">
<rect width="19.7109" height="25.1133" fill="white" transform="translate(4 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88477)">
<path d="M7.59766 26.1133H22.7734C23.2891 26.1133 23.7109 25.7031 23.7109 25.1758C23.7109 24.7656 23.4297 24.4023 23.0547 24.2734C21.5781 23.6875 21.2734 21.7773 22.7266 20.3125C23.1719 19.8672 23.7109 19.293 23.7109 18.1211V4.67969C23.7109 2.24219 22.5039 1 20.0781 1H7.63281C5.20703 1 4 2.23047 4 4.67969V22.4922C4 24.9062 5.21875 26.1133 7.59766 26.1133ZM7.70312 24.2266C6.51953 24.2266 5.88672 23.5938 5.88672 22.4805C5.88672 21.4258 6.63672 20.7461 7.80859 20.7461H19.832C19.9844 20.7461 20.125 20.7344 20.2422 20.7109C19.6914 21.9297 19.7852 23.2188 20.4062 24.2266H7.70312ZM7.35156 18.9648C6.98828 18.9648 6.68359 18.6602 6.68359 18.2852V3.48438C6.68359 3.10938 6.98828 2.81641 7.35156 2.81641C7.71484 2.81641 8.03125 3.10938 8.03125 3.48438V18.2852C8.03125 18.6602 7.71484 18.9648 7.35156 18.9648Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88477">
<rect width="19.7109" height="25.1133" fill="white" transform="translate(4 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88469)">
<path d="M7.60938 3C5.03125 3 2.34766 4.19531 1.14062 6.26953C1.01172 6.50391 1 6.65625 1 7.08984V23.625C1 24.1641 1.33984 24.4922 1.92578 24.4922C2.20703 24.4922 2.47656 24.4102 2.6875 24.2109C4.16406 22.9453 6.12109 22.2891 8.07812 22.2891C9.90625 22.2891 11.6055 22.9336 12.8477 24C12.9766 24.1055 13.1289 24.1641 13.2578 24.1641C13.5156 24.1641 13.7266 23.9766 13.7266 23.6719V6.33984C13.7266 6.03516 13.7031 5.96484 13.4805 5.64844C12.332 3.99609 10.082 3 7.60938 3ZM21.3789 3C18.9062 3 16.6562 3.99609 15.5078 5.64844C15.2852 5.96484 15.2617 6.03516 15.2617 6.33984V23.6719C15.2617 23.9766 15.4727 24.1641 15.7305 24.1641C15.8594 24.1641 16.0234 24.1055 16.1406 24C17.3828 22.9336 19.082 22.2891 20.9102 22.2891C22.8672 22.2891 24.8242 22.9453 26.3008 24.2109C26.5117 24.4102 26.7812 24.4922 27.0625 24.4922C27.6484 24.4922 27.9883 24.1641 27.9883 23.625V7.08984C27.9883 6.65625 27.9766 6.49219 27.8477 6.26953C26.6406 4.19531 23.957 3 21.3789 3Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88469">
<rect width="26.9883" height="21.5273" fill="white" transform="translate(1 3)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88494)">
<path d="M7.24219 26.1367C7.81641 26.1367 8.15625 25.8086 9.21094 24.7891L13.793 20.2773C13.8516 20.2188 13.957 20.2188 14.0039 20.2773L18.5859 24.7891C19.6406 25.8086 19.9805 26.1367 20.5547 26.1367C21.3398 26.1367 21.7969 25.6211 21.7969 24.707V4.36328C21.7969 2.13672 20.6836 1 18.4805 1H9.31641C7.11328 1 6 2.13672 6 4.36328V24.707C6 25.6211 6.45703 26.1367 7.24219 26.1367ZM8.20312 22.9727C8.03906 23.1367 7.85156 23.0898 7.85156 22.8555V4.38672C7.85156 3.37891 8.37891 2.85156 9.41016 2.85156H18.3984C19.418 2.85156 19.9453 3.37891 19.9453 4.38672V22.8555C19.9453 23.0898 19.7695 23.1367 19.5938 22.9727L14.5195 18.0508C14.1445 17.6875 13.6523 17.6875 13.2773 18.0508L8.20312 22.9727Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88494">
<rect width="15.7969" height="25.1836" fill="white" transform="translate(6 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1015 B

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88495)">
<path d="M7.24219 26.1367C7.81641 26.1367 8.15625 25.8086 9.21094 24.7891L13.793 20.2773C13.8516 20.2188 13.957 20.2188 14.0039 20.2773L18.5859 24.7891C19.6406 25.8086 19.9805 26.1367 20.5547 26.1367C21.3398 26.1367 21.7969 25.6211 21.7969 24.707V4.36328C21.7969 2.13672 20.6836 1 18.4805 1H9.31641C7.11328 1 6 2.13672 6 4.36328V24.707C6 25.6211 6.45703 26.1367 7.24219 26.1367Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88495">
<rect width="15.7969" height="25.1836" fill="white" transform="translate(6 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@ -0,0 +1,10 @@
<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88472)">
<path d="M0 24.2383C0 26.043 0.867188 26.9336 2.67188 26.9336H18.6797C20.4727 26.9336 21.3516 26.043 21.3516 24.2383V3.70703C21.3516 1.90234 20.4727 1 18.6797 1H16.3828C14.5898 1 13.7109 1.90234 13.7109 3.70703V8.35938C13.4531 8.30078 13.1484 8.25391 12.8203 8.25391H7.71094C7.37109 8.25391 7.07812 8.30078 6.80859 8.35938V6.95312C6.80859 5.14844 5.94141 4.24609 4.14844 4.24609H2.67188C0.867188 4.24609 0 5.14844 0 6.95312V24.2383ZM1.76953 24.0977V7.08203C1.76953 6.39062 2.13281 6.01562 2.85938 6.01562H3.96094C4.6875 6.01562 5.03906 6.39062 5.03906 7.08203V25.1641H2.85938C2.13281 25.1641 1.76953 24.7891 1.76953 24.0977ZM6.80859 25.1641V11.0898C6.80859 10.3984 7.17188 10.0234 7.89844 10.0234H12.6328C13.3594 10.0234 13.7109 10.3984 13.7109 11.0898V25.1641H6.80859ZM15.4805 25.1641V3.83594C15.4805 3.14453 15.8438 2.76953 16.5703 2.76953H18.4922C19.2305 2.76953 19.582 3.14453 19.582 3.83594V24.0977C19.582 24.7891 19.2305 25.1641 18.4922 25.1641H15.4805ZM7.875 12.2969C7.875 12.707 8.17969 13.0234 8.61328 13.0234H11.9414C12.3516 13.0234 12.668 12.707 12.668 12.2969C12.668 11.8984 12.3516 11.582 11.9414 11.582H8.61328C8.17969 11.582 7.875 11.8984 7.875 12.2969ZM7.875 22.8906C7.875 23.3008 8.17969 23.6172 8.61328 23.6172H11.9414C12.3516 23.6172 12.668 23.3008 12.668 22.8906C12.668 22.4922 12.3516 22.1758 11.9414 22.1758H8.61328C8.17969 22.1758 7.875 22.4922 7.875 22.8906ZM22.4062 24.5664C22.6289 26.3477 23.5781 27.1797 25.3711 26.9336L26.5898 26.7695C28.3828 26.5234 29.1211 25.5742 28.9219 23.793L26.9062 6.27344C26.6953 4.49219 25.7344 3.64844 23.9414 3.90625L22.7227 4.07031C20.918 4.32812 20.168 5.26562 20.3789 7.04688L22.4062 24.5664ZM24.1406 24.2148L22.1602 6.97656C22.0781 6.28516 22.3945 5.89844 23.1211 5.79297L23.9648 5.6875C24.6914 5.58203 25.0898 5.93359 25.1719 6.61328L27.1523 23.8516C27.2344 24.5547 26.918 24.9297 26.2031 25.0352L25.3359 25.1523C24.6211 25.2578 24.2227 24.918 24.1406 24.2148Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88472">
<rect width="28.9535" height="26.7539" fill="white" transform="translate(0 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -0,0 +1,10 @@
<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88473)">
<path d="M1.44141 26.9336H3.65625C4.58203 26.9336 5.09766 26.4062 5.09766 25.4922V5.69922C5.09766 4.77344 4.58203 4.24609 3.65625 4.24609H1.44141C0.503906 4.24609 0 4.77344 0 5.69922V25.4922C0 26.4062 0.503906 26.9336 1.44141 26.9336ZM7.91016 26.9336H12.6562C13.5938 26.9336 14.0977 26.4062 14.0977 25.4922V9.69531C14.0977 8.78125 13.5938 8.25391 12.6562 8.25391H7.91016C6.97266 8.25391 6.45703 8.78125 6.45703 9.69531V25.4922C6.45703 26.4062 6.97266 26.9336 7.91016 26.9336ZM9.02344 12.4375C8.60156 12.4375 8.28516 12.1211 8.28516 11.7109C8.28516 11.3125 8.60156 10.9961 9.02344 10.9961H11.5664C11.9766 10.9961 12.2812 11.3125 12.2812 11.7109C12.2812 12.1211 11.9766 12.4375 11.5664 12.4375H9.02344ZM9.02344 24.2031C8.60156 24.2031 8.28516 23.8867 8.28516 23.4766C8.28516 23.0781 8.60156 22.7617 9.02344 22.7617H11.5664C11.9766 22.7617 12.2812 23.0781 12.2812 23.4766C12.2812 23.8867 11.9766 24.2031 11.5664 24.2031H9.02344ZM16.9102 26.9336H19.8047C20.7422 26.9336 21.2461 26.4062 21.2461 25.4922V2.45312C21.2461 1.52734 20.7422 1 19.8047 1H16.9102C15.9727 1 15.4688 1.52734 15.4688 2.45312V25.4922C15.4688 26.4062 15.9727 26.9336 16.9102 26.9336ZM24.8789 26.9922L26.7656 26.7227C27.6797 26.6055 28.125 26.043 28.0195 25.1172L25.7812 5.67578C25.6758 4.76172 25.125 4.28125 24.1875 4.41016L22.3125 4.67969C21.3867 4.79688 20.9414 5.35938 21.0469 6.27344L23.2969 25.7148C23.4023 26.6289 23.9531 27.1094 24.8789 26.9922Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88473">
<rect width="28.0348" height="26.7539" fill="white" transform="translate(0 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,20 @@
<svg width="32" height="30" viewBox="0 0 32 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_82363)" filter="url(#filter0_d_2124_82363)">
<path d="M7.67969 21.5977H23.6875C26.1367 21.5977 27.3555 20.3789 27.3555 17.9648V3.65625C27.3555 1.24219 26.1367 0.0234375 23.6875 0.0234375H7.67969C5.23047 0.0234375 4 1.23047 4 3.65625V17.9648C4 20.3906 5.23047 21.5977 7.67969 21.5977ZM7.50391 19.7109C6.46094 19.7109 5.88672 19.1602 5.88672 18.0703V7.01953C5.88672 5.94141 6.46094 5.37891 7.50391 5.37891H23.8398C24.8828 5.37891 25.4688 5.94141 25.4688 7.01953V18.0703C25.4688 19.1602 24.8828 19.7109 23.8398 19.7109H7.50391ZM13.3984 9.58594H14.0898C14.5 9.58594 14.6289 9.46875 14.6289 9.05859V8.36719C14.6289 7.95703 14.5 7.82812 14.0898 7.82812H13.3984C12.9883 7.82812 12.8477 7.95703 12.8477 8.36719V9.05859C12.8477 9.46875 12.9883 9.58594 13.3984 9.58594ZM17.2891 9.58594H17.9805C18.3906 9.58594 18.5312 9.46875 18.5312 9.05859V8.36719C18.5312 7.95703 18.3906 7.82812 17.9805 7.82812H17.2891C16.8789 7.82812 16.7383 7.95703 16.7383 8.36719V9.05859C16.7383 9.46875 16.8789 9.58594 17.2891 9.58594ZM21.1797 9.58594H21.8711C22.2812 9.58594 22.4219 9.46875 22.4219 9.05859V8.36719C22.4219 7.95703 22.2812 7.82812 21.8711 7.82812H21.1797C20.7695 7.82812 20.6406 7.95703 20.6406 8.36719V9.05859C20.6406 9.46875 20.7695 9.58594 21.1797 9.58594ZM9.50781 13.418H10.1875C10.6094 13.418 10.7383 13.3008 10.7383 12.8906V12.1992C10.7383 11.7891 10.6094 11.6719 10.1875 11.6719H9.50781C9.08594 11.6719 8.95703 11.7891 8.95703 12.1992V12.8906C8.95703 13.3008 9.08594 13.418 9.50781 13.418ZM13.3984 13.418H14.0898C14.5 13.418 14.6289 13.3008 14.6289 12.8906V12.1992C14.6289 11.7891 14.5 11.6719 14.0898 11.6719H13.3984C12.9883 11.6719 12.8477 11.7891 12.8477 12.1992V12.8906C12.8477 13.3008 12.9883 13.418 13.3984 13.418ZM17.2891 13.418H17.9805C18.3906 13.418 18.5312 13.3008 18.5312 12.8906V12.1992C18.5312 11.7891 18.3906 11.6719 17.9805 11.6719H17.2891C16.8789 11.6719 16.7383 11.7891 16.7383 12.1992V12.8906C16.7383 13.3008 16.8789 13.418 17.2891 13.418ZM21.1797 13.418H21.8711C22.2812 13.418 22.4219 13.3008 22.4219 12.8906V12.1992C22.4219 11.7891 22.2812 11.6719 21.8711 11.6719H21.1797C20.7695 11.6719 20.6406 11.7891 20.6406 12.1992V12.8906C20.6406 13.3008 20.7695 13.418 21.1797 13.418ZM9.50781 17.2617H10.1875C10.6094 17.2617 10.7383 17.1328 10.7383 16.7227V16.0312C10.7383 15.6211 10.6094 15.5039 10.1875 15.5039H9.50781C9.08594 15.5039 8.95703 15.6211 8.95703 16.0312V16.7227C8.95703 17.1328 9.08594 17.2617 9.50781 17.2617ZM13.3984 17.2617H14.0898C14.5 17.2617 14.6289 17.1328 14.6289 16.7227V16.0312C14.6289 15.6211 14.5 15.5039 14.0898 15.5039H13.3984C12.9883 15.5039 12.8477 15.6211 12.8477 16.0312V16.7227C12.8477 17.1328 12.9883 17.2617 13.3984 17.2617ZM17.2891 17.2617H17.9805C18.3906 17.2617 18.5312 17.1328 18.5312 16.7227V16.0312C18.5312 15.6211 18.3906 15.5039 17.9805 15.5039H17.2891C16.8789 15.5039 16.7383 15.6211 16.7383 16.0312V16.7227C16.7383 17.1328 16.8789 17.2617 17.2891 17.2617Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<filter id="filter0_d_2124_82363" x="0" y="0" width="31.3555" height="29.5977" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2124_82363"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2124_82363" result="shape"/>
</filter>
<clipPath id="clip0_2124_82363">
<rect width="23.3555" height="21.5977" fill="white" transform="translate(4)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -0,0 +1,14 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88465)">
<path d="M3.67969 25.4062H19.6875C22.1367 25.4062 23.3555 24.1875 23.3555 21.7734V7.46484C23.3555 5.05078 22.1367 3.83203 19.6875 3.83203H3.67969C1.23047 3.83203 0 5.03906 0 7.46484V21.7734C0 24.1992 1.23047 25.4062 3.67969 25.4062ZM3.50391 23.5195C2.46094 23.5195 1.88672 22.9688 1.88672 21.8789V10.8281C1.88672 9.75 2.46094 9.1875 3.50391 9.1875H19.8398C20.8828 9.1875 21.4688 9.75 21.4688 10.8281V21.8789C21.4688 22.9688 20.8828 23.5195 19.8398 23.5195H3.50391Z" fill="black" fill-opacity="0.85"/>
<path d="M9.39844 13.3945H10.0898C10.5 13.3945 10.6289 13.2773 10.6289 12.8672V12.1758C10.6289 11.7656 10.5 11.6367 10.0898 11.6367H9.39844C8.98828 11.6367 8.84766 11.7656 8.84766 12.1758V12.8672C8.84766 13.2773 8.98828 13.3945 9.39844 13.3945ZM13.2891 13.3945H13.9805C14.3906 13.3945 14.5312 13.2773 14.5312 12.8672V12.1758C14.5312 11.7656 14.3906 11.6367 13.9805 11.6367H13.2891C12.8789 11.6367 12.7383 11.7656 12.7383 12.1758V12.8672C12.7383 13.2773 12.8789 13.3945 13.2891 13.3945ZM17.1797 13.3945H17.8711C18.2812 13.3945 18.4219 13.2773 18.4219 12.8672V12.1758C18.4219 11.7656 18.2812 11.6367 17.8711 11.6367H17.1797C16.7695 11.6367 16.6406 11.7656 16.6406 12.1758V12.8672C16.6406 13.2773 16.7695 13.3945 17.1797 13.3945ZM5.50781 17.2266H6.1875C6.60938 17.2266 6.73828 17.1094 6.73828 16.6992V16.0078C6.73828 15.5977 6.60938 15.4805 6.1875 15.4805H5.50781C5.08594 15.4805 4.95703 15.5977 4.95703 16.0078V16.6992C4.95703 17.1094 5.08594 17.2266 5.50781 17.2266ZM9.39844 17.2266H10.0898C10.5 17.2266 10.6289 17.1094 10.6289 16.6992V16.0078C10.6289 15.5977 10.5 15.4805 10.0898 15.4805H9.39844C8.98828 15.4805 8.84766 15.5977 8.84766 16.0078V16.6992C8.84766 17.1094 8.98828 17.2266 9.39844 17.2266ZM13.2891 17.2266H13.9805C14.3906 17.2266 14.5312 17.1094 14.5312 16.6992V16.0078C14.5312 15.5977 14.3906 15.4805 13.9805 15.4805H13.2891C12.8789 15.4805 12.7383 15.5977 12.7383 16.0078V16.6992C12.7383 17.1094 12.8789 17.2266 13.2891 17.2266ZM5.50781 21.0703H6.1875C6.60938 21.0703 6.73828 20.9414 6.73828 20.5312V19.8398C6.73828 19.4297 6.60938 19.3125 6.1875 19.3125H5.50781C5.08594 19.3125 4.95703 19.4297 4.95703 19.8398V20.5312C4.95703 20.9414 5.08594 21.0703 5.50781 21.0703ZM9.39844 21.0703H10.0898C10.5 21.0703 10.6289 20.9414 10.6289 20.5312V19.8398C10.6289 19.4297 10.5 19.3125 10.0898 19.3125H9.39844C8.98828 19.3125 8.84766 19.4297 8.84766 19.8398V20.5312C8.84766 20.9414 8.98828 21.0703 9.39844 21.0703ZM13.2891 21.0703H13.9805C14.3906 21.0703 14.5312 20.9414 14.5312 20.5312V19.8398C14.5312 19.4297 14.3906 19.3125 13.9805 19.3125H13.2891C12.8789 19.3125 12.7383 19.4297 12.7383 19.8398V20.5312C12.7383 20.9414 12.8789 21.0703 13.2891 21.0703Z" fill="black" fill-opacity="0.85"/>
<path d="M22.4297 29.2148C26.543 29.2148 29.9766 25.7812 29.9766 21.6562C29.9766 17.5078 26.5781 14.0977 22.4297 14.0977C18.2812 14.0977 14.8711 17.5195 14.8711 21.6562C14.8711 25.8164 18.2695 29.2148 22.4297 29.2148Z" fill="white"/>
<path d="M22.4297 27.6094C25.6523 27.6094 28.3828 24.9141 28.3828 21.6562C28.3828 18.3867 25.6875 15.7031 22.4297 15.7031C19.1602 15.7031 16.4766 18.3984 16.4766 21.6562C16.4766 24.9375 19.1602 27.6094 22.4297 27.6094Z" fill="black" fill-opacity="0.85"/>
<path d="M19.6523 22.5703C19.2422 22.5703 18.9141 22.2422 18.9141 21.8438C18.9141 21.457 19.2539 21.1289 19.6523 21.1289H21.7617V18.1875C21.7617 17.8008 22.0898 17.4844 22.4883 17.4844C22.8867 17.4844 23.2148 17.8008 23.2148 18.1875V21.8438C23.2148 22.2539 22.8984 22.5703 22.4883 22.5703H19.6523Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2124_88465">
<rect width="29.9766" height="29.2148" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1,3 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.4609 14.1719C19.4609 13.8789 19.3438 13.6094 19.1211 13.3984L9.83984 4.30469C9.62891 4.10547 9.37109 4 9.06641 4C8.46875 4 8 4.45703 8 5.06641C8 5.35938 8.11719 5.62891 8.30469 5.82812L16.8359 14.1719L8.30469 22.5156C8.11719 22.7148 8 22.9727 8 23.2773C8 23.8867 8.46875 24.3438 9.06641 24.3438C9.37109 24.3438 9.62891 24.2383 9.83984 24.0273L19.1211 14.9453C19.3438 14.7227 19.4609 14.4648 19.4609 14.1719Z" fill="black" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

@ -0,0 +1,10 @@
<svg width="37" height="28" viewBox="0 0 37 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_89302)">
<path d="M9.57422 21.625C13.6055 21.625 16.875 18.3555 16.875 14.3125C16.875 10.2812 13.6055 7 9.57422 7C5.53125 7 2.25 10.2812 2.25 14.3125C2.25 18.3555 5.53125 21.625 9.57422 21.625ZM9.57422 19.6445C6.62109 19.6445 4.23047 17.2656 4.23047 14.3125C4.23047 11.3711 6.62109 8.98047 9.57422 8.98047C12.5039 8.98047 14.8945 11.3828 14.8945 14.3125C14.8945 17.2539 12.5039 19.6445 9.57422 19.6445ZM27.4219 21.625C31.4531 21.625 34.7227 18.3555 34.7227 14.3125C34.7227 10.2812 31.4531 7 27.4219 7C23.3789 7 20.0977 10.2812 20.0977 14.3125C20.0977 18.3555 23.3789 21.625 27.4219 21.625ZM27.4219 19.6445C24.4805 19.6445 22.0781 17.2539 22.0781 14.3125C22.0781 11.3828 24.4805 8.98047 27.4219 8.98047C30.3633 8.98047 32.7422 11.3711 32.7422 14.3125C32.7422 17.2656 30.3633 19.6445 27.4219 19.6445ZM3.02344 12.8711H0.878906C0.304688 12.8711 0 13.1641 0 13.75V14.2305C0 14.8164 0.304688 15.1211 0.878906 15.1211H3.02344V12.8711ZM33.9492 15.1211H36.1055C36.6797 15.1211 36.9727 14.8164 36.9727 14.2305V13.75C36.9727 13.1641 36.6797 12.8711 36.1055 12.8711H33.9492V15.1211ZM16.3008 14.7344C16.8867 14.3711 17.707 14.1836 18.4922 14.1836C19.2656 14.1836 20.0859 14.3711 20.6836 14.7344V12.6133C20.0156 12.2969 19.1484 12.1797 18.4922 12.1797C17.8242 12.1797 16.957 12.2969 16.3008 12.6133V14.7344Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_89302">
<rect width="36.9727" height="14.6367" fill="white" transform="translate(0 7)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 5 4 C 3.3544268 4 2 5.3555411 2 7 L 2 16 L 2 26 L 2 43 C 2 44.644459 3.3544268 46 5 46 L 45 46 C 46.645063 46 48 44.645063 48 43 L 48 26 L 48 16 L 48 11 C 48 9.3549372 46.645063 8 45 8 L 18 8 C 18.08657 8 17.96899 8.000364 17.724609 7.71875 C 17.480227 7.437136 17.179419 6.9699412 16.865234 6.46875 C 16.55105 5.9675588 16.221777 5.4327899 15.806641 4.9628906 C 15.391504 4.4929914 14.818754 4 14 4 L 5 4 z M 5 6 L 14 6 C 13.93925 6 14.06114 6.00701 14.308594 6.2871094 C 14.556051 6.5672101 14.857231 7.0324412 15.169922 7.53125 C 15.482613 8.0300588 15.806429 8.562864 16.212891 9.03125 C 16.619352 9.499636 17.178927 10 18 10 L 45 10 C 45.562937 10 46 10.437063 46 11 L 46 13.1875 C 45.685108 13.07394 45.351843 13 45 13 L 5 13 C 4.6481575 13 4.3148915 13.07394 4 13.1875 L 4 7 C 4 6.4364589 4.4355732 6 5 6 z M 5 15 L 45 15 C 45.56503 15 46 15.43497 46 16 L 46 26 L 46 43 C 46 43.562937 45.562937 44 45 44 L 5 44 C 4.4355732 44 4 43.563541 4 43 L 4 26 L 4 16 C 4 15.43497 4.4349698 15 5 15 z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88726)">
<path d="M14.1953 25.4159C14.5 25.4159 14.793 25.3924 15.1094 25.369L15.7773 26.6463C15.918 26.9159 16.1641 27.0448 16.4922 27.0096C16.7852 26.951 16.9844 26.7284 17.0312 26.4237L17.2305 25.0057C17.8164 24.8416 18.3906 24.619 18.9414 24.3846L19.9961 25.3338C20.2188 25.5448 20.5 25.5799 20.793 25.4276C21.0508 25.2752 21.1562 25.0057 21.0977 24.6893L20.8047 23.2948C21.2969 22.9549 21.7773 22.5682 22.2109 22.1346L23.5117 22.6737C23.8047 22.8026 24.0859 22.7323 24.3086 22.4744C24.5078 22.2518 24.5195 21.9588 24.3555 21.6893L23.5938 20.4705C23.9453 19.9901 24.2266 19.451 24.4961 18.8885L25.9375 18.9588C26.2422 18.9823 26.4883 18.8065 26.5938 18.5252C26.6875 18.2323 26.6055 17.951 26.3594 17.7635L25.2344 16.8729C25.3867 16.2987 25.5039 15.701 25.5625 15.0682L26.9102 14.6346C27.2148 14.5409 27.3906 14.3182 27.3906 14.0018C27.3906 13.6854 27.2148 13.4627 26.9102 13.3573L25.5625 12.9354C25.5039 12.3026 25.3867 11.7166 25.2344 11.1307L26.3594 10.2401C26.5938 10.0526 26.6875 9.78304 26.5938 9.49007C26.4883 9.20882 26.2422 9.03304 25.9375 9.05648L24.4961 9.10335C24.2266 8.54085 23.9453 8.02523 23.5938 7.52132L24.3555 6.30257C24.5195 6.05648 24.4961 5.76351 24.3086 5.54085C24.0859 5.28304 23.8047 5.22444 23.5117 5.34163L22.2109 5.86898C21.7773 5.4471 21.2969 5.04866 20.8047 4.70882L21.0977 3.32601C21.168 2.99788 21.0508 2.72835 20.793 2.58773C20.5 2.42366 20.2188 2.45882 19.9961 2.68148L18.9414 3.61898C18.3906 3.37288 17.8164 3.17366 17.2305 2.99788L17.0312 1.59163C16.9844 1.28694 16.7734 1.06429 16.4805 1.00569C16.1641 0.970538 15.9062 1.09944 15.7773 1.35726L15.1094 2.6346C14.793 2.61116 14.5 2.59944 14.1953 2.59944C13.8789 2.59944 13.5977 2.61116 13.2812 2.6346L12.6016 1.35726C12.4727 1.09944 12.2148 0.970538 11.8984 1.00569C11.6055 1.06429 11.3945 1.28694 11.3594 1.59163L11.1484 2.99788C10.5625 3.17366 10 3.36116 9.4375 3.61898L8.38281 2.68148C8.16016 2.45882 7.87891 2.43538 7.58594 2.58773C7.32812 2.72835 7.21094 2.99788 7.28125 3.32601L7.57422 4.70882C7.09375 5.04866 6.60156 5.4471 6.16797 5.86898L4.86719 5.34163C4.57422 5.22444 4.30469 5.28304 4.08203 5.54085C3.88281 5.76351 3.85938 6.05648 4.02344 6.30257L4.78516 7.52132C4.44531 8.02523 4.15234 8.54085 3.88281 9.10335L2.45312 9.05648C2.14844 9.03304 1.89062 9.20882 1.78516 9.49007C1.69141 9.78304 1.78516 10.0526 2.01953 10.2401L3.14453 11.1307C2.99219 11.7166 2.875 12.3026 2.83984 12.9237L1.46875 13.3573C1.16406 13.4627 1 13.6854 1 14.0018C1 14.3182 1.16406 14.5409 1.46875 14.6346L2.83984 15.0682C2.875 15.701 2.99219 16.2987 3.14453 16.8729L2.01953 17.7635C1.78516 17.9393 1.70312 18.2205 1.78516 18.5252C1.89062 18.8065 2.14844 18.9823 2.45312 18.9588L3.88281 18.8885C4.15234 19.451 4.44531 19.9901 4.78516 20.4705L4.02344 21.6893C3.85938 21.9588 3.88281 22.2518 4.08203 22.4744C4.30469 22.7323 4.57422 22.8026 4.86719 22.6737L6.16797 22.1346C6.60156 22.5682 7.09375 22.9549 7.57422 23.2948L7.28125 24.6893C7.22266 25.0057 7.32812 25.2752 7.58594 25.4276C7.87891 25.5799 8.16016 25.5448 8.38281 25.3338L9.4375 24.3846C10 24.619 10.5625 24.8416 11.1484 25.0057L11.3594 26.4237C11.3945 26.7284 11.6055 26.951 11.8984 27.0096C12.2148 27.0448 12.4609 26.9159 12.6016 26.6463L13.2812 25.369C13.5859 25.3924 13.8789 25.4159 14.1953 25.4159ZM14.1953 23.6463C8.82812 23.6463 4.67969 19.3573 4.67969 14.0135C4.67969 8.65804 8.82812 4.36898 14.1953 4.36898C19.5625 4.36898 23.7109 8.65804 23.7109 14.0135C23.7109 19.3573 19.5625 23.6463 14.1953 23.6463ZM12.1445 12.0799L13.4453 11.2596L9.47266 4.46273L8.125 5.22444L12.1445 12.0799ZM16.9141 14.7518H24.8242L24.8125 13.2401H16.9141V14.7518ZM13.457 16.7791L12.168 15.9354L8.00781 22.744L9.34375 23.5291L13.457 16.7791ZM14.1719 17.0955C15.8594 17.0955 17.2305 15.7244 17.2305 14.0252C17.2305 12.326 15.8594 10.9549 14.1719 10.9549C12.4727 10.9549 11.1016 12.326 11.1016 14.0252C11.1016 15.7244 12.4727 17.0955 14.1719 17.0955ZM14.1719 15.4432C13.3633 15.4432 12.7539 14.8221 12.7539 14.0252C12.7539 13.2284 13.3633 12.6073 14.1719 12.6073C14.9688 12.6073 15.5781 13.2284 15.5781 14.0252C15.5781 14.8221 14.9688 15.4432 14.1719 15.4432Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88726">
<rect width="26.3906" height="26.0153" fill="white" transform="translate(1 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_67731)">
<path d="M2 10.793C2 15.7852 6.18359 20.6953 12.793 24.9141C13.0391 25.0664 13.3906 25.2305 13.6367 25.2305C13.8828 25.2305 14.2344 25.0664 14.4922 24.9141C21.0898 20.6953 25.2734 15.7852 25.2734 10.793C25.2734 6.64453 22.4258 3.71484 18.6289 3.71484C16.4609 3.71484 14.7031 4.74609 13.6367 6.32812C12.5938 4.75781 10.8125 3.71484 8.64453 3.71484C4.84766 3.71484 2 6.64453 2 10.793ZM3.88672 10.793C3.88672 7.67578 5.90234 5.60156 8.62109 5.60156C10.8242 5.60156 12.0898 6.97266 12.8398 8.14453C13.1562 8.61328 13.3555 8.74219 13.6367 8.74219C13.918 8.74219 14.0938 8.60156 14.4336 8.14453C15.2422 6.99609 16.4609 5.60156 18.6523 5.60156C21.3711 5.60156 23.3867 7.67578 23.3867 10.793C23.3867 15.1523 18.7812 19.8516 13.8828 23.1094C13.7656 23.1914 13.6836 23.25 13.6367 23.25C13.5898 23.25 13.5078 23.1914 13.4023 23.1094C8.49219 19.8516 3.88672 15.1523 3.88672 10.793Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_67731">
<rect width="23.2734" height="22.2305" fill="white" transform="translate(2 3)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_67732)">
<path d="M13.6367 25.2305C13.8828 25.2305 14.2344 25.0664 14.4922 24.9141C21.0898 20.6953 25.2734 15.7852 25.2734 10.793C25.2734 6.64453 22.4258 3.71484 18.7461 3.71484C16.4609 3.71484 14.7031 4.98047 13.6367 6.91406C12.5938 4.99219 10.8125 3.71484 8.52734 3.71484C4.84766 3.71484 2 6.64453 2 10.793C2 15.7852 6.18359 20.6953 12.793 24.9141C13.0391 25.0664 13.3906 25.2305 13.6367 25.2305Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_67732">
<rect width="23.2734" height="22.2305" fill="white" transform="translate(2 3)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 714 B

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 64 64"><path fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4" d="M58,48H6a2,2,0,0,1-2-2V17.26A1.27,1.27,0,0,1,5.26,16H58a2,2,0,0,1,2,2V46A2,2,0,0,1,58,48Z"/><line x1="22" x2="42" y1="40" y2="40" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="10" x2="18" y1="40" y2="40" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="10" x2="18" y1="32" y2="32" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="46" x2="54" y1="32" y2="32" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="46" x2="54" y1="40" y2="40" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="22" x2="26" y1="32" y2="32" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="30" x2="34" y1="32" y2="32" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="38" x2="42" y1="32" y2="32" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="50" x2="54" y1="24" y2="24" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="42" x2="46" y1="24" y2="24" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="34" x2="38" y1="24" y2="24" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="26" x2="30" y1="24" y2="24" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="18" x2="22" y1="24" y2="24" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/><line x1="10" x2="14" y1="24" y2="24" fill="none" stroke="#010101" stroke-miterlimit="10" stroke-width="4"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,8 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.65625 21.6054H24.6641C25.1914 21.6054 25.6133 21.1953 25.6133 20.668C25.6133 20.1289 25.1914 19.7188 24.6641 19.7188H8.65625C8.11719 19.7188 7.70703 20.1289 7.70703 20.668C7.70703 21.1953 8.11719 21.6054 8.65625 21.6054Z" fill="black" fill-opacity="0.85"/>
<path d="M3.47656 22.1445C4.29688 22.1445 4.95312 21.4766 4.95312 20.668C4.95312 19.8477 4.29688 19.1914 3.47656 19.1914C2.65625 19.1914 2 19.8477 2 20.668C2 21.4766 2.65625 22.1445 3.47656 22.1445Z" fill="black" fill-opacity="0.85"/>
<path d="M8.65625 14.5273H24.6641C25.1914 14.5273 25.6133 14.1055 25.6133 13.5781C25.6133 13.0508 25.1914 12.6406 24.6641 12.6406H8.65625C8.11719 12.6406 7.70703 13.0508 7.70703 13.5781C7.70703 14.1055 8.11719 14.5273 8.65625 14.5273Z" fill="black" fill-opacity="0.85"/>
<path d="M3.47656 15.0547C4.29688 15.0547 4.95312 14.3984 4.95312 13.5781C4.95312 12.7578 4.29688 12.1016 3.47656 12.1016C2.65625 12.1016 2 12.7578 2 13.5781C2 14.3984 2.65625 15.0547 3.47656 15.0547Z" fill="black" fill-opacity="0.85"/>
<path d="M8.65625 7.4375H24.6641C25.1914 7.4375 25.6133 7.02734 25.6133 6.5C25.6133 5.96094 25.1914 5.55078 24.6641 5.55078H8.65625C8.11719 5.55078 7.70703 5.96094 7.70703 6.5C7.70703 7.02734 8.11719 7.4375 8.65625 7.4375Z" fill="black" fill-opacity="0.85"/>
<path d="M3.47656 7.96484C4.29688 7.96484 4.95312 7.30859 4.95312 6.5C4.95312 5.67969 4.29688 5.02344 3.47656 5.02344C2.65625 5.02344 2 5.67969 2 6.5C2 7.30859 2.65625 7.96484 3.47656 7.96484Z" fill="black" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88631)">
<path d="M3 11.3516C3 16.5078 7.19531 20.7031 12.3516 20.7031C14.3906 20.7031 16.2539 20.0469 17.7891 18.9453L23.5547 24.7227C23.8242 24.9922 24.1758 25.1211 24.5508 25.1211C25.3477 25.1211 25.8984 24.5234 25.8984 23.7383C25.8984 23.3633 25.7578 23.0234 25.5117 22.7773L19.7812 17.0117C20.9883 15.4414 21.7031 13.4844 21.7031 11.3516C21.7031 6.19531 17.5078 2 12.3516 2C7.19531 2 3 6.19531 3 11.3516ZM5.00391 11.3516C5.00391 7.29688 8.29688 4.00391 12.3516 4.00391C16.4062 4.00391 19.6992 7.29688 19.6992 11.3516C19.6992 15.4062 16.4062 18.6992 12.3516 18.6992C8.29688 18.6992 5.00391 15.4062 5.00391 11.3516Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88631">
<rect width="22.8984" height="23.1211" fill="white" transform="translate(3 2)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 934 B

@ -0,0 +1,10 @@
<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45739)">
<path d="M6.88867 24.7282H21.6192C23.5645 24.7282 24.4903 24.1423 24.4903 22.8532C24.4903 19.7829 20.6114 15.3415 14.2598 15.3415C7.89649 15.3415 4.01758 19.7829 4.01758 22.8532C4.01758 24.1423 4.94336 24.7282 6.88867 24.7282ZM6.33789 22.9587C6.0332 22.9587 5.9043 22.8767 5.9043 22.6306C5.9043 20.697 8.88086 17.111 14.2598 17.111C19.627 17.111 22.6035 20.697 22.6035 22.6306C22.6035 22.8767 22.4864 22.9587 22.1817 22.9587H6.33789ZM14.2598 13.8767C17.0488 13.8767 19.3223 11.4041 19.3223 8.38062C19.3223 5.38062 17.0606 3.02515 14.2598 3.02515C11.4824 3.02515 9.19727 5.42749 9.19727 8.40406C9.19727 11.4158 11.4707 13.8767 14.2598 13.8767ZM14.2598 12.1072C12.5488 12.1072 11.084 10.4783 11.084 8.40406C11.084 6.36499 12.5254 4.79468 14.2598 4.79468C16.0059 4.79468 17.4356 6.32984 17.4356 8.38062C17.4356 10.4548 15.9824 12.1072 14.2598 12.1072Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_45739">
<rect width="20.4727" height="21.7148" fill="white" transform="translate(4.01758 3.02515)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,12 @@
<svg width="35" height="29" viewBox="0 0 35 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45768)">
<path d="M8.92578 14.5642C11.3398 14.5642 13.3203 12.3962 13.3203 9.73608C13.3203 7.13452 11.3633 5.03687 8.92578 5.03687C6.51172 5.03687 4.53125 7.16968 4.53125 9.75953C4.53125 12.4079 6.51172 14.5642 8.92578 14.5642ZM8.92578 12.8181C7.49609 12.8181 6.27734 11.447 6.27734 9.75953C6.27734 8.10718 7.48437 6.78296 8.92578 6.78296C10.4023 6.78296 11.5859 8.08373 11.5859 9.73608C11.5859 11.447 10.3672 12.8181 8.92578 12.8181ZM2.41015 25.3103H15.4297C17.0234 25.3103 17.8086 24.6657 17.8086 23.3532C17.8086 19.4626 13.8359 15.9001 8.91406 15.9001C4.00391 15.9001 0.0195312 19.4626 0.0195312 23.3532C0.0195312 24.6657 0.816406 25.3103 2.41015 25.3103ZM2.11719 23.5759C1.88281 23.5759 1.76562 23.4821 1.76562 23.2478C1.76562 20.3415 5.08203 17.6345 8.91406 17.6345C12.7578 17.6345 16.0625 20.3415 16.0625 23.2478C16.0625 23.4821 15.957 23.5759 15.7226 23.5759H2.11719Z" fill="black" fill-opacity="0.85"/>
<path d="M15.0664 26.904H29.7851C32.9023 26.904 34.2617 25.4274 34.2617 23.4353C34.2617 19.4509 29.6445 14.3181 22.4257 14.3181C15.1953 14.3181 10.5898 19.4509 10.5898 23.4353C10.5898 25.4274 11.9375 26.904 15.0664 26.904ZM22.4257 14.4587C25.2148 14.4587 27.4883 11.9861 27.4883 8.96265C27.4883 5.96265 25.2265 3.60718 22.4257 3.60718C19.6484 3.60718 17.3633 6.00953 17.3633 8.98609C17.3633 11.9978 19.6484 14.4587 22.4257 14.4587Z" fill="white"/>
<path d="M22.4257 14.4587C25.2148 14.4587 27.4883 11.9861 27.4883 8.96265C27.4883 5.96265 25.2265 3.60718 22.4257 3.60718C19.6484 3.60718 17.3633 6.00953 17.3633 8.98609C17.3633 11.9978 19.6484 14.4587 22.4257 14.4587ZM22.4257 12.6892C20.7148 12.6892 19.25 11.0603 19.25 8.98609C19.25 6.94703 20.6914 5.37671 22.4257 5.37671C24.1718 5.37671 25.6015 6.91187 25.6015 8.96265C25.6015 11.0369 24.1601 12.6892 22.4257 12.6892ZM15.0664 25.3103H29.7851C31.7304 25.3103 32.6562 24.7243 32.6562 23.4353C32.6562 20.3649 28.7773 15.9235 22.4257 15.9235C16.0625 15.9235 12.1836 20.3649 12.1836 23.4353C12.1836 24.7243 13.1093 25.3103 15.0664 25.3103ZM14.5039 23.5407C14.1992 23.5407 14.0703 23.4587 14.0703 23.2126C14.0703 21.279 17.0468 17.6931 22.4257 17.6931C27.7929 17.6931 30.7695 21.279 30.7695 23.2126C30.7695 23.4587 30.6523 23.5407 30.3476 23.5407H14.5039Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_45768">
<rect width="34.2422" height="24.8789" fill="white" transform="translate(0.0195312 2.02515)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -0,0 +1,12 @@
<svg width="34" height="29" viewBox="0 0 34 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45769)">
<path d="M8.60937 14.0969C10.789 14.0969 12.6875 12.1282 12.6875 9.5852C12.6875 7.05395 10.7773 5.20239 8.60937 5.20239C6.42969 5.20239 4.51953 7.10083 4.51953 9.60864C4.51953 12.1282 6.41797 14.0969 8.60937 14.0969ZM2.07031 24.6789H15.125C16.6133 24.6789 17.1875 24.093 17.1875 23.0266C17.1875 19.7922 13.8828 15.8899 8.59765 15.8899C3.3125 15.8899 0.0078125 19.7922 0.0078125 23.0266C0.0078125 24.093 0.59375 24.6789 2.07031 24.6789Z" fill="black" fill-opacity="0.85"/>
<path d="M14.7266 26.2727H29.457C32.539 26.2727 33.5469 24.7844 33.5469 23.1204C33.5469 19.1828 29.0351 14.3313 22.0859 14.3313C15.1484 14.3313 10.6367 19.1828 10.6367 23.1204C10.6367 24.7844 11.6445 26.2727 14.7266 26.2727Z" fill="white"/>
<path d="M22.0976 13.8274C24.6172 13.8274 26.7851 11.5774 26.7851 8.6477C26.7851 5.75317 24.6055 3.60864 22.0976 3.60864C19.5898 3.60864 17.4101 5.80005 17.4101 8.67114C17.4101 11.5774 19.5781 13.8274 22.0976 13.8274ZM14.7266 24.6789H29.457C31.2969 24.6789 31.9531 24.1516 31.9531 23.1204C31.9531 20.0969 28.168 15.925 22.0859 15.925C16.0156 15.925 12.2305 20.0969 12.2305 23.1204C12.2305 24.1516 12.8867 24.6789 14.7266 24.6789Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_45769">
<rect width="33.5391" height="24.2461" fill="white" transform="translate(0.0078125 2.02661)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,13 @@
<svg width="45" height="29" viewBox="0 0 45 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45783)">
<path d="M35.9277 14.5657C38.3535 14.5657 40.3223 12.3977 40.3223 9.73755C40.3223 7.13599 38.3653 5.03833 35.9277 5.03833C33.5254 5.03833 31.5332 7.17114 31.5332 9.76099C31.5332 12.4094 33.5254 14.5657 35.9277 14.5657ZM35.9277 12.8196C34.4981 12.8196 33.2793 11.4485 33.2793 9.76099C33.2793 8.10864 34.4863 6.78442 35.9277 6.78442C37.4043 6.78442 38.5879 8.0852 38.5879 9.73755C38.5879 11.4485 37.3692 12.8196 35.9277 12.8196ZM29.4121 25.3118H42.4317C44.0254 25.3118 44.8223 24.6672 44.8223 23.3547C44.8223 19.4641 40.8379 15.9016 35.9277 15.9016C31.0059 15.9016 27.0332 19.4641 27.0332 23.3547C27.0332 24.6672 27.8301 25.3118 29.4121 25.3118ZM28.7793 23.2493C28.7793 20.343 32.0957 17.636 35.9277 17.636C39.7598 17.636 43.0762 20.343 43.0762 23.2493C43.0762 23.4836 42.9707 23.5774 42.7246 23.5774H29.1192C28.8848 23.5774 28.7793 23.4836 28.7793 23.2493Z" fill="black" fill-opacity="0.85"/>
<path d="M8.92773 14.5657C11.3418 14.5657 13.3223 12.3977 13.3223 9.73755C13.3223 7.13599 11.3653 5.03833 8.92773 5.03833C6.51367 5.03833 4.5332 7.17114 4.5332 9.76099C4.5332 12.4094 6.51367 14.5657 8.92773 14.5657ZM8.92773 12.8196C7.48632 12.8196 6.27929 11.4485 6.27929 9.76099C6.27929 8.10864 7.4746 6.78442 8.92773 6.78442C10.4043 6.78442 11.5879 8.0852 11.5879 9.73755C11.5879 11.4485 10.3692 12.8196 8.92773 12.8196ZM2.40039 25.3118H15.4317C17.0137 25.3118 17.8106 24.6672 17.8106 23.3547C17.8106 19.4641 13.8262 15.9016 8.91601 15.9016C4.00586 15.9016 0.0214844 19.4641 0.0214844 23.3547C0.0214844 24.6672 0.818359 25.3118 2.40039 25.3118ZM1.76757 23.2493C1.76757 20.343 5.08398 17.636 8.91601 17.636C12.7481 17.636 16.0645 20.343 16.0645 23.2493C16.0645 23.4836 15.959 23.5774 15.7246 23.5774H2.11914C1.87304 23.5774 1.76757 23.4836 1.76757 23.2493Z" fill="black" fill-opacity="0.85"/>
<path d="M15.0567 26.9055H29.7754C32.9043 26.9055 34.2637 25.4289 34.2637 23.4368C34.2637 19.4524 29.6465 14.3196 22.416 14.3196C15.1973 14.3196 10.5801 19.4524 10.5801 23.4368C10.5801 25.4289 11.9395 26.9055 15.0567 26.9055Z" fill="white"/>
<path d="M22.4276 14.4602C25.2167 14.4602 27.4902 11.9876 27.4902 8.96411C27.4902 5.96411 25.2284 3.60864 22.4276 3.60864C19.6386 3.60864 17.3652 6.01099 17.3652 8.98755C17.3652 11.9993 19.6386 14.4602 22.4276 14.4602ZM22.4276 12.6907C20.7167 12.6907 19.2519 11.0618 19.2519 8.98755C19.2519 6.94849 20.6816 5.37817 22.4276 5.37817C24.1737 5.37817 25.6034 6.91333 25.6034 8.96411C25.6034 11.0383 24.1503 12.6907 22.4276 12.6907ZM15.0566 25.3118H29.7753C31.7323 25.3118 32.6581 24.7258 32.6581 23.4368C32.6581 20.3664 28.7792 15.925 22.4159 15.925C16.0644 15.925 12.1855 20.3664 12.1855 23.4368C12.1855 24.7258 13.1112 25.3118 15.0566 25.3118ZM14.4941 23.5422C14.1894 23.5422 14.0722 23.4602 14.0722 23.2141C14.0722 21.2805 17.0487 17.6946 22.4159 17.6946C27.7948 17.6946 30.7714 21.2805 30.7714 23.2141C30.7714 23.4602 30.6425 23.5422 30.3378 23.5422H14.4941Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_45783">
<rect width="44.8008" height="24.8789" fill="white" transform="translate(0.0214844 2.02661)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

@ -0,0 +1,13 @@
<svg width="45" height="29" viewBox="0 0 45 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45784)">
<path d="M8.61328 14.1907C10.8046 14.1907 12.6914 12.2219 12.6914 9.67895C12.6914 7.15942 10.7929 5.29614 8.61328 5.29614C6.44532 5.29614 4.53516 7.2063 4.53516 9.70239C4.53516 12.2219 6.4336 14.1907 8.61328 14.1907ZM2.08594 24.7727H15.1406C16.6289 24.7727 17.2031 24.1868 17.2031 23.1321C17.2031 19.886 13.8984 15.9836 8.61328 15.9836C3.32813 15.9836 0.0234375 19.886 0.0234375 23.1321C0.0234375 24.1868 0.597656 24.7727 2.08594 24.7727Z" fill="black" fill-opacity="0.85"/>
<path d="M35.6132 14.1907C37.8046 14.1907 39.6914 12.2219 39.6914 9.67895C39.6914 7.15942 37.7929 5.29614 35.6132 5.29614C33.4336 5.29614 31.5234 7.2063 31.5234 9.70239C31.5234 12.2219 33.4336 14.1907 35.6132 14.1907ZM29.0859 24.7727H42.1289C43.6172 24.7727 44.1914 24.1868 44.1914 23.1321C44.1914 19.886 40.8984 15.9836 35.6132 15.9836C30.3164 15.9836 27.0234 19.886 27.0234 23.1321C27.0234 24.1868 27.5976 24.7727 29.0859 24.7727Z" fill="black" fill-opacity="0.85"/>
<path d="M14.25 26.3664H29.9765C32.25 26.3664 33.5742 24.9719 33.5742 23.2141C33.5742 19.2766 29.0625 14.425 22.1132 14.425C15.1757 14.425 10.6523 19.2766 10.6523 23.2141C10.6523 24.9719 11.9882 26.3664 14.25 26.3664Z" fill="white"/>
<path d="M22.125 13.9211C24.6328 13.9211 26.8125 11.6711 26.8125 8.74145C26.8125 5.84692 24.6328 3.70239 22.125 3.70239C19.6172 3.70239 17.4375 5.8938 17.4375 8.76489C17.4375 11.6711 19.6054 13.9211 22.125 13.9211ZM14.25 24.7727H29.9765C31.2304 24.7727 31.9804 24.1868 31.9804 23.2141C31.9804 20.1907 28.1953 16.0188 22.1132 16.0188C16.0429 16.0188 12.2578 20.1907 12.2578 23.2141C12.2578 24.1868 13.0078 24.7727 14.25 24.7727Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_45784">
<rect width="44.168" height="24.3398" fill="white" transform="translate(0.0234375 2.02661)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1,13 @@
<svg width="29" height="33" viewBox="0 0 29 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45754)">
<path d="M2.88086 27.2156H17.6114C19.5567 27.2156 20.4825 26.6297 20.4825 25.3406C20.4825 22.2703 16.6036 17.8289 10.252 17.8289C3.88868 17.8289 0.00976562 22.2703 0.00976562 25.3406C0.00976562 26.6297 0.935547 27.2156 2.88086 27.2156ZM2.33008 25.4461C2.02539 25.4461 1.89649 25.364 1.89649 25.1179C1.89649 23.1843 4.87305 19.5984 10.252 19.5984C15.6192 19.5984 18.5957 23.1843 18.5957 25.1179C18.5957 25.364 18.4786 25.4461 18.1739 25.4461H2.33008ZM10.252 16.364C13.041 16.364 15.3145 13.8914 15.3145 10.8679C15.3145 7.86792 13.0528 5.51246 10.252 5.51246C7.47461 5.51246 5.18946 7.9148 5.18946 10.8914C5.18946 13.9031 7.46289 16.364 10.252 16.364ZM10.252 14.5945C8.54102 14.5945 7.07618 12.9656 7.07618 10.8914C7.07618 8.8523 8.51758 7.28199 10.252 7.28199C11.9981 7.28199 13.4278 8.81714 13.4278 10.8679C13.4278 12.9422 11.9746 14.5945 10.252 14.5945Z" fill="black" fill-opacity="0.85"/>
<path d="M20.2598 32.7117C24.3731 32.7117 27.8067 29.2781 27.8067 25.1648C27.8067 21.0164 24.3965 17.6062 20.2598 17.6062C16.1114 17.6062 12.7012 21.0164 12.7012 25.1648C12.7012 29.3133 16.0996 32.7117 20.2598 32.7117Z" fill="white"/>
<path d="M20.2597 31.1179C23.4824 31.1179 26.2128 28.4109 26.2128 25.1648C26.2128 21.8953 23.5175 19.2117 20.2597 19.2117C16.9902 19.2117 14.3066 21.8953 14.3066 25.1648C14.3066 28.4343 16.9902 31.1179 20.2597 31.1179Z" fill="black" fill-opacity="0.85"/>
<path d="M17.4824 26.0672C17.0722 26.0672 16.7441 25.7508 16.7441 25.3523C16.7441 24.9539 17.0839 24.6375 17.4824 24.6375H19.5917V21.6961C19.5917 21.3093 19.9199 20.9929 20.3183 20.9929C20.7167 20.9929 21.0449 21.3093 21.0449 21.6961V25.3523C21.0449 25.7508 20.7285 26.0672 20.3183 26.0672H17.4824Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2124_45754">
<rect width="27.7969" height="32.6836" fill="white" transform="translate(0.00976562 0.0280762)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,13 @@
<svg width="29" height="33" viewBox="0 0 29 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45757)">
<path d="M2.01563 26.8992H17.7305C18.9844 26.8992 19.7344 26.3133 19.7344 25.3406C19.7344 22.3172 15.9492 18.1453 9.86719 18.1453C3.79688 18.1453 0.0117188 22.3172 0.0117188 25.3406C0.0117188 26.3133 0.761719 26.8992 2.01563 26.8992ZM9.87891 16.0476C12.3867 16.0476 14.5664 13.7976 14.5664 10.8679C14.5664 7.97339 12.3867 5.82886 9.87891 5.82886C7.3711 5.82886 5.19141 8.02027 5.19141 10.8914C5.19141 13.7976 7.35938 16.0476 9.87891 16.0476Z" fill="black" fill-opacity="0.85"/>
<path d="M19.8516 32.7117C23.9649 32.7117 27.3985 29.2781 27.3985 25.1648C27.3985 21.0164 23.9884 17.6062 19.8516 17.6062C15.7032 17.6062 12.293 21.0164 12.293 25.1648C12.293 29.3133 15.6915 32.7117 19.8516 32.7117Z" fill="white"/>
<path d="M19.8515 31.1179C23.0742 31.1179 25.8047 28.4109 25.8047 25.1648C25.8047 21.8953 23.1094 19.2117 19.8515 19.2117C16.582 19.2117 13.8867 21.8953 13.8867 25.1648C13.8867 28.4343 16.582 31.1179 19.8515 31.1179Z" fill="black" fill-opacity="0.85"/>
<path d="M17.0625 26.0672C16.664 26.0672 16.3359 25.7508 16.3359 25.3523C16.3359 24.9539 16.6758 24.6375 17.0625 24.6375H19.1836V21.6961C19.1836 21.3093 19.5 20.9929 19.9101 20.9929C20.3086 20.9929 20.625 21.3093 20.625 21.6961V25.3523C20.625 25.7508 20.3203 26.0672 19.9101 26.0672H17.0625Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2124_45757">
<rect width="27.3867" height="32.6836" fill="white" transform="translate(0.0117188 0.0280762)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,10 @@
<svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_45740)">
<path d="M6.00977 24.104H21.7247C22.9786 24.104 23.7286 23.5181 23.7286 22.5454C23.7286 19.522 19.9434 15.3501 13.8613 15.3501C7.79102 15.3501 4.00586 19.522 4.00586 22.5454C4.00586 23.5181 4.75586 24.104 6.00977 24.104ZM13.873 13.2525C16.3809 13.2525 18.5606 11.0024 18.5606 8.07275C18.5606 5.17822 16.3809 3.03369 13.873 3.03369C11.3652 3.03369 9.18555 5.2251 9.18555 8.09619C9.18555 11.0024 11.3535 13.2525 13.873 13.2525Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_45740">
<rect width="19.7227" height="21.082" fill="white" transform="translate(4.00586 3.03369)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 761 B

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 9.66797C0 10.2422 0.480469 10.7109 1.04297 10.7109H8.625V18.293C8.625 18.8555 9.09375 19.3359 9.66797 19.3359C10.2422 19.3359 10.7227 18.8555 10.7227 18.293V10.7109H18.293C18.8555 10.7109 19.3359 10.2422 19.3359 9.66797C19.3359 9.09375 18.8555 8.61328 18.293 8.61328H10.7227V1.04297C10.7227 0.480469 10.2422 0 9.66797 0C9.09375 0 8.625 0.480469 8.625 1.04297V8.61328H1.04297C0.480469 8.61328 0 9.09375 0 9.66797Z" fill="black" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 564 B

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 24.57C4.26522 24.57 4.51957 24.4646 4.70711 24.2771C4.89464 24.0896 5 23.8352 5 23.57V13H15.57C15.8352 13 16.0896 12.8946 16.2771 12.7071C16.4646 12.5196 16.57 12.2652 16.57 12C16.57 11.7348 16.4646 11.4804 16.2771 11.2929C16.0896 11.1054 15.8352 11 15.57 11H4C3.73478 11 3.48043 11.1054 3.29289 11.2929C3.10536 11.4804 3 11.7348 3 12V23.57C3 23.8352 3.10536 24.0896 3.29289 24.2771C3.48043 24.4646 3.73478 24.57 4 24.57Z" fill="black"/>
<path d="M15.57 51H5V40.43C5 40.1648 4.89464 39.9104 4.70711 39.7229C4.51957 39.5353 4.26522 39.43 4 39.43C3.73478 39.43 3.48043 39.5353 3.29289 39.7229C3.10536 39.9104 3 40.1648 3 40.43V52C3 52.2652 3.10536 52.5196 3.29289 52.7071C3.48043 52.8946 3.73478 53 4 53H15.57C15.8352 53 16.0896 52.8946 16.2771 52.7071C16.4646 52.5196 16.57 52.2652 16.57 52C16.57 51.7348 16.4646 51.4804 16.2771 51.2929C16.0896 51.1053 15.8352 51 15.57 51Z" fill="black"/>
<path d="M59.9999 11H48.4299C48.1647 11 47.9104 11.1054 47.7228 11.2929C47.5353 11.4804 47.4299 11.7348 47.4299 12C47.4299 12.2652 47.5353 12.5196 47.7228 12.7071C47.9104 12.8946 48.1647 13 48.4299 13H58.9999V23.57C58.9999 23.8352 59.1053 24.0896 59.2928 24.2771C59.4804 24.4646 59.7347 24.57 59.9999 24.57C60.2651 24.57 60.5195 24.4646 60.707 24.2771C60.8946 24.0896 60.9999 23.8352 60.9999 23.57V12C60.9999 11.7348 60.8946 11.4804 60.707 11.2929C60.5195 11.1054 60.2651 11 59.9999 11Z" fill="black"/>
<path d="M59.9999 39.43C59.7347 39.43 59.4804 39.5353 59.2928 39.7229C59.1053 39.9104 58.9999 40.1648 58.9999 40.43V51H48.4299C48.1647 51 47.9104 51.1053 47.7228 51.2929C47.5353 51.4804 47.4299 51.7348 47.4299 52C47.4299 52.2652 47.5353 52.5196 47.7228 52.7071C47.9104 52.8946 48.1647 53 48.4299 53H59.9999C60.2651 53 60.5195 52.8946 60.707 52.7071C60.8946 52.5196 60.9999 52.2652 60.9999 52V40.43C60.9999 40.1648 60.8946 39.9104 60.707 39.7229C60.5195 39.5353 60.2651 39.43 59.9999 39.43Z" fill="black"/>
<path d="M7.45996 17.07V46.93C7.45996 47.1952 7.56532 47.4496 7.75285 47.6371C7.94039 47.8247 8.19474 47.93 8.45996 47.93C8.72518 47.93 8.97953 47.8247 9.16707 47.6371C9.3546 47.4496 9.45996 47.1952 9.45996 46.93V17.07C9.45996 16.8048 9.3546 16.5504 9.16707 16.3629C8.97953 16.1754 8.72518 16.07 8.45996 16.07C8.19474 16.07 7.94039 16.1754 7.75285 16.3629C7.56532 16.5504 7.45996 16.8048 7.45996 17.07V17.07Z" fill="black"/>
<path d="M11.3899 17.07V46.93C11.3899 47.1952 11.4952 47.4496 11.6828 47.6371C11.8703 47.8247 12.1247 47.93 12.3899 47.93C12.6551 47.93 12.9095 47.8247 13.097 47.6371C13.2845 47.4496 13.3899 47.1952 13.3899 46.93V17.07C13.3899 16.8048 13.2845 16.5504 13.097 16.3629C12.9095 16.1754 12.6551 16.07 12.3899 16.07C12.1247 16.07 11.8703 16.1754 11.6828 16.3629C11.4952 16.5504 11.3899 16.8048 11.3899 17.07Z" fill="black"/>
<path d="M16.3101 16.07C16.0448 16.07 15.7905 16.1754 15.603 16.3629C15.4154 16.5504 15.3101 16.8048 15.3101 17.07V46.93C15.3101 47.1952 15.4154 47.4496 15.603 47.6371C15.7905 47.8247 16.0448 47.93 16.3101 47.93C16.5753 47.93 16.8296 47.8247 17.0172 47.6371C17.2047 47.4496 17.3101 47.1952 17.3101 46.93V17.07C17.3101 16.8048 17.2047 16.5504 17.0172 16.3629C16.8296 16.1754 16.5753 16.07 16.3101 16.07Z" fill="black"/>
<path d="M20.23 16.07C19.9648 16.07 19.7104 16.1754 19.5229 16.3629C19.3353 16.5504 19.23 16.8048 19.23 17.07V46.93C19.23 47.1952 19.3353 47.4496 19.5229 47.6371C19.7104 47.8247 19.9648 47.93 20.23 47.93C20.4952 47.93 20.7496 47.8247 20.9371 47.6371C21.1246 47.4496 21.23 47.1952 21.23 46.93V17.07C21.23 16.8048 21.1246 16.5504 20.9371 16.3629C20.7496 16.1754 20.4952 16.07 20.23 16.07Z" fill="black"/>
<path d="M24.1499 16.07C23.8847 16.07 23.6303 16.1754 23.4428 16.3629C23.2553 16.5504 23.1499 16.8048 23.1499 17.07V46.93C23.1499 47.1952 23.2553 47.4496 23.4428 47.6371C23.6303 47.8247 23.8847 47.93 24.1499 47.93C24.4151 47.93 24.6695 47.8247 24.857 47.6371C25.0445 47.4496 25.1499 47.1952 25.1499 46.93V17.07C25.1499 16.8048 25.0445 16.5504 24.857 16.3629C24.6695 16.1754 24.4151 16.07 24.1499 16.07Z" fill="black"/>
<path d="M28.0801 16.07C27.8149 16.07 27.5605 16.1754 27.373 16.3629C27.1854 16.5504 27.0801 16.8048 27.0801 17.07V46.93C27.0801 47.1952 27.1854 47.4496 27.373 47.6371C27.5605 47.8247 27.8149 47.93 28.0801 47.93C28.3453 47.93 28.5996 47.8247 28.7872 47.6371C28.9747 47.4496 29.0801 47.1952 29.0801 46.93V17.07C29.0801 16.8048 28.9747 16.5504 28.7872 16.3629C28.5996 16.1754 28.3453 16.07 28.0801 16.07Z" fill="black"/>
<path d="M32 16.07C31.7348 16.07 31.4804 16.1754 31.2929 16.3629C31.1054 16.5504 31 16.8048 31 17.07V46.93C31 47.1952 31.1054 47.4496 31.2929 47.6371C31.4804 47.8247 31.7348 47.93 32 47.93C32.2652 47.93 32.5196 47.8247 32.7071 47.6371C32.8946 47.4496 33 47.1952 33 46.93V17.07C33 16.8048 32.8946 16.5504 32.7071 16.3629C32.5196 16.1754 32.2652 16.07 32 16.07Z" fill="black"/>
<path d="M35.9199 16.07C35.6547 16.07 35.4004 16.1754 35.2128 16.3629C35.0253 16.5504 34.9199 16.8048 34.9199 17.07V46.93C34.9199 47.1952 35.0253 47.4496 35.2128 47.6371C35.4004 47.8247 35.6547 47.93 35.9199 47.93C36.1851 47.93 36.4395 47.8247 36.627 47.6371C36.8146 47.4496 36.9199 47.1952 36.9199 46.93V17.07C36.9199 16.8048 36.8146 16.5504 36.627 16.3629C36.4395 16.1754 36.1851 16.07 35.9199 16.07Z" fill="black"/>
<path d="M39.8501 16.07C39.5849 16.07 39.3305 16.1754 39.143 16.3629C38.9555 16.5504 38.8501 16.8048 38.8501 17.07V46.93C38.8501 47.1952 38.9555 47.4496 39.143 47.6371C39.3305 47.8247 39.5849 47.93 39.8501 47.93C40.1153 47.93 40.3697 47.8247 40.5572 47.6371C40.7447 47.4496 40.8501 47.1952 40.8501 46.93V17.07C40.8501 16.8048 40.7447 16.5504 40.5572 16.3629C40.3697 16.1754 40.1153 16.07 39.8501 16.07Z" fill="black"/>
<path d="M43.77 16.07C43.5048 16.07 43.2504 16.1754 43.0629 16.3629C42.8754 16.5504 42.77 16.8048 42.77 17.07V46.93C42.77 47.1952 42.8754 47.4496 43.0629 47.6371C43.2504 47.8247 43.5048 47.93 43.77 47.93C44.0352 47.93 44.2896 47.8247 44.4771 47.6371C44.6647 47.4496 44.77 47.1952 44.77 46.93V17.07C44.77 16.8048 44.6647 16.5504 44.4771 16.3629C44.2896 16.1754 44.0352 16.07 43.77 16.07Z" fill="black"/>
<path d="M48.6899 46.93V17.07C48.6899 16.8048 48.5846 16.5504 48.397 16.3629C48.2095 16.1754 47.9552 16.07 47.6899 16.07C47.4247 16.07 47.1704 16.1754 46.9828 16.3629C46.7953 16.5504 46.6899 16.8048 46.6899 17.07V46.93C46.6899 47.1952 46.7953 47.4496 46.9828 47.6371C47.1704 47.8247 47.4247 47.93 47.6899 47.93C47.9552 47.93 48.2095 47.8247 48.397 47.6371C48.5846 47.4496 48.6899 47.1952 48.6899 46.93Z" fill="black"/>
<path d="M52.6101 46.93V17.07C52.6101 16.8048 52.5048 16.5504 52.3172 16.3629C52.1297 16.1754 51.8753 16.07 51.6101 16.07C51.3449 16.07 51.0905 16.1754 50.903 16.3629C50.7155 16.5504 50.6101 16.8048 50.6101 17.07V46.93C50.6101 47.1952 50.7155 47.4496 50.903 47.6371C51.0905 47.8247 51.3449 47.93 51.6101 47.93C51.8753 47.93 52.1297 47.8247 52.3172 47.6371C52.5048 47.4496 52.6101 47.1952 52.6101 46.93Z" fill="black"/>
<path d="M56.54 46.93V17.07C56.54 16.8048 56.4347 16.5504 56.2471 16.3629C56.0596 16.1754 55.8053 16.07 55.54 16.07C55.2748 16.07 55.0205 16.1754 54.8329 16.3629C54.6454 16.5504 54.54 16.8048 54.54 17.07V46.93C54.54 47.1952 54.6454 47.4496 54.8329 47.6371C55.0205 47.8247 55.2748 47.93 55.54 47.93C55.8053 47.93 56.0596 47.8247 56.2471 47.6371C56.4347 47.4496 56.54 47.1952 56.54 46.93Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

@ -0,0 +1 @@
<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="64px" height="64px"> <path d="M 64 6.0507812 C 49.15 6.0507812 34.3 11.7 23 23 C 0.4 45.6 0.4 82.4 23 105 C 34.3 116.3 49.2 122 64 122 C 78.8 122 93.7 116.3 105 105 C 127.6 82.4 127.6 45.6 105 23 C 93.7 11.7 78.85 6.0507812 64 6.0507812 z M 64 12 C 77.3 12 90.600781 17.099219 100.80078 27.199219 C 121.00078 47.499219 121.00078 80.500781 100.80078 100.80078 C 80.500781 121.10078 47.500781 121.10078 27.300781 100.80078 C 7.0007813 80.500781 6.9992188 47.499219 27.199219 27.199219 C 37.399219 17.099219 50.7 12 64 12 z M 64 42 C 62.3 42 61 43.3 61 45 L 61 61 L 45 61 C 43.3 61 42 62.3 42 64 C 42 65.7 43.3 67 45 67 L 61 67 L 61 83 C 61 84.7 62.3 86 64 86 C 65.7 86 67 84.7 67 83 L 67 67 L 83 67 C 84.7 67 86 65.7 86 64 C 86 62.3 84.7 61 83 61 L 67 61 L 67 45 C 67 43.3 65.7 42 64 42 z"/></svg>

After

Width:  |  Height:  |  Size: 889 B

@ -0,0 +1,12 @@
<svg width="28" height="29" viewBox="0 0 28 29" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_13210)">
<path d="M13.1836 5.70703C13.3359 5.70703 13.418 5.61328 13.4414 5.47266C13.793 3.57422 13.7578 3.48047 15.7969 3.11719C15.9375 3.08203 16.0312 3 16.0312 2.84766C16.0312 2.70703 15.9375 2.61328 15.7969 2.58984C13.7578 2.22656 13.793 2.13281 13.4414 0.234375C13.418 0.09375 13.3359 0 13.1836 0C13.0312 0 12.9492 0.09375 12.9258 0.234375C12.5742 2.13281 12.6094 2.22656 10.5703 2.58984C10.418 2.61328 10.3359 2.70703 10.3359 2.84766C10.3359 3 10.418 3.08203 10.5703 3.11719C12.6094 3.48047 12.5742 3.57422 12.9258 5.47266C12.9492 5.61328 13.0312 5.70703 13.1836 5.70703Z" fill="black" fill-opacity="0.85"/>
<path d="M7.51172 13.7695C7.73438 13.7695 7.88672 13.6172 7.91016 13.4062C8.33203 10.2773 8.4375 10.2773 11.6719 9.65625C11.8711 9.62109 12.0234 9.48047 12.0234 9.25781C12.0234 9.04688 11.8711 8.89453 11.6719 8.87109C8.4375 8.41406 8.32031 8.30859 7.91016 5.13281C7.88672 4.91016 7.73438 4.75781 7.51172 4.75781C7.30078 4.75781 7.14844 4.91016 7.11328 5.14453C6.73828 8.27344 6.5625 8.26172 3.35156 8.87109C3.15234 8.90625 3 9.04688 3 9.25781C3 9.49219 3.15234 9.62109 3.39844 9.65625C6.58594 10.1719 6.73828 10.2539 7.11328 13.3828C7.14844 13.6172 7.30078 13.7695 7.51172 13.7695Z" fill="black" fill-opacity="0.85"/>
<path d="M15.457 26.7305C15.7617 26.7305 15.9844 26.5078 16.043 26.1914C16.875 19.7812 17.7773 18.7969 24.1289 18.0938C24.457 18.0586 24.6797 17.8242 24.6797 17.5078C24.6797 17.2031 24.457 16.9688 24.1289 16.9336C17.7773 16.2305 16.875 15.2461 16.043 8.82421C15.9844 8.5078 15.7617 8.29688 15.457 8.29688C15.1523 8.29688 14.9297 8.5078 14.8828 8.82421C14.0508 15.2461 13.1367 16.2305 6.79688 16.9336C6.45702 16.9688 6.23438 17.2031 6.23438 17.5078C6.23438 17.8242 6.45702 18.0586 6.79688 18.0938C13.125 18.9258 14.0039 19.7812 14.8828 26.1914C14.9297 26.5078 15.1523 26.7305 15.457 26.7305Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_13210">
<rect width="21.6797" height="28.8867" fill="white" transform="translate(3)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="108" height="110">
<path d="M54,5 86,105 1,43H107L22,105" fill="#808080"/>
</svg>

After

Width:  |  Height:  |  Size: 167 B

@ -0,0 +1,11 @@
<svg width="37" height="28" viewBox="0 0 37 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_89304)">
<path d="M18.1172 12.3828C18.5156 12.3828 18.8672 12.6172 19.0664 13.0508L20.332 15.8516C21.7383 18.9102 24.3047 20.2109 27.1289 20.2109C31.2539 20.2109 34.1602 17.668 34.8281 13.1914L35.0508 11.7383C35.2852 10.1562 36.2227 9.65234 36.2227 8.97266C36.2227 8.375 35.7891 8 34.9805 8C31.2891 8 27.9375 8.1875 25.9453 8.48047C21.7617 9.10156 20.1211 10.168 18.1172 10.168C16.1016 10.168 14.4609 9.10156 10.2773 8.48047C8.28516 8.1875 4.93359 8 1.25391 8C0.445312 8 0 8.375 0 8.97266C0 9.65234 0.949219 10.1562 1.18359 11.7383L1.40625 13.1914C2.0625 17.668 4.96875 20.2109 9.10547 20.2109C11.9297 20.2109 14.4961 18.9102 15.8906 15.8516L17.168 13.0508C17.3555 12.6172 17.707 12.3828 18.1172 12.3828ZM9.11719 18.4414C5.25 18.4414 3.11719 15.793 3.11719 12.0195C3.11719 10.6953 4.23047 10.0625 6.70312 10.0625C11.9414 10.0625 14.5195 11.0703 14.5195 13.0508C14.5195 16.0391 12.5273 18.4414 9.11719 18.4414ZM27.1055 18.4414C23.707 18.4414 21.7031 16.0391 21.7031 13.0508C21.7031 11.0703 24.2812 10.0625 29.5195 10.0625C32.0039 10.0625 33.1055 10.6953 33.1055 12.0195C33.1055 15.793 30.9727 18.4414 27.1055 18.4414Z" fill="black" fill-opacity="0.85"/>
<path d="M9.11719 18.4414C5.25 18.4414 3.11719 15.793 3.11719 12.0195C3.11719 10.6953 4.23047 10.0625 6.70312 10.0625C11.9414 10.0625 14.5195 11.0703 14.5195 13.0508C14.5195 16.0391 12.5273 18.4414 9.11719 18.4414ZM27.1055 18.4414C23.707 18.4414 21.7031 16.0391 21.7031 13.0508C21.7031 11.0703 24.2812 10.0625 29.5195 10.0625C32.0039 10.0625 33.1055 10.6953 33.1055 12.0195C33.1055 15.793 30.9727 18.4414 27.1055 18.4414Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_2124_89304">
<rect width="36.2227" height="12.2227" fill="white" transform="translate(0 8)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88693)">
<path d="M14.8194 26.0962L26.2451 14.647C27.124 13.7681 27.1826 13.2642 27.1826 12.0337V7.58057C27.1826 6.33838 26.8897 5.95166 25.999 5.06104L23.3037 2.36573C22.4248 1.48682 22.0381 1.18213 20.7959 1.18213H16.3311C15.1006 1.18213 14.6084 1.24073 13.7295 2.11963L2.26857 13.5571C0.592789 15.2329 0.557632 16.9673 2.28029 18.6782L9.69826 26.0845C11.4209 27.7954 13.1436 27.772 14.8194 26.0962ZM13.5537 24.6782C12.71 25.522 11.8194 25.5337 10.9639 24.6665L3.68654 17.4009C2.83107 16.5454 2.84279 15.6431 3.67482 14.811L15.0537 3.45557C15.2881 3.2212 15.5342 3.06885 15.9326 3.06885H20.8662C21.2295 3.06885 21.4756 3.20948 21.7217 3.45557L24.9209 6.64307C25.167 6.88916 25.2959 7.13526 25.2959 7.49854V12.4439C25.2959 12.8306 25.1553 13.0767 24.9209 13.311L13.5537 24.6782ZM19.4248 10.5571C20.3389 10.5571 21.0303 9.84229 21.0303 8.95166C21.0303 8.04932 20.3389 7.3462 19.4248 7.3462C18.499 7.3462 17.8194 8.04932 17.8194 8.95166C17.8194 9.84229 18.499 10.5571 19.4248 10.5571Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88693">
<rect width="26.1826" height="27.3604" fill="white" transform="translate(1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88694)">
<path d="M14.8194 26.0962L26.2451 14.647C27.124 13.7681 27.1826 13.2642 27.1826 12.0337V7.58057C27.1826 6.33838 26.8897 5.95166 25.999 5.06104L23.3037 2.36573C22.4248 1.48682 22.0381 1.18213 20.7959 1.18213H16.3311C15.1006 1.18213 14.6084 1.24073 13.7295 2.11963L2.26857 13.5571C0.592789 15.2329 0.557632 16.9673 2.28029 18.6782L9.69826 26.0845C11.4209 27.7954 13.1436 27.772 14.8194 26.0962ZM18.8272 10.5571C17.9014 10.5571 17.2217 9.84229 17.2217 8.95166C17.2217 8.04932 17.9014 7.3462 18.8272 7.3462C19.7412 7.3462 20.4326 8.04932 20.4326 8.95166C20.4326 9.84229 19.7412 10.5571 18.8272 10.5571Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88694">
<rect width="26.1826" height="27.3604" fill="white" transform="translate(1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 921 B

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88482)">
<path d="M10.9023 8.51172H19.6914C20.1133 8.51172 20.4531 8.16016 20.4531 7.73828C20.4531 7.31641 20.1133 6.97656 19.6914 6.97656H10.9023C10.4805 6.97656 10.1406 7.31641 10.1406 7.73828C10.1406 8.16016 10.4805 8.51172 10.9023 8.51172ZM10.9023 11.7344H17.5703C17.9922 11.7344 18.332 11.3828 18.332 10.9609C18.332 10.5391 17.9922 10.1992 17.5703 10.1992H10.9023C10.4805 10.1992 10.1406 10.5391 10.1406 10.9609C10.1406 11.3828 10.4805 11.7344 10.9023 11.7344ZM7.59766 26.1133H22.7734C23.2891 26.1133 23.7109 25.7031 23.7109 25.1758C23.7109 24.7656 23.4297 24.4023 23.0547 24.2734C21.5781 23.6875 21.2734 21.7773 22.7266 20.3125C23.1719 19.8672 23.7109 19.293 23.7109 18.1211V4.67969C23.7109 2.24219 22.5039 1 20.0781 1H7.63281C5.20703 1 4 2.23047 4 4.67969V22.4922C4 24.9062 5.21875 26.1133 7.59766 26.1133ZM5.88672 19.3398V4.71484C5.88672 3.54297 6.50781 2.88672 7.71484 2.88672H19.9844C21.2031 2.88672 21.8242 3.54297 21.8242 4.71484V17.8633C21.8242 18.4961 21.4609 18.8594 20.8047 18.8594H7.79688C7.03516 18.8594 6.40234 19.0234 5.88672 19.3398ZM7.70312 24.2266C6.51953 24.2266 5.88672 23.5938 5.88672 22.4805C5.88672 21.4258 6.63672 20.7461 7.80859 20.7461H19.832C19.9844 20.7461 20.125 20.7344 20.2422 20.7109C19.6914 21.9297 19.7852 23.2188 20.4062 24.2266H7.70312ZM7.26953 19.8672H8.80469V2.42969H7.26953V19.8672Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88482">
<rect width="19.7109" height="25.1133" fill="white" transform="translate(4 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,10 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88483)">
<path d="M11.0078 8.48828C10.5742 8.48828 10.2109 8.125 10.2109 7.69141C10.2109 7.24609 10.5742 6.89453 11.0078 6.89453H20.0547C20.4883 6.89453 20.8516 7.24609 20.8516 7.69141C20.8516 8.125 20.4883 8.48828 20.0547 8.48828H11.0078ZM11.0078 11.8164C10.5742 11.8164 10.2109 11.4531 10.2109 11.0078C10.2109 10.5742 10.5742 10.2227 11.0078 10.2227H17.875C18.3203 10.2227 18.6719 10.5742 18.6719 11.0078C18.6719 11.4531 18.3203 11.8164 17.875 11.8164H11.0078ZM7.59766 26.1133H22.7734C23.2891 26.1133 23.7109 25.7031 23.7109 25.1758C23.7109 24.7656 23.4297 24.4023 23.0547 24.2734C21.5781 23.6875 21.2734 21.7773 22.7266 20.3125C23.1719 19.8672 23.7109 19.293 23.7109 18.1211V4.67969C23.7109 2.24219 22.5039 1 20.0781 1H7.63281C5.20703 1 4 2.23047 4 4.67969V22.4922C4 24.9062 5.21875 26.1133 7.59766 26.1133ZM7.70312 24.2266C6.51953 24.2266 5.88672 23.5938 5.88672 22.4805C5.88672 21.4258 6.63672 20.7461 7.80859 20.7461H19.832C19.9844 20.7461 20.125 20.7344 20.2422 20.7109C19.6914 21.9297 19.7852 23.2188 20.4062 24.2266H7.70312ZM7.35156 18.9648C6.98828 18.9648 6.68359 18.6602 6.68359 18.2852V3.48438C6.68359 3.10938 6.98828 2.81641 7.35156 2.81641C7.71484 2.81641 8.03125 3.10938 8.03125 3.48438V18.2852C8.03125 18.6602 7.71484 18.9648 7.35156 18.9648Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88483">
<rect width="19.7109" height="25.1133" fill="white" transform="translate(4 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,12 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88379)">
<path d="M3.67969 27.8359H23.9531C26.4141 27.8359 27.6328 26.6289 27.6328 24.3672V17.8984C27.6328 16.832 27.5625 16.1055 26.9648 15.543L22.8164 11.6172C21.5391 10.4219 20.625 10.0469 18.8906 10.0469H8.74219C7.01953 10.0469 6.09375 10.4219 4.82812 11.6172L0.667969 15.543C0.0703125 16.1055 0 16.832 0 17.8984V24.3672C0 26.6289 1.23047 27.8359 3.67969 27.8359ZM13.8164 20.8516C12.1641 20.8516 11.0977 19.4219 11.0977 18.0625V18.0156C11.0977 17.5234 10.8047 17.0664 10.1953 17.0664H2.75391C2.08594 17.0664 1.86328 16.7617 2.40234 16.2578L6.26953 12.6133C6.98438 11.9453 7.45312 11.6875 8.56641 11.6875H19.0664C20.1914 11.6875 20.6484 11.9453 21.3633 12.6133L25.2305 16.2578C25.793 16.7852 25.5352 17.0664 24.8906 17.0664H17.4375C16.8281 17.0664 16.5469 17.5234 16.5469 18.0156V18.0625C16.5469 19.4219 15.4805 20.8516 13.8164 20.8516ZM3.70312 26.1133C2.53125 26.1133 1.88672 25.4805 1.88672 24.2617V18.7891H9.31641C9.59766 20.9688 11.4375 22.5977 13.8164 22.5977C16.1953 22.5977 18.0352 20.9688 18.3164 18.7891H25.7461V24.2617C25.7461 25.4805 25.0898 26.1133 23.9297 26.1133H3.70312Z" fill="black" fill-opacity="0.85"/>
<path d="M3.67969 18.7891H23.9531C26.4141 18.7891 27.6328 17.582 27.6328 15.3203V8.85156C27.6328 7.78516 27.5625 7.07031 26.9648 6.49609L22.8164 2.57031C21.5391 1.38672 20.625 1 18.8906 1H8.74219C7.01953 1 6.09375 1.38672 4.82812 2.57031L0.667969 6.49609C0.0703125 7.07031 0 7.78516 0 8.85156V15.3203C0 17.582 1.23047 18.7891 3.67969 18.7891Z" fill="white"/>
<path d="M3.67969 18.7891H23.9531C26.4141 18.7891 27.6328 17.582 27.6328 15.3203V8.85156C27.6328 7.78516 27.5625 7.07031 26.9648 6.49609L22.8164 2.57031C21.5391 1.38672 20.625 1 18.8906 1H8.74219C7.01953 1 6.09375 1.38672 4.82812 2.57031L0.667969 6.49609C0.0703125 7.07031 0 7.78516 0 8.85156V15.3203C0 17.582 1.23047 18.7891 3.67969 18.7891ZM13.8164 11.8047C12.1641 11.8047 11.0977 10.375 11.0977 9.01562V8.96875C11.0977 8.47656 10.8047 8.01953 10.1953 8.01953H2.75391C2.08594 8.01953 1.86328 7.71484 2.40234 7.21094L6.26953 3.56641C6.98438 2.89844 7.45312 2.65234 8.56641 2.65234H19.0664C20.1914 2.65234 20.6484 2.89844 21.3633 3.56641L25.2305 7.21094C25.793 7.73828 25.5352 8.01953 24.8906 8.01953H17.4375C16.8281 8.01953 16.5469 8.47656 16.5469 8.96875V9.01562C16.5469 10.375 15.4805 11.8047 13.8164 11.8047ZM3.70312 17.0664C2.53125 17.0664 1.88672 16.4336 1.88672 15.2148V9.74219H9.31641C9.59766 11.9219 11.4375 13.5508 13.8164 13.5508C16.1953 13.5508 18.0352 11.9219 18.3164 9.74219H25.7461V15.2148C25.7461 16.4336 25.0898 17.0664 23.9297 17.0664H3.70312Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88379">
<rect width="27.6328" height="26.8477" fill="white" transform="translate(0 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,12 @@
<svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2124_88380)">
<path d="M5.27344 28.3828H25.5586C28.0078 28.3828 29.2383 27.1876 29.2383 24.9142V20.1211C29.2383 19.0547 29.168 18.3398 28.5703 17.7773L24.4102 13.8516C23.1445 12.6562 22.2188 12.2812 20.4961 12.2812H10.3477C8.61328 12.2812 7.6875 12.6562 6.42188 13.8516L2.26172 17.7773C1.66406 18.3398 1.60547 19.0547 1.60547 20.1211V24.9142C1.60547 27.1758 2.83594 28.3828 5.27344 28.3828ZM15.4219 23.0859C13.7578 23.0859 12.6914 21.6445 12.6914 20.2852V20.25C12.6914 19.7578 12.4102 19.3008 11.8008 19.3008H4.35938C3.67969 19.3008 3.46875 18.9962 4.00781 18.4923L7.875 14.8477C8.58984 14.168 9.04688 13.9219 10.1719 13.9219H20.6719C21.7852 13.9219 22.2422 14.168 22.9688 14.8477L26.8359 18.4923C27.3984 19.0196 27.1406 19.3008 26.4961 19.3008H19.0312C18.4336 19.3008 18.1406 19.7578 18.1406 20.25V20.2852C18.1406 21.6445 17.0742 23.0859 15.4219 23.0859Z" fill="black" fill-opacity="0.85"/>
<path d="M4.35938 19.3008H26.4961C29.1797 19.3008 30.832 17.4258 30.832 14.5547V9.44531C30.832 7.89844 30.6211 6.83203 29.6719 5.92969L25.5 2.00391C23.9531 0.539062 22.6289 0 20.4961 0H10.3477C8.21484 0 6.87891 0.539062 5.33203 2.00391L1.17188 5.92969C0.222656 6.83203 0 7.89844 0 9.44531V14.5547C0 17.4258 1.67578 19.3008 4.35938 19.3008Z" fill="white"/>
<path d="M5.27344 17.6953H25.5586C28.0078 17.6953 29.2383 16.5 29.2383 14.2266V9.44531C29.2383 8.37891 29.168 7.66406 28.5703 7.08984L24.4102 3.16406C23.1445 1.98047 22.2188 1.59375 20.4961 1.59375H10.3477C8.61328 1.59375 7.6875 1.98047 6.42188 3.16406L2.26172 7.08984C1.66406 7.66406 1.60547 8.37891 1.60547 9.44531V14.2266C1.60547 16.5 2.83594 17.6953 5.27344 17.6953ZM15.4219 12.3984C13.7578 12.3984 12.6914 10.9688 12.6914 9.60938V9.5625C12.6914 9.08203 12.4102 8.61328 11.8008 8.61328H4.35938C3.67969 8.61328 3.46875 8.30859 4.00781 7.80469L7.875 4.16016C8.58984 3.49219 9.04688 3.24609 10.1719 3.24609H20.6719C21.7852 3.24609 22.2422 3.49219 22.9688 4.16016L26.8359 7.80469C27.3984 8.33203 27.1406 8.61328 26.4961 8.61328H19.0312C18.4336 8.61328 18.1406 9.08203 18.1406 9.5625V9.60938C18.1406 10.9688 17.0742 12.3984 15.4219 12.3984Z" fill="black" fill-opacity="0.85"/>
</g>
<defs>
<clipPath id="clip0_2124_88380">
<rect width="30.832" height="29.9414" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -4,6 +4,16 @@
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<Color x:Key="Gray">#e1e1e1</Color>
<Color x:Key="TextGray">#5b5b5b</Color>
<Color x:Key="LightGray">#f8f8f8</Color>
<Color x:Key="HeaderGray">#f2f0f6</Color>
<Color x:Key="HeaderSeparatorGray">#c9c9cb</Color>
<Color x:Key="PopupBackground">#f5f5f5</Color>
<Color x:Key="PinkOrange">#fd0342</Color>
<Color x:Key="Primary">#512BD4</Color>
<Color x:Key="Secondary">#DFD8F7</Color>
<Color x:Key="Tertiary">#2B0B98</Color>

@ -176,6 +176,61 @@
</Setter>
</Style>
<Style TargetType="Label" x:Key="HeaderTitle">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Medium"/>
<Setter Property="FontAttributes" Value="Bold"/>
</Style>
<Style TargetType="Label" x:Key="HomeTitle">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="40"/>
<Setter Property="FontAttributes" Value="Bold"/>
</Style>
<Style TargetType="Label" x:Key="DetailsLivreTitle">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Small"/>
<Setter Property="FontAttributes" Value="Bold"/>
</Style>
<Style TargetType="Label" x:Key="DetailsLivreBody">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource TextGray}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Body"/>
</Style>
<Style TargetType="Label" x:Key="DetailsButtonBody">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource TextGray}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Medium"/>
</Style>
<Style TargetType="Label" x:Key="MasterTitleBookText">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Medium"/>
<Setter Property="FontAttributes" Value="Bold"/>
</Style>
<Style TargetType="Label" x:Key="MasterAuthorBookText">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Small"/>
</Style>
<Style TargetType="Label" x:Key="MasterStateBookText">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource TextGray}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Micro"/>
</Style>
<Style TargetType="Label" x:Key="HomeButtonText">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Medium"/>
</Style>
<Style TargetType="Label" x:Key="HeaderCollectionViewText">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource TextGray}, Dark={StaticResource White}}"/>
<Setter Property="FontSize" Value="Medium"/>
<Setter Property="FontAttributes" Value="Bold"/>
</Style>
<Style TargetType="ListView">
<Setter Property="SeparatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
<Setter Property="RefreshControlColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
@ -246,7 +301,8 @@
</Style>
<Style TargetType="SearchBar">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray500}}" />
<Setter Property="Placeholder" Value="Rechercher" />
<Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" />
<Setter Property="CancelButtonColor" Value="{StaticResource Gray500}" />
<Setter Property="BackgroundColor" Value="Transparent" />

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:view="clr-namespace:LivreLand.View"
xmlns:contentView="clr-namespace:LivreLand.View.ContentViews"
xmlns:viewModel="clr-namespace:ViewModels;assembly=ViewModels"
x:Class="LivreLand.View.ALirePlusTardView"
Title="ALirePlusTardView">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="10"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<view:HeaderPage HeaderTitle="A lire plus tard"
HeaderBackButtonText="Mes livres"
HeaderPlusButtonVisible="True"
HeaderSwitchButtonVisible="True"
ButtonPlusTappedCommand="{Binding ALirePlusTardVM.Navigator.PopupHomePlusNavigationCommand}"
ButtonBackTappedCommand="{Binding ALirePlusTardVM.Navigator.PopupBackButtonNavigationCommand}"
Grid.Row="0"/>
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="10"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid BackgroundColor="{AppThemeBinding Light={StaticResource HeaderGray}, Dark={StaticResource Gray900}}"
Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Text="A lire plus tard"
VerticalOptions="Center"
Style="{StaticResource HeaderCollectionViewText}"
Grid.Column="1"/>
</Grid>
<CollectionView ItemsSource="{Binding ALirePlusTardVM.Manager.ToBeReadBooks}"
SelectedItem="{Binding ALirePlusTardVM.Manager.SelectedBook}"
SelectionMode="Single"
SelectionChangedCommand="{Binding ALirePlusTardVM.OnSelectionChangedCommand}"
SelectionChangedCommandParameter="{Binding ALirePlusTardVM.Manager.SelectedBook}"
Grid.Row="2">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="viewModel:BookVM">
<VerticalStackLayout Margin="10"
Spacing="20">
<VisualStateManager.VisualStateGroups x:Name="SelectionStates">
<VisualStateGroup>
<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Transparent" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid Grid.Column="0"
Grid.RowSpan="5">
<Border Padding="-5,-5,-5,1"
Margin="10,0,0,0"
HeightRequest="100"
WidthRequest="62"
HorizontalOptions="Center"
Stroke="{StaticResource Gray}"
StrokeShape="RoundRectangle 3"
StrokeThickness="3">
<Border HorizontalOptions="Center"
Stroke="{StaticResource Gray}"
StrokeShape="RoundRectangle 3"
StrokeThickness="3">
<Image Source="{Binding ImageSmall}"
Aspect="AspectFill"
Grid.Column="0"
Grid.RowSpan="5"/>
</Border>
</Border>
<Image Source="bookmark_red.png"
HeightRequest="10"
WidthRequest="10"
Margin="0,97,20,0"
VerticalOptions="End"/>
</Grid>
<Label Text="{Binding Title}"
Style="{StaticResource MasterTitleBookText}"
Grid.Column="2"
Grid.Row="0"/>
<Label Text="Authors"
Style="{StaticResource MasterAuthorBookText}"
Grid.Column="2"
Grid.Row="1"/>
<Label Text="{Binding Status}"
Style="{StaticResource MasterStateBookText}"
Grid.Column="2"
Grid.Row="2"/>
<contentView:StarNotationView Grid.Column="2"
Grid.Row="4"/>
</Grid>
<contentView:SeparatorCutStartView/>
</VerticalStackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ScrollView>
<Grid HorizontalOptions="End"
VerticalOptions="Center"
Grid.RowSpan="3">
<contentView:AlphabetVerticalMenuView/>
</Grid>
</Grid>
</ContentPage>

@ -0,0 +1,28 @@
using LivreLand.Model;
using LivreLand.ViewModel;
namespace LivreLand.View;
public partial class ALirePlusTardView : ContentPage
{
#region Properties
public ALirePlusTardVM ALirePlusTardVM { get; set; }
#endregion
#region Constructor
public ALirePlusTardView(ALirePlusTardVM aLirePlusTardVM)
{
ALirePlusTardVM = aLirePlusTardVM;
InitializeComponent();
BindingContext = this;
}
#endregion
#region Methods
#endregion
}

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:view="clr-namespace:LivreLand.View"
xmlns:contentView="clr-namespace:LivreLand.View.ContentViews"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="LivreLand.View.BibliothequeView"
Title="BibliothequeView">
<ContentPage.Behaviors>
<toolkit:StatusBarBehavior>
<toolkit:StatusBarBehavior.StatusBarColor>
<AppThemeBinding Light="{StaticResource Black}"/>
</toolkit:StatusBarBehavior.StatusBarColor>
</toolkit:StatusBarBehavior>
</ContentPage.Behaviors>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="10"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<view:HeaderHome Grid.Row="0"
ButtonTappedCommand="{Binding BibliothequeVM.Navigator.PopupHomePlusNavigationCommand}"/>
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="10"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="20"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="20"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Text="Mes Livres"
Margin="10,0,0,0"
Style="{StaticResource HomeTitle}"
Grid.Row="0"/>
<VerticalStackLayout Grid.Row="2">
<VerticalStackLayout.BackgroundColor>
<AppThemeBinding Light="{StaticResource LightGray}" Dark="{StaticResource Black}" />
</VerticalStackLayout.BackgroundColor>
<contentView:SeparatorEntireView/>
<!--Tous-->
<contentView:HomeButtonView ButtonTitle="Tous"
ButtonIcon="tray_2_fill.png"
ButtonNumber="{Binding BibliothequeVM.Manager.NbBooks}"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllBooksNavigateCommand}"/>
<contentView:SeparatorCutStartView/>
<!--En prêt-->
<contentView:HomeButtonView ButtonTitle="En prêt"
ButtonIcon="person_badge_clock_fill.png"
ButtonNumber="1"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllLoansBorrowingsNavigateCommand}"/>
<contentView:SeparatorCutStartView/>
<!--À lire plus tard-->
<contentView:HomeButtonView ButtonTitle="À lire plus tard"
ButtonIcon="arrow_forward.png"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllToReadBooksNavigateCommand}"/>
<contentView:SeparatorCutStartView/>
<!--Statut de lecture-->
<contentView:HomeButtonView ButtonTitle="Statut de lecture"
ButtonIcon="eyeglasses.png"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllStatusBooksNavigateCommand}"/>
<contentView:SeparatorCutStartView/>
<!--Favoris-->
<contentView:HomeButtonView ButtonTitle="Favoris"
ButtonIcon="heart_fill.png"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllFavorisBooksNavigateCommand}"/>
<contentView:SeparatorEntireView/>
</VerticalStackLayout>
<Label Text="Filtres"
Margin="10,0,0,0"
Style="{StaticResource HeaderTitle}"
Grid.Row="4"/>
<VerticalStackLayout Grid.Row="6">
<VerticalStackLayout.BackgroundColor>
<AppThemeBinding Light="{StaticResource LightGray}" Dark="{StaticResource Black}" />
</VerticalStackLayout.BackgroundColor>
<contentView:SeparatorEntireView/>
<!--Auteur-->
<contentView:HomeButtonView ButtonTitle="Auteur"
ButtonIcon="person_fill.png"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllAuthorsNavigateCommand}"/>
<contentView:SeparatorCutStartView/>
<!--Date de publication-->
<contentView:HomeButtonView ButtonTitle="Date de publication"
ButtonIcon="calendar.png"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllDatesNavigateCommand}"/>
<contentView:SeparatorCutStartView/>
<!--Note-->
<contentView:HomeButtonView ButtonTitle="Note"
ButtonIcon="sparkles.png"
ButtonRedIconVisible="False"
ButtonBlackIconVisible="True"
ButtonTappedCommand="{Binding BibliothequeVM.AllRatingsNavigateCommand}"/>
<contentView:SeparatorEntireView/>
</VerticalStackLayout>
</Grid>
</ScrollView>
</Grid>
</ContentPage>

@ -0,0 +1,36 @@
using LivreLand.ViewModel;
using System.Windows.Input;
namespace LivreLand.View;
public partial class BibliothequeView : ContentPage
{
#region Properties
public BibliothequeVM BibliothequeVM { get; set; }
#endregion
#region Constructor
public BibliothequeView(BibliothequeVM bibliothequeVM)
{
BibliothequeVM = bibliothequeVM;
InitializeComponent();
BindingContext = this;
}
#endregion
#region Methods
protected override void OnAppearing()
{
base.OnAppearing();
BibliothequeVM.Manager.GetBooksFromCollectionCommand.Execute(null);
}
#endregion
}

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:view="clr-namespace:LivreLand.View"
xmlns:contentView="clr-namespace:LivreLand.View.ContentViews"
xmlns:viewModel="clr-namespace:ViewModels;assembly=ViewModels"
x:Class="LivreLand.View.ContactsView"
Title="ContactsView">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="10"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<view:HeaderPage HeaderTitle="Contacts"
HeaderBackButtonText="Mes livres"
HeaderPlusButtonVisible="True"
HeaderSwitchButtonVisible="True"
ButtonPlusTappedCommand="{Binding ContactsVM.Navigator.PopupHomePlusNavigationCommand}"
ButtonBackTappedCommand="{Binding ContactsVM.Navigator.PopupBackButtonNavigationCommand}"
Grid.Row="0"/>
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<Grid BackgroundColor="{AppThemeBinding Light={StaticResource HeaderGray}, Dark={StaticResource Gray900}}"
Grid.Row="0"
Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Text="Contacts"
VerticalOptions="Center"
Style="{StaticResource HeaderCollectionViewText}"
Grid.Column="1"/>
</Grid>
<Grid HorizontalOptions="Center"
Grid.Row="1"
Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Text="+ Add new contact"
Grid.Row="0"/>
<VerticalStackLayout IsVisible="{Binding ContactsVM.DataFormIsVisible}"
Grid.Row="2">
<Label Text="Prénom :" />
<Entry Placeholder="Saisissez le prénom"
Text="{Binding ContactsVM.Manager.GivenFirstName}"/>
<Label Text="Nom :"/>
<Entry Placeholder="Saisissez le nom"
Text="{Binding ContactsVM.Manager.GivenLastName}"/>
<Button Text="Enregistrer"
BackgroundColor="Transparent"
Command="{Binding ContactsVM.Manager.AddContactCommand}">
<Button.BorderColor>
<AppThemeBinding Light="{StaticResource Black}" Dark="{StaticResource White}" />
</Button.BorderColor>
<Button.TextColor>
<AppThemeBinding Light="{StaticResource Black}" Dark="{StaticResource White}" />
</Button.TextColor>
</Button>
</VerticalStackLayout>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ContactsVM.AddContactDataFormCommand}"/>
</Grid.GestureRecognizers>
</Grid>
<CollectionView ItemsSource="{Binding ContactsVM.Manager.AllContacts}"
SelectedItem="{Binding ContactsVM.Manager.SelectedContact}"
SelectionChangedCommand="{Binding ContactsVM.BookLendedCommand}"
SelectionChangedCommandParameter="{Binding ContactsVM.Manager.SelectedContact}"
SelectionMode="Single"
Grid.Row="1"
Grid.Column="1">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="viewModel:ContactVM">
<VerticalStackLayout>
<Grid HorizontalOptions="Center">
<Label>
<Label.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</Label.Text>
</Label>
</Grid>
<contentView:SeparatorEntireView/>
</VerticalStackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ScrollView>
<Grid HorizontalOptions="End"
VerticalOptions="Center"
Grid.RowSpan="3">
<contentView:AlphabetVerticalMenuView/>
</Grid>
</Grid>
</ContentPage>

@ -0,0 +1,27 @@
using LivreLand.ViewModel;
namespace LivreLand.View;
public partial class ContactsView : ContentPage
{
#region Properties
public ContactsVM ContactsVM { get; set; }
#endregion
#region Constructor
public ContactsView(ContactsVM contactsVM)
{
ContactsVM = contactsVM;
InitializeComponent();
BindingContext = this;
}
#endregion
#region Methods
#endregion
}

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:contentView="clr-namespace:LivreLand.View.ContentViews"
x:Class="LivreLand.View.ContentViews.AlphabetVerticalMenuView">
<VerticalStackLayout Margin="0,0,5,0"
Spacing="-4">
<contentView:LetterVerticalMenuView ButtonLetter="A"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="B"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="C"/>
<contentView:LetterVerticalMenuView ButtonLetter="D"/>
<contentView:LetterVerticalMenuView ButtonLetter="E"/>
<contentView:LetterVerticalMenuView ButtonLetter="F"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="G"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="H"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="I"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="J"/>
<contentView:LetterVerticalMenuView ButtonLetter="K"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="L"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="M"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="N"/>-->
<!--<contentView:LetterVerticalMenuView ButtonLetter="O"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="P"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="Q"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="R"/>
<contentView:LetterVerticalMenuView ButtonLetter="S"/>
<contentView:LetterVerticalMenuView ButtonLetter="T"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="U"/>-->
<contentView:LetterVerticalMenuView ButtonLetter="V"/>
<contentView:LetterVerticalMenuView ButtonLetter="W"/>
<!--<contentView:LetterVerticalMenuView ButtonLetter="X"/>-->
<!--<contentView:LetterVerticalMenuView ButtonLetter="Y"/>-->
<!--<contentView:LetterVerticalMenuView ButtonLetter="Z"/>-->
</VerticalStackLayout>
</ContentView>

@ -0,0 +1,9 @@
namespace LivreLand.View.ContentViews;
public partial class AlphabetVerticalMenuView : ContentView
{
public AlphabetVerticalMenuView()
{
InitializeComponent();
}
}

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="LivreLand.View.ContentViews.DetailsLivreButtonView"
x:Name="this">
<Grid BindingContext="{x:Reference this}"
Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding ButtonIcon}"
MaximumHeightRequest="20"
MaximumWidthRequest="20"
Grid.Column="0">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red"/>
</Image.Behaviors>
</Image>
<Label Text="{Binding ButtonTitle}"
Style="{StaticResource DetailsButtonBody}"
TextColor="Red"
VerticalOptions="Center"
Grid.Column="2"/>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ButtonCommand}" CommandParameter="{Binding ButtonCommandParameter}"/>
</Grid.GestureRecognizers>
</Grid>
</ContentView>

@ -0,0 +1,40 @@
using System.Windows.Input;
using ViewModels;
namespace LivreLand.View.ContentViews;
public partial class DetailsLivreButtonView : ContentView
{
public static readonly BindableProperty ButtonTitleProperty = BindableProperty.Create(nameof(ButtonTitle), typeof(string), typeof(DetailsLivreButtonView), string.Empty);
public string ButtonTitle
{
get => (string)GetValue(DetailsLivreButtonView.ButtonTitleProperty);
set => SetValue(DetailsLivreButtonView.ButtonTitleProperty, value);
}
public static readonly BindableProperty ButtonIconProperty = BindableProperty.Create(nameof(ButtonIcon), typeof(string), typeof(DetailsLivreButtonView), string.Empty);
public string ButtonIcon
{
get => (string)GetValue(DetailsLivreButtonView.ButtonIconProperty);
set => SetValue(DetailsLivreButtonView.ButtonIconProperty, value);
}
public static readonly BindableProperty ButtonCommandProperty = BindableProperty.Create(nameof(ButtonCommand), typeof(ICommand), typeof(DetailsLivreButtonView));
public ICommand ButtonCommand
{
get => (ICommand)GetValue(DetailsLivreButtonView.ButtonCommandProperty);
set => SetValue(DetailsLivreButtonView.ButtonCommandProperty, value);
}
public static readonly BindableProperty ButtonCommandParameterProperty = BindableProperty.Create(nameof(ButtonCommandParameter), typeof(object), typeof(DetailsLivreButtonView));
public object ButtonCommandParameter
{
get => (object)GetValue(DetailsLivreButtonView.ButtonCommandParameterProperty);
set => SetValue(DetailsLivreButtonView.ButtonCommandParameterProperty, value);
}
public DetailsLivreButtonView()
{
InitializeComponent();
}
}

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LivreLand.View.ContentViews.EmpruntsPretsButtonView"
x:Name="this">
<Grid BindingContext="{x:Reference this}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="1">
<Grid BackgroundColor="{StaticResource Gray}"
Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Text="Prêts"
TextColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"
BackgroundColor="{Binding PretButtonBackgroundColor}"
IsEnabled="{Binding PretButtonIsEnabled}"
Command="{Binding PretsButtonCommand}"
Margin="2"
Grid.Column="0"/>
<Button Text="Emprunts"
TextColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"
BackgroundColor="{Binding EmpruntButtonBackgroundColor}"
IsEnabled="{Binding EmpruntButtonIsEnabled}"
Command="{Binding EmpruntsButtonCommand}"
Margin="2"
Grid.Column="1"/>
</Grid>
<Border.StrokeShape>
<RoundRectangle CornerRadius="10" />
</Border.StrokeShape>
</Border>
</Grid>
</ContentView>

@ -0,0 +1,61 @@
using LivreLand.ViewModel;
using System.Windows.Input;
namespace LivreLand.View.ContentViews;
public partial class EmpruntsPretsButtonView : ContentView
{
#region Properties
public static readonly BindableProperty PretButtonBackgroundColorProperty = BindableProperty.Create(nameof(PretButtonBackgroundColor), typeof(Color), typeof(EmpruntsPretsButtonView));
public Color PretButtonBackgroundColor
{
get => (Color)GetValue(EmpruntsPretsButtonView.PretButtonBackgroundColorProperty);
set => SetValue(EmpruntsPretsButtonView.PretButtonBackgroundColorProperty, value);
}
public static readonly BindableProperty PretButtonIsEnabledProperty = BindableProperty.Create(nameof(PretButtonIsEnabled), typeof(bool), typeof(EmpruntsPretsButtonView));
public bool PretButtonIsEnabled
{
get => (bool)GetValue(EmpruntsPretsButtonView.PretButtonIsEnabledProperty);
set => SetValue(EmpruntsPretsButtonView.PretButtonIsEnabledProperty, value);
}
public static readonly BindableProperty PretsButtonCommandProperty = BindableProperty.Create(nameof(PretsButtonCommand), typeof(ICommand), typeof(EmpruntsPretsButtonView));
public ICommand PretsButtonCommand
{
get { return (ICommand)GetValue(PretsButtonCommandProperty); }
set { SetValue(PretsButtonCommandProperty, value); }
}
public static readonly BindableProperty EmpruntButtonBackgroundColorProperty = BindableProperty.Create(nameof(EmpruntButtonBackgroundColor), typeof(Color), typeof(EmpruntsPretsButtonView));
public Color EmpruntButtonBackgroundColor
{
get => (Color)GetValue(EmpruntsPretsButtonView.EmpruntButtonBackgroundColorProperty);
set => SetValue(EmpruntsPretsButtonView.EmpruntButtonBackgroundColorProperty, value);
}
public static readonly BindableProperty EmpruntButtonIsEnabledProperty = BindableProperty.Create(nameof(EmpruntButtonIsEnabled), typeof(bool), typeof(EmpruntsPretsButtonView));
public bool EmpruntButtonIsEnabled
{
get => (bool)GetValue(EmpruntsPretsButtonView.EmpruntButtonIsEnabledProperty);
set => SetValue(EmpruntsPretsButtonView.EmpruntButtonIsEnabledProperty, value);
}
public static readonly BindableProperty EmpruntsButtonCommandProperty = BindableProperty.Create(nameof(EmpruntsButtonCommand), typeof(ICommand), typeof(EmpruntsPretsButtonView));
public ICommand EmpruntsButtonCommand
{
get { return (ICommand)GetValue(EmpruntsButtonCommandProperty); }
set { SetValue(EmpruntsButtonCommandProperty, value); }
}
#endregion
#region Constructor
public EmpruntsPretsButtonView()
{
InitializeComponent();
}
#endregion
}

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="LivreLand.View.ContentViews.HomeButtonView"
x:Name="this">
<Grid BindingContext="{x:Reference this}"
Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="10"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding ButtonIcon}"
MaximumHeightRequest="20"
MaximumWidthRequest="20"
IsVisible="{Binding ButtonRedIconVisible}"
Grid.Column="0">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{StaticResource PinkOrange}"/>
</Image.Behaviors>
</Image>
<Image Source="{Binding ButtonIcon}"
MaximumHeightRequest="20"
MaximumWidthRequest="20"
IsVisible="{Binding ButtonBlackIconVisible}"
Grid.Column="0">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
</Image.Behaviors>
</Image>
<Label Text="{Binding ButtonTitle}"
VerticalOptions="Center"
Style="{StaticResource HomeButtonText}"
Grid.Column="2"/>
<Label Text="{Binding ButtonNumber, FallbackValue=' '}"
VerticalOptions="Center"
Style="{StaticResource DetailsButtonBody}"
Grid.Column="4"/>
<Image Source="chevron_right.png"
MaximumHeightRequest="15"
MaximumWidthRequest="15"
Grid.Column="6">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
</Image.Behaviors>
</Image>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ButtonTappedCommand}" CommandParameter="{Binding CommandParameter}"/>
</Grid.GestureRecognizers>
</Grid>
</ContentView>

@ -0,0 +1,61 @@
using Microsoft.Maui.Graphics;
using System.Windows.Input;
namespace LivreLand.View.ContentViews;
public partial class HomeButtonView : ContentView
{
public static readonly BindableProperty ButtonTitleProperty = BindableProperty.Create(nameof(ButtonTitle), typeof(string), typeof(HomeButtonView), string.Empty);
public string ButtonTitle
{
get => (string)GetValue(HomeButtonView.ButtonTitleProperty);
set => SetValue(HomeButtonView.ButtonTitleProperty, value);
}
public static readonly BindableProperty ButtonIconProperty = BindableProperty.Create(nameof(ButtonIcon), typeof(string), typeof(HomeButtonView), string.Empty);
public string ButtonIcon
{
get => (string)GetValue(HomeButtonView.ButtonIconProperty);
set => SetValue(HomeButtonView.ButtonIconProperty, value);
}
public static readonly BindableProperty ButtonNumberProperty = BindableProperty.Create(nameof(ButtonNumber), typeof(string), typeof(HomeButtonView), string.Empty);
public string ButtonNumber
{
get => (string)GetValue(HomeButtonView.ButtonNumberProperty);
set => SetValue(HomeButtonView.ButtonNumberProperty, value);
}
public static readonly BindableProperty ButtonRedIconVisibleProperty = BindableProperty.Create(nameof(ButtonRedIconVisible), typeof(Boolean), typeof(HomeButtonView), true);
public Boolean ButtonRedIconVisible
{
get => (Boolean)GetValue(HomeButtonView.ButtonRedIconVisibleProperty);
set => SetValue(HomeButtonView.ButtonRedIconVisibleProperty, value);
}
public static readonly BindableProperty ButtonBlackIconVisibleProperty = BindableProperty.Create(nameof(ButtonBlackIconVisible), typeof(Boolean), typeof(HomeButtonView), true);
public Boolean ButtonBlackIconVisible
{
get => (Boolean)GetValue(HomeButtonView.ButtonBlackIconVisibleProperty);
set => SetValue(HomeButtonView.ButtonBlackIconVisibleProperty, value);
}
public static readonly BindableProperty ButtonTappedCommandProperty = BindableProperty.Create(nameof(ButtonTappedCommand), typeof(ICommand), typeof(HomeButtonView));
public ICommand ButtonTappedCommand
{
get { return (ICommand)GetValue(ButtonTappedCommandProperty); }
set { SetValue(ButtonTappedCommandProperty, value); }
}
public static readonly BindableProperty CommandParameterProperty = BindableProperty.Create(nameof(CommandParameter), typeof(string), typeof(HomeButtonView));
public string CommandParameter
{
get { return (string)GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
public HomeButtonView()
{
InitializeComponent();
}
}

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LivreLand.View.ContentViews.LetterVerticalMenuView"
x:Name="this">
<Grid BindingContext="{x:Reference this}">
<Label x:Name="letterText"
Text="{Binding ButtonLetter}"
TextColor="{StaticResource Blue100Accent}"/>
</Grid>
</ContentView>

@ -0,0 +1,24 @@
using CommunityToolkit.Maui.Views;
namespace LivreLand.View.ContentViews;
public partial class LetterVerticalMenuView : ContentView
{
public static readonly BindableProperty ButtonLetterProperty = BindableProperty.Create(nameof(ButtonLetter), typeof(string), typeof(LetterVerticalMenuView), string.Empty);
public string ButtonLetter
{
get => (string)GetValue(LetterVerticalMenuView.ButtonLetterProperty);
set => SetValue(LetterVerticalMenuView.ButtonLetterProperty, value);
}
public LetterVerticalMenuView()
{
InitializeComponent();
}
public void OnLetterTapped(object sender, TappedEventArgs e)
{
var plusPopup = new PopupLetterView(letterText.Text);
App.Current.MainPage.ShowPopup(plusPopup);
}
}

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8" ?>
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:contentView="clr-namespace:LivreLand.View.ContentViews"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="LivreLand.View.ContentViews.PopupHomePlusButtonView"
HorizontalOptions="End"
VerticalOptions="Start"
Color="Transparent">
<Border>
<Grid BackgroundColor="{AppThemeBinding Light={StaticResource PopupBackground}, Dark={StaticResource Black}}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="10"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0"
Margin="10,5,10,5">
<Label Text="Ajouter un livre"
Style="{StaticResource MasterStateBookText}"/>
</Grid>
<contentView:SeparatorEntireView Grid.Row="1"/>
<Grid Grid.Row="2"
Margin="10,5,10,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Label Text="Scanner un code-barres"
Style="{StaticResource HomeButtonText}"
Grid.Column="0"/>
<Image Source="qr_bar_code_fill.png"
HeightRequest="20"
WidthRequest="20"
Grid.Column="1">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
</Image.Behaviors>
</Image>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Navigator.NavigationCommand}"
CommandParameter="/scan"/>
</Grid.GestureRecognizers>
</Grid>
<contentView:SeparatorEntireView Grid.Row="3"/>
<Grid Grid.Row="4"
Margin="10,5,10,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Label Text="Scanner des codes-barres"
LineBreakMode="WordWrap"
MaxLines="2"
Style="{StaticResource HomeButtonText}"
Grid.Column="0"/>
<Image Source="bar_code_fill.png"
HeightRequest="20"
WidthRequest="20"
Grid.Column="1">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
</Image.Behaviors>
</Image>
</Grid>
<Grid BackgroundColor="{DynamicResource Gray}"
Grid.Row="5"/>
<Grid Grid.Row="6"
Margin="10,5,10,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Label Text="Rechercher en ligne"
Style="{StaticResource HomeButtonText}"
Grid.Column="0"/>
<Image Source="magnifying_glass.png"
HeightRequest="20"
WidthRequest="20"
Grid.Column="1">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
</Image.Behaviors>
</Image>
</Grid>
<contentView:SeparatorEntireView Grid.Row="7"/>
<Grid Grid.Row="8"
Margin="10,5,10,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Label Text="Saisir l'ISBN"
Style="{StaticResource HomeButtonText}"
Grid.Column="0"/>
<Image Source="keyboard_fill.png"
HeightRequest="20"
WidthRequest="20"
Grid.Column="1">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}"/>
</Image.Behaviors>
</Image>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Navigator.PopupISBNNavigationCommand}"/>
</Grid.GestureRecognizers>
</Grid>
</Grid>
<Border.StrokeShape>
<RoundRectangle CornerRadius="10" />
</Border.StrokeShape>
</Border>
</toolkit:Popup>

@ -0,0 +1,27 @@
using CommunityToolkit.Maui.Views;
using LivreLand.ViewModel;
namespace LivreLand.View.ContentViews;
public partial class PopupHomePlusButtonView : Popup
{
#region Properties
public NavigatorVM Navigator { get; private set; }
#endregion
#region Constructor
public PopupHomePlusButtonView(NavigatorVM navigatorVM)
{
Navigator = navigatorVM;
InitializeComponent();
Size = new Size(0.8 * (DeviceDisplay.Current.MainDisplayInfo.Width / DeviceDisplay.Current.MainDisplayInfo.Density), 0.5 * (DeviceDisplay.Current.MainDisplayInfo.Width / DeviceDisplay.Current.MainDisplayInfo.Density));
BindingContext = this;
}
#endregion
}

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:contentView="clr-namespace:LivreLand.View.ContentViews"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="LivreLand.View.ContentViews.PopupISBNView"
HorizontalOptions="Center"
VerticalOptions="Center"
Color="Transparent">
<Border>
<Grid BackgroundColor="{AppThemeBinding Light={StaticResource PopupBackground}, Dark={StaticResource Black}}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0"
Margin="5">
<Label Text="Saisir l'ISBN"
Style="{StaticResource MasterStateBookText}"/>
</Grid>
<Grid Grid.Row="1"
Margin="5">
<Entry Text="{Binding Manager.EntryText}"
ReturnCommand="{Binding AddBookCommand}"
ReturnCommandParameter="{Binding Manager.EntryText}"/>
</Grid>
</Grid>
<Border.StrokeShape>
<RoundRectangle CornerRadius="10" />
</Border.StrokeShape>
</Border>
</toolkit:Popup>

@ -0,0 +1,14 @@
using CommunityToolkit.Maui.Views;
using LivreLand.ViewModel;
namespace LivreLand.View.ContentViews;
public partial class PopupISBNView : Popup
{
public PopupISBNView(PopupISBNVM popupISBNVM)
{
InitializeComponent();
BindingContext = popupISBNVM;
Size = new Size(0.8 * (DeviceDisplay.Current.MainDisplayInfo.Width / DeviceDisplay.Current.MainDisplayInfo.Density), 0.5 * (DeviceDisplay.Current.MainDisplayInfo.Width / DeviceDisplay.Current.MainDisplayInfo.Density));
}
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="LivreLand.View.ContentViews.PopupLetterView">
<Grid BackgroundColor="{StaticResource HeaderGray}">
<Label Style="{StaticResource HomeTitle}"/>
</Grid>
</toolkit:Popup>

@ -0,0 +1,11 @@
using CommunityToolkit.Maui.Views;
namespace LivreLand.View.ContentViews;
public partial class PopupLetterView : Popup
{
public PopupLetterView(string letter)
{
InitializeComponent();
}
}

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LivreLand.View.ContentViews.SearchBarView">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="10"/>
</Grid.ColumnDefinitions>
<Frame CornerRadius="10"
BorderColor="Transparent"
BackgroundColor="{StaticResource Gray}"
HeightRequest="40"
Grid.Column="1">
<SearchBar WidthRequest="200"
HeightRequest="50"
HorizontalOptions="Start"/>
</Frame>
<Grid Grid.Column="3"
VerticalOptions="Center">
<Label Text="Annuler"
Style="{StaticResource DetailsLivreBody}"/>
</Grid>
</Grid>
</ContentView>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save