Merge pull request 'Front-End' (#2) from Front-End into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #2
master
Louis DUFOUR 2 years ago
commit e564afd07b

@ -0,0 +1,68 @@
kind: pipeline
type: docker
name: pocketPipeline
trigger:
#branch:
#- master
event:
- push
steps:
#- name: lint
- name: format
image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dotnet7-maui:latest
commands:
- dotnet tool install -g CSharpier # Installez CSharpier si necessaire
- export PATH="$PATH:/root/.dotnet/tools" # Ajoutez le chemin des outils .NET Core au PATH
- cd src/
- dotnet-csharpier --check . # Verifie le formatage
- name: build
image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dotnet7-maui:latest
commandes:
- cd src/
- dotnet restore BookApp.sln
- dotnet build BookApp.sln -c Release --no-restore /p:AndroidSdkDirectory=$ANDROID_SDK_ROOT -property:Aapt2ToolPath=$ANDROID_SDK_ROOT/build-tools/33.0.0
- dotnet publish BookApp/BookApp.csproj -c Release --no-restore -o $CI_PROJECT_DIR/build/release -f:net7.0-android /p:AndroidSdkDirectory=/usr/lib/android-sdk
- name: test
image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dotnet7-maui:latest
commands:
- cd src/
- dotnet restore BookApp.sln
- dotnet test BookApp.sln --no-restore /p:AndroidSdkDirectory=$ANDROID_SDK_ROOT -property:Aapt2ToolPath=$ANDROID_SDK_ROOT/build-tools/33.0.0
depends_on: [build]
- name: analyse
image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dronesonarplugin-dotnet7-maui
secrets: [ SECRET_SONAR_LOGIN ]
environment:
sonar_host: https://codefirst.iut.uca.fr/sonar/
sonar_token:
from_secret: SECRET_SONAR_LOGIN
project_key: BookApp
coverage_exclusions: "Tests/**"
commands:
- cd src/
- dotnet restore BookApp.sln
- dotnet sonarscanner begin /k:$${project_key} /d:sonar.host.url=$${sonar_host} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions=$${coverage_exclusions} /d:sonar.login=$${sonar_token}
- dotnet build BookApp.sln -c Release --no-restore /p:AndroidSdkDirectory=$ANDROID_SDK_ROOT -property:Aapt2ToolPath=$ANDROID_SDK_ROOT/build-tools/33.0.0
- dotnet test BookApp.sln --logger trx --no-restore /p:AndroidSdkDirectory=$ANDROID_SDK_ROOT -property:Aapt2ToolPath=$ANDROID_SDK_ROOT/build-tools/33.0.0 /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage"
- reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport"
- dotnet publish BookApp/BookApp.csproj -c Release --no-restore -o $CI_PROJECT_DIR/build/release -f:net7.0-android /p:AndroidSdkDirectory=/usr/lib/android-sdk
- dotnet sonarscanner end /d:sonar.login=$${sonar_token}
depends_on: [test]
- name: generate-and-deploy-docs
image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-docdeployer
failure: ignore
volumes:
- name: docs
path: /docs
commands:
- /entrypoint.sh
#environment:
# NODOXYGEN: true
#- name: deploy

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Shell
x:Class="BookApp.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:BookApp"
Shell.FlyoutBehavior="Disabled">
<ShellContent
Title="Home"
ContentTemplate="{DataTemplate local:MainPage}"
Route="MainPage" />
</Shell>

@ -1,10 +0,0 @@
namespace BookApp
{
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
}
}
}

@ -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="BookApp.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 BookApp
{
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,11 +0,0 @@
using Android.App;
using Android.Content.PM;
using Android.OS;
namespace BookApp
{
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
}
}

File diff suppressed because it is too large Load Diff

@ -28,6 +28,8 @@ Je vous conseille de faire (par ordre de priorité) :
## Ressources
- [Doc officielle MAUI](https://learn.microsoft.com/en-us/dotnet/maui/)
- [MAUI Community Toolkit](https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/)
- [SF Symbols 5.0 (format SVG et PNG)](https://www.figma.com/file/7ATqS05m0VqE905x1NKS0D/SF-Symbols-5.0---5296-SVG-Icons-(Community)?type=design&node-id=5-1670&mode=design&t=75VRROmRWJsStAIv-0)
- [SF Symbols 5.0 (PNG only)](https://github.com/andrewtavis/sf-symbols-online/tree/master/glyphs)
## Voici les captures d'écran réalisées sur iPhone.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.7.34024.191
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookApp", "BookApp\BookApp.csproj", "{DBD6BB08-83E2-42EA-A28C-32DB6959E4B5}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookApp", "BookApp\BookApp.csproj", "{DBD6BB08-83E2-42EA-A28C-32DB6959E4B5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestFrontEnd", "TestFrontEnd\TestFrontEnd.csproj", "{90EE7351-A889-4CE3-B066-090931FD69C6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -17,6 +19,10 @@ Global
{DBD6BB08-83E2-42EA-A28C-32DB6959E4B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DBD6BB08-83E2-42EA-A28C-32DB6959E4B5}.Release|Any CPU.Build.0 = Release|Any CPU
{DBD6BB08-83E2-42EA-A28C-32DB6959E4B5}.Release|Any CPU.Deploy.0 = Release|Any CPU
{90EE7351-A889-4CE3-B066-090931FD69C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90EE7351-A889-4CE3-B066-090931FD69C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90EE7351-A889-4CE3-B066-090931FD69C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90EE7351-A889-4CE3-B066-090931FD69C6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Shell
x:Class="BookApp.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:BookApp"
xmlns:pages="clr-namespace:BookApp.Pages"
Shell.FlyoutBehavior="Disabled">
<TabBar >
<Tab Title="My Library"
Icon="books_vertical_fill.svg">
<ShellContent ContentTemplate="{DataTemplate local:MainPage}" Route="Mainpage"/>
</Tab>
<Tab Title="My lists"
Icon="list_bullet.svg">
<ShellContent ContentTemplate="{DataTemplate pages:EmpruntsPrets}"/>
</Tab>
<Tab Title="My Readings"
Icon="bookmark_fill.svg">
<ShellContent ContentTemplate="{DataTemplate local:MainPage}" />
</Tab>
<Tab Title="Search"
Icon="magnifyingglass.svg">
<ShellContent ContentTemplate="{DataTemplate local:MainPage}" />
</Tab>
</TabBar>
<ShellContent Route="FiltragePage" ContentTemplate="{DataTemplate pages:Filtrage}" />
<ShellContent Route="TousPage" ContentTemplate="{DataTemplate pages:Tous}" />
</Shell>

@ -0,0 +1,16 @@
using BookApp.Pages;
namespace BookApp
{
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute("FiltragePage", typeof(Filtrage));
Routing.RegisterRoute("TousPage", typeof(Tous));
Routing.RegisterRoute("Mainpage", typeof(MainPage));
Routing.RegisterRoute("EmpruntsPrets", typeof(EmpruntsPrets));
}
}
}

@ -1,8 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
<!-- By docs code first-->
<TargetFrameworks>net7.0-android</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('ios'))">$(TargetFrameworks);net7.0-ios</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('maccatalyst'))">$(TargetFrameworks);net7.0-maccatalyst</TargetFrameworks>
<!-- By docs code first-->
<!-- <TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
-->
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
<!-- <TargetFrameworks>$(TargetFrameworks);net7.0-tizen</TargetFrameworks> -->
<OutputType>Exe</OutputType>
@ -49,7 +58,36 @@
</ItemGroup>
<ItemGroup>
<AndroidResource Remove="Tests\**" />
<Compile Remove="Tests\**" />
<EmbeddedResource Remove="Tests\**" />
<MauiCss Remove="Tests\**" />
<MauiXaml Remove="Tests\**" />
<None Remove="Tests\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Maui" Version="5.3.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="SimpleRatingControl.MAUI" Version="0.1.0" />
</ItemGroup>
<ItemGroup>
<MauiXaml Update="Composants\CollectionFiltrage.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="Composants\GroupCollection.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="Pages\DetailBook.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="Pages\EmpruntsPrets.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="Pages\Filtrage.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
</ItemGroup>
</Project>

@ -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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="BookApp.Composants.CollectionFiltrage">
<CollectionView ItemsSource="{Binding MyCollections1}">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Padding="5">
<Grid RowDefinitions="auto" Margin="5,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" HeightRequest="30"
WidthRequest="30" Source="Book.svg">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label Grid.Column="1" Margin="10,0,0,0" VerticalTextAlignment="Center" Text="{Binding AuteurName}"/>
<Label Grid.Column="2" VerticalTextAlignment="Center" Margin="0,0,40,0" HorizontalTextAlignment="End" Text="{Binding NbLivre}"/>
<Button Grid.Column="2"
ImageSource="chevron_right.svg"
HeightRequest="35"
WidthRequest="35"
VerticalOptions="Center"
BackgroundColor="White"
HorizontalOptions="End"/>
</Grid>
<Rectangle Margin="45,0,0,0" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</ContentView>

@ -0,0 +1,44 @@
using System.Collections.ObjectModel;
namespace BookApp.Composants;
public partial class CollectionFiltrage : ContentView
{
public class ObjetTemp
{
public string AuteurName { get; set; }
public int NbLivre { get; set; }
public ObjetTemp(string name, int number)
{
AuteurName = name;
NbLivre = number;
}
}
public ObservableCollection<ObjetTemp> MyCollections1 { get; set; }
public CollectionFiltrage()
{
InitializeComponent();
MyCollections1 = new ObservableCollection<ObjetTemp>()
{
new ObjetTemp("Victor Hugo", 10),
new ObjetTemp("Jane Austen", 3),
new ObjetTemp("F. Scott Fitzgerald", 5),
new ObjetTemp("George Orwell", 4),
new ObjetTemp("Haruki Murakami", 8),
new ObjetTemp("Gabriel Garc<72>a M<>rquez", 9),
new ObjetTemp("J.K. Rowling", 9),
new ObjetTemp("Leo Tolstoy", 9),
new ObjetTemp("Ernest Hemingway", 9),
new ObjetTemp("Agatha Christie", 9),
new ObjetTemp("Mark Twain", 9),
new ObjetTemp("J.R.R. Tolkien", 9),
new ObjetTemp("William Shakespeare", 9),
new ObjetTemp("Charles Dickensn", 9),
new ObjetTemp("Isaac Asimov", 9),
};
BindingContext = this;
}
}

@ -0,0 +1,60 @@
<?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:composants="clr-namespace:BookApp.Composants"
x:Class="BookApp.Composants.GroupCollection">
<CollectionView ItemsSource="{Binding AuteurGroups}" IsGrouped="True" SelectionMode="Single" SelectionChanged="OnSelectionChanged">
<CollectionView.GroupHeaderTemplate>
<DataTemplate>
<Label Text="{Binding Name}"
FontFamily="SF-Compact-Display-Semibold"
BackgroundColor="LightGrey"
TextColor="Gray"
Padding="5"
Margin="15,0,0,0"/>
</DataTemplate>
</CollectionView.GroupHeaderTemplate>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0"
Source="{Binding ImageBook}"
HeightRequest="125"
WidthRequest="125"
Margin="0,10,0,10"/>
<StackLayout Grid.Column="1">
<Label Text="{Binding Name}"
FontFamily="SF-Compact-Display-Bold"
FontSize="18"
TextColor="Black"/>
<Label Text="{Binding Auteur.Name}"
FontFamily="SF-Compact-Display-Semibold"
TextColor="Black"/>
<Label
TextColor="SlateGray"
Text="{Binding Statut}"/>
<StackLayout Margin="0,10" Orientation="Horizontal" VerticalOptions="EndAndExpand">
<Image Source="empty_star.svg" WidthRequest="25" HeightRequest="25"/>
<Image Source="empty_star.svg" WidthRequest="25" HeightRequest="25"/>
<Image Source="empty_star.svg" WidthRequest="25" HeightRequest="25"/>
<Image Source="empty_star.svg" WidthRequest="25" HeightRequest="25"/>
<Image Source="empty_star.svg" WidthRequest="25" HeightRequest="25"/>
</StackLayout>
</StackLayout>
</Grid>
<Rectangle Margin="25,0,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</ContentView>

@ -0,0 +1,22 @@
using BookApp.Model;
using BookApp.Pages;
using BookApp.ViewModel;
namespace BookApp.Composants
{
public partial class GroupCollection : ContentView
{
public GroupCollection()
{
InitializeComponent();
}
private async void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.CurrentSelection.FirstOrDefault() is Book selectedItem)
{
await Navigation.PushAsync(new DetailBook(selectedItem));
}
}
}
}

@ -0,0 +1,198 @@
using BookApp.Model;
using System.Collections.ObjectModel;
namespace BookApp.Data
{
public class Stub
{
public ObservableCollection<Auteur> Auteurs { get; private set; } =
new ObservableCollection<Auteur>();
public ObservableCollection<Auteur> CreateStubData()
{
var victorHugo = new Auteur
{
Name = "Victor Hugo",
Books = new ObservableCollection<Book>()
};
var georgeOrwell = new Auteur
{
Name = "George Orwell",
Books = new ObservableCollection<Book>()
};
var jkRowling = new Auteur
{
Name = "J.K. Rowling",
Books = new ObservableCollection<Book>()
};
Auteurs.Add(victorHugo);
Auteurs.Add(georgeOrwell);
Auteurs.Add(jkRowling);
AddBookToAuthor(
victorHugo,
"Les Misérables",
"dotnet_bot.svg",
new Star(5),
StatutDeLecture.Lu,
true,
false,
false,
"Grasset",
"Une épopée sur la vie de Jean Valjean...",
1232,
"Français",
"978-1234567890",
"2023-09-10",
"https://link_to_les_miserables.com"
);
AddBookToAuthor(
victorHugo,
"Notre-Dame de Paris",
"dotnet_bot.svg",
new Star(4),
StatutDeLecture.A_Lire,
false,
true,
false,
"Grasset",
"L'histoire de Quasimodo...",
940,
"Français",
"978-2345678910",
"2023-06-05",
"https://link_to_notre_dame.com"
);
AddBookToAuthor(
georgeOrwell,
"1984",
"dotnet_bot.svg",
new Star(4),
StatutDeLecture.A_Lire,
false,
true,
false,
"Penguin",
"L'histoire d'un futur dystopique...",
328,
"Anglais",
"978-9876543210",
"2023-08-01",
"https://link_to_1984.com"
);
AddBookToAuthor(
georgeOrwell,
"La Ferme des animaux",
"dotnet_bot.svg",
new Star(3),
StatutDeLecture.Non_Lu,
false,
false,
true,
"Penguin",
"Comment les animaux ont pris le pouvoir...",
112,
"Anglais",
"978-8765432109",
"2023-07-20",
"https://link_to_ferme_animaux.com"
);
AddBookToAuthor(
jkRowling,
"Harry Potter à l'école des sorciers",
"dotnet_bot.svg",
new Star(5),
StatutDeLecture.Lu,
true,
false,
false,
"Bloomsbury",
"L'aventure magique commence pour Harry...",
309,
"Anglais",
"978-7654321098",
"2023-01-15",
"https://link_to_hp_sorciers.com"
);
AddBookToAuthor(
jkRowling,
"Harry Potter et la chambre des secrets",
"dotnet_bot.svg",
new Star(5),
StatutDeLecture.Lu,
true,
false,
false,
"Bloomsbury",
"Le mystère de la Chambre des Secrets...",
341,
"Anglais",
"978-6543210987",
"2023-02-10",
"https://link_to_hp_chambre.com"
);
AddBookToAuthor(
jkRowling,
"Harry Potter et le prisonnier d'Azkaban",
"dotnet_bot.svg",
new Star(5),
StatutDeLecture.Lu,
true,
false,
false,
"Bloomsbury",
"Le danger rôde autour d'Harry...",
435,
"Anglais",
"978-5432109876",
"2023-03-05",
"https://link_to_hp_azkaban.com"
);
return Auteurs;
}
private void AddBookToAuthor(
Auteur author,
string name,
string imageBook,
Star note,
StatutDeLecture statut,
bool favori,
bool next,
bool pret,
string maisonEdit,
string resumer,
int nbPage,
string langue,
string isbn,
string dateAjout,
string link
)
{
author.Books.Add(
new Book
{
Name = name,
ImageBook = imageBook,
Auteur = author,
Note = note,
Statut = statut,
Favori = favori,
Next = next,
Pret = pret,
MaisonEdit = maisonEdit,
Resumer = resumer,
NbPage = nbPage,
Langue = langue,
ISBN = isbn,
dateAjout = dateAjout,
Link = link
}
);
}
}
}

@ -0,0 +1,145 @@
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="BookApp.MainPage">
<Shell.TitleView>
<Grid RowDefinitions="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label
Text="Modifier"
FontFamily="Strande2"
TextColor="Red"
VerticalTextAlignment="Center"
HorizontalOptions="Start"
HeightRequest="50"
FontSize="Medium"
Grid.Column="0" />
<Image
Source="plus_icone.svg"
HorizontalOptions="End"
Margin="0,0,20,0"
Grid.Column="2">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
</Grid>
</Shell.TitleView>
<Shell.BackButtonBehavior>
<BackButtonBehavior IsVisible="False" IsEnabled="False" />
</Shell.BackButtonBehavior>
<StackLayout>
<Label FontSize="35" FontFamily="SF-Pro-Display-Bold" Padding="10">Mes livres</Label>
<Rectangle HeightRequest="1" BackgroundColor="black" VerticalOptions="End" />
<CollectionView ItemsSource="{Binding MyCollections1}" Margin="25,0,0,0" BackgroundColor="#F9F9F9">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid RowDefinitions="Auto" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0"
Source="{Binding Icone}"
HeightRequest="25"
WidthRequest="25"/>
<Label FontFamily="SF-Compact-Display-Semibold" Grid.Column="1"
Text="{Binding Name}"
FontAttributes="Bold"
Padding="5"
VerticalOptions="Center"/>
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="2"
Text="{Binding Number}"
FontAttributes="Bold"
VerticalOptions="Center"
Margin="0,0,40,0"
HorizontalOptions="End"/>
<Button Grid.Column="2"
ImageSource="chevron_right.svg"
HeightRequest="35"
WidthRequest="35"
BackgroundColor="#F9F9F9"
Clicked="ButtonTous"
HorizontalOptions="End"/>
</Grid>
<Rectangle Grid.ColumnSpan="4" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End">
<Rectangle.Triggers>
<DataTrigger TargetType="Rectangle" Binding="{Binding IsLastItem}" Value="true">
<Setter Property="IsVisible" Value="False"/>
</DataTrigger>
</Rectangle.Triggers>
</Rectangle>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
<Rectangle HeightRequest="1" BackgroundColor="black" VerticalOptions="End"/>
<Label FontFamily="SF-Pro-Display-Heavy" FontSize="20" Padding="10">Filtres</Label>
<Rectangle HeightRequest="1" BackgroundColor="black" VerticalOptions="End"/>
<CollectionView ItemsSource="{Binding MyCollections2}" Margin="25,0,0,0" BackgroundColor="#F9F9F9">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid RowDefinitions="Auto" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0"
Source="{Binding Icone}"
HeightRequest="25"
WidthRequest="25"/>
<Label FontFamily="SF-Compact-Display-Semibold" Grid.Column="1"
Text="{Binding Name}"
FontAttributes="Bold"
Padding="5"
VerticalOptions="Center"/>
<Grid Grid.Column="2" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label FontFamily="SF-Compact-Display-Semibold" Grid.Column="2"
Text="{Binding Number}"
FontAttributes="Bold"
VerticalOptions="Center"
Margin="0,0,40,0"
HorizontalOptions="End"/>
<Button Grid.Column="2"
ImageSource="chevron_right.svg"
HeightRequest="35"
WidthRequest="35"
BackgroundColor="#F9F9F9"
Clicked="ButtonAuteur"
HorizontalOptions="End"/>
</Grid>
<Rectangle Grid.ColumnSpan="4" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End">
<Rectangle.Triggers>
<DataTrigger TargetType="Rectangle" Binding="{Binding IsLastItem}" Value="true">
<Setter Property="IsVisible" Value="False"/>
</DataTrigger>
</Rectangle.Triggers>
</Rectangle>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
</ContentPage>

@ -0,0 +1,59 @@
using BookApp.Pages;
using System.Collections.ObjectModel;
namespace BookApp
{
public partial class MainPage : ContentPage
{
public class ObjetTemp
{
public string Name { get; set; }
public string Icone { get; set; }
public int Number { get; set; }
public bool IsLastItem { get; set; }
public ObjetTemp(string name, string icone, int number, bool isLastItem = false)
{
Name = name;
Icone = icone;
Number = number;
IsLastItem = isLastItem;
}
}
public ObservableCollection<ObjetTemp> MyCollections1 { get; set; }
public ObservableCollection<ObjetTemp> MyCollections2 { get; set; }
public MainPage()
{
InitializeComponent();
MyCollections1 = new ObservableCollection<ObjetTemp>()
{
new ObjetTemp("Tous", "./Reources/Images/tray_2_fill.svg", 250),
new ObjetTemp("En prêt", "./Reources/Images/person_badge_clock_fill.svg", 250),
new ObjetTemp("À lire plus tard", "./Reources/Images/arrow_forward.svg", 250),
new ObjetTemp("Statut de lecture", "./Reources/Images/eyeglasses.svg", 250),
new ObjetTemp("Favoris", "./Reources/Images/heart_fill.svg", 250),
new ObjetTemp("Étiquettes", "./Reources/Images/tag_fill.svg", 250, true),
};
MyCollections2 = new ObservableCollection<ObjetTemp>()
{
new ObjetTemp("Auteur", "./Reources/Images/person_fill.svg", 250),
new ObjetTemp("Date de publication", "./Reources/Images/calendar.svg", 250),
new ObjetTemp("Note", "./Reources/Images/sparkles.svg", 250, true),
};
BindingContext = this;
}
async void ButtonTous(object sender, EventArgs args)
{
await Shell.Current.GoToAsync("TousPage");
}
async void ButtonAuteur(object sender, EventArgs args)
{
await Shell.Current.GoToAsync("FiltragePage");
}
}
}

@ -1,4 +1,6 @@
using Microsoft.Extensions.Logging;
using CommunityToolkit.Maui;
using Microsoft.Extensions.Logging;
using SimpleRatingControlMaui;
namespace BookApp
{
@ -9,6 +11,8 @@ namespace BookApp
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit()
.UseSimpleRatingControl()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BookApp.Model
{
public class Auteur
{
public string Name { get; set; }
public ObservableCollection<Book> Books { get; set; }
}
}

@ -0,0 +1,21 @@
namespace BookApp.Model
{
public class Book
{
public string Name { get; set; }
public string ImageBook { get; set; }
public Auteur Auteur { get; set; }
public Star Note { get; set; }
public StatutDeLecture Statut { get; set; }
public bool Favori { get; set; }
public bool Next { get; set; }
public bool Pret { get; set; }
public string MaisonEdit { get; set; }
public string Resumer { get; set; }
public int NbPage { get; set; }
public string Langue { get; set; }
public string ISBN { get; set; }
public string dateAjout { get; set; }
public string Link { get; set; }
}
}

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BookApp.Model
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
}

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BookApp.Model
{
public class Star
{
public static int MaxStars { get; private set; } = 5;
public int CurrentRating { get; private set; }
public Star(int rating)
{
if (rating < 0 || rating > MaxStars)
throw new ArgumentOutOfRangeException("Rating should be between 0 and MaxStars.");
CurrentRating = rating;
}
public IEnumerable<int> Rating
{
get { return Enumerable.Range(0, MaxStars); }
}
}
}

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BookApp.Model
{
public enum StatutDeLecture
{
Lu,
A_Lire,
Non_Lu
}
}

@ -0,0 +1,192 @@
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="BookApp.Pages.DetailBook">
<Shell.BackButtonBehavior>
<BackButtonBehavior IsVisible="False" IsEnabled="False"/>
</Shell.BackButtonBehavior>
<Shell.TitleView>
<Grid RowDefinitions="Auto" VerticalOptions="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Column="0">
<Image
Source="Chevron_left.svg"
HorizontalOptions="Start">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="BackButton" NumberOfTapsRequired="1"/>
</Image.GestureRecognizers>
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label
Text="Tous"
FontFamily="Strande2"
TextColor="Red"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Start"
Grid.Column="0" />
</HorizontalStackLayout>
<Label
Text="Détails du livre"
FontFamily="Strande2"
TextColor="Black"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Center"
Grid.Column="1" />
</Grid>
</Shell.TitleView>
<ContentPage.Content>
<ScrollView>
<StackLayout>
<Rectangle HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End"/>
<Grid RowDefinitions="auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="125"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Margin="10,10,10,0" Grid.Column="0" Source="{Binding BookDetail.ImageBook}"/>
<StackLayout Grid.Column="1">
<Label FontAttributes="Bold" FontSize="20" Text="{Binding BookDetail.Name}"/>
<Grid RowDefinitions="auto" VerticalOptions="EndAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackLayout x:Name="StarLayout" Grid.Column="0" Orientation="Horizontal" HorizontalOptions="CenterAndExpand" >
<!-- Les étoiles seront ajoutées ici via le code-behind -->
</StackLayout>
<Label x:Name="RatingLabel" Grid.Column="1" FontSize="Medium" HorizontalOptions="CenterAndExpand"/>
</Grid>
</StackLayout>
</Grid>
<Rectangle Margin="25,10,0,0" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End"/>
<Grid>
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Info en ligne"/>
<Button Grid.Column="1"
ImageSource="chevron_right.svg"
HeightRequest="35"
WidthRequest="35"
BackgroundColor="White"
HorizontalOptions="End"/>
</Grid>
<Rectangle Margin="25,0,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End"/>
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Auteur"/>
<Label Margin="25,0,0,0" VerticalTextAlignment="Center" Text="{Binding BookDetail.Auteur.Name}"/>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End"/>
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Maison d'édition"/>
<Label Margin="25,0,0,0" VerticalTextAlignment="Center" Text="{Binding BookDetail.MaisonEdit}"/>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End"/>
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Résumer"/>
<Label Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker."/>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Details"/>
<Grid Margin="25,0,20,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="Nombre de pages"/>
<Label Grid.Row="0" Grid.Column="1" HorizontalTextAlignment="End" Text="{Binding BookDetail.NbPage}"/>
<Label Grid.Row="1" Grid.Column="0" Text="Langue"/>
<Label Grid.Row="1" Grid.Column="1" HorizontalTextAlignment="End" Text="{Binding BookDetail.Langue}"/>
<Label Grid.Row="2" Grid.Column="0" Text="ISBN"/>
<Label Grid.Row="2" Grid.Column="1" HorizontalTextAlignment="End" Text="{Binding BookDetail.ISBN}"/>
</Grid>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="Status de lecture"/>
<Grid RowDefinitions="auto" Margin="25,0,20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Text="Status"/>
<Label Grid.Column="1" HorizontalTextAlignment="End" Text="{Binding BookDetail.Statut}"/>
</Grid>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Label FontAttributes="Bold" Margin="25,0,0,0" VerticalTextAlignment="Center" Text="biliothèque"/>
<Grid RowDefinitions="auto" Margin="25,0,20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Text="Ajouter le"/>
<Label Grid.Column="1" HorizontalTextAlignment="End" Text="{Binding BookDetail.dateAjout}"/>
</Grid>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Rectangle HeightRequest="100" Fill="Transparent"/>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Grid RowDefinitions="auto" Margin="25,0,20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" HeightRequest="25"
WidthRequest="25" Source="folder.svg">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label Margin="10,0,0,0" VerticalOptions="Center" Grid.Column="1" TextColor="Red" Text="Déplacer le livre"/>
</Grid>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Grid RowDefinitions="auto" Margin="25,0,20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" HeightRequest="25"
WidthRequest="25" Source="plus_circle.svg">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label Margin="10,0,0,0" VerticalOptions="Center" Grid.Column="1" TextColor="Red" Text="Ajouter à la liste à lire plus tard"/>
</Grid>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Grid RowDefinitions="auto" Margin="25,0,20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" HeightRequest="25"
WidthRequest="25" Source="eyeglasses.svg">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label Margin="10,0,0,0" VerticalOptions="Center" Grid.Column="1" TextColor="Red" Text="Changer le statut de lecture"/>
</Grid>
<Rectangle Margin="25,10,0,10" HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="End" />
<Grid RowDefinitions="auto" Margin="25,0,20,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" HeightRequest="25"
WidthRequest="25" Source="person.svg">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label Margin="10,0,0,0" VerticalOptions="Center" Grid.Column="1" TextColor="Red" Text="Prêter le livre"/>
</Grid>
<BoxView HeightRequest="1" BackgroundColor="LightGray" VerticalOptions="EndAndExpand" />
</StackLayout>
</ScrollView>
</ContentPage.Content>
</ContentPage>

@ -0,0 +1,68 @@
using BookApp.Model;
using System.Collections.ObjectModel;
namespace BookApp.Pages;
public partial class DetailBook : ContentPage
{
private int maxStars = 5;
private int currentRating = 0;
public Book BookDetail { get; set; }
public DetailBook(Book ItemBook)
{
InitializeComponent();
for (int i = 1; i <= maxStars; i++)
{
var star = new Image
{
Source = "empty_star.svg", // image d'une étoile vide
WidthRequest = 25,
HeightRequest = 25
};
int currentStar = i;
star.GestureRecognizers.Add(
new TapGestureRecognizer { Command = new Command(() => StarTapped(currentStar)), }
);
StarLayout.Children.Add(star);
}
UpdateStars();
BookDetail = ItemBook;
BindingContext = this;
}
private void StarTapped(int rating)
{
if (rating > maxStars)
{
System.Diagnostics.Debug.WriteLine("Erreur : rating trop élevé!");
return;
}
currentRating = rating;
UpdateStars();
RatingLabel.Text = $"Note: {currentRating}/{maxStars}";
}
private void UpdateStars()
{
for (int i = 0; i < maxStars; i++)
{
var star = (Image)StarLayout.Children[i];
if (i < currentRating)
star.Source = "filled_star.svg"; // image d'une étoile remplie
else
star.Source = "empty_star.svg";
}
}
async void BackButton(object sender, EventArgs args)
{
await Shell.Current.Navigation.PopAsync();
}
}

@ -0,0 +1,100 @@
<?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="BookApp.Pages.EmpruntsPrets"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Title="EmpruntsPrets">
<Shell.BackButtonBehavior>
<BackButtonBehavior IsVisible="False" IsEnabled="False"/>
</Shell.BackButtonBehavior>
<Shell.TitleView>
<Grid RowDefinitions="Auto" VerticalOptions="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Column="0">
<Image
Source="Chevron_left.svg"
HorizontalOptions="Start">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="BackButton" NumberOfTapsRequired="1"/>
</Image.GestureRecognizers>
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label
Text="Mes livres"
FontFamily="Strande2"
TextColor="Red"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Start"
Grid.Column="0" />
</HorizontalStackLayout>
<Label
Text="Tous"
FontFamily="Strande2"
TextColor="Black"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Center"
Grid.Column="1" />
<HorizontalStackLayout Grid.Column="2">
<Image
Source="plus_icone.svg"
HorizontalOptions="End"
Margin="0,0,20,0"
Grid.Column="2">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Image
Source="arrow_up_arrow_down.svg"
HorizontalOptions="End"
Margin="0,0,10,0"
Grid.Column="2">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
</HorizontalStackLayout>
</Grid>
</Shell.TitleView>
<StackLayout>
<ContentView>
<ContentView.GestureRecognizers>
<TapGestureRecognizer Command="{Binding TapCommand}" NumberOfTapsRequired="1" />
</ContentView.GestureRecognizers>
<Grid WidthRequest="150" HeightRequest="50"
BackgroundColor="LightGray"
VerticalOptions="Center"
HorizontalOptions="Center">
<!-- Le Switch -->
<Switch x:Name="MySwitch" IsToggled="{Binding IsToggled}"
HorizontalOptions="Start"
VerticalOptions="Center"/>
<!-- Le Texte -->
<Label Text="Mon Switch"
VerticalOptions="Center"
HorizontalOptions="Center"
FontSize="16"
TextColor="Black" />
</Grid>
</ContentView>
<!-- TODO with collection group on personn -->
</StackLayout>
</ContentPage>

@ -0,0 +1,35 @@
using System.Windows.Input;
namespace BookApp.Pages;
public partial class EmpruntsPrets : ContentPage
{
public ICommand TapCommand => new Command(ToggleSwitch);
private bool _isToggled;
public bool IsToggled
{
get => _isToggled;
set
{
_isToggled = value;
OnPropertyChanged();
}
}
public EmpruntsPrets()
{
InitializeComponent();
}
async void BackButton(object sender, EventArgs args)
{
await Shell.Current.Navigation.PopAsync();
}
private void ToggleSwitch()
{
IsToggled = !IsToggled;
}
}

@ -0,0 +1,70 @@
<?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:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
xmlns:composants="clr-namespace:BookApp.Composants"
x:Class="BookApp.Pages.Filtrage">
<Shell.BackButtonBehavior>
<BackButtonBehavior IsVisible="False" IsEnabled="False"/>
</Shell.BackButtonBehavior>
<Shell.TitleView>
<Grid RowDefinitions="Auto" VerticalOptions="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Column="0">
<Image
Source="Chevron_left.svg"
HorizontalOptions="Start">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="BackButton" NumberOfTapsRequired="1"/>
</Image.GestureRecognizers>
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label
Text="Auteur"
FontFamily="Strande2"
TextColor="Red"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Start"
Grid.Column="0" />
</HorizontalStackLayout>
<Label
Text="Tous"
FontFamily="Strande2"
TextColor="Black"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Center"
Grid.Column="1" />
<HorizontalStackLayout Grid.Column="2">
<Image
Source="arrow_up_arrow_down.svg"
HorizontalOptions="End"
Margin="0,0,10,0"
Grid.Column="2">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
</HorizontalStackLayout>
</Grid>
</Shell.TitleView>
<ContentPage.Content>
<StackLayout>
<Rectangle HeightRequest="1" BackgroundColor="LightGray"/>
<SearchBar Placeholder="Search items..."/>
<Rectangle HeightRequest="1" BackgroundColor="LightGray"/>
<composants:CollectionFiltrage VerticalOptions="FillAndExpand"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>

@ -0,0 +1,19 @@
using BookApp.ViewModel;
namespace BookApp.Pages
{
public partial class Filtrage : ContentPage
{
SearchBar searchBar = new SearchBar { Placeholder = "Search items..." };
public Filtrage()
{
InitializeComponent();
}
async void BackButton(object sender, EventArgs args)
{
await Shell.Current.Navigation.PopAsync();
}
}
}

@ -0,0 +1,75 @@
<?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:composants="clr-namespace:BookApp.Composants"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="BookApp.Pages.Tous">
<Shell.BackButtonBehavior>
<BackButtonBehavior IsVisible="False" IsEnabled="False"/>
</Shell.BackButtonBehavior>
<Shell.TitleView>
<Grid RowDefinitions="Auto" VerticalOptions="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Column="0">
<Image
Source="Chevron_left.svg"
HorizontalOptions="Start">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="BackButton" NumberOfTapsRequired="1"/>
</Image.GestureRecognizers>
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Label
Text="Mes livres"
FontFamily="Strande2"
TextColor="Red"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Start"
Grid.Column="0" />
</HorizontalStackLayout>
<Label
Text="Tous"
FontFamily="Strande2"
TextColor="Black"
FontSize="Medium"
VerticalTextAlignment="Center"
HorizontalOptions="Center"
Grid.Column="1" />
<HorizontalStackLayout Grid.Column="2">
<Image
Source="plus_icone.svg"
HorizontalOptions="End"
Margin="0,0,20,0"
Grid.Column="2">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
<Image
Source="arrow_up_arrow_down.svg"
HorizontalOptions="End"
Margin="0,0,10,0"
Grid.Column="2">
<Image.Behaviors>
<toolkit:IconTintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
</HorizontalStackLayout>
</Grid>
</Shell.TitleView>
<ContentPage.Content>
<composants:GroupCollection/>
</ContentPage.Content>
</ContentPage>

@ -0,0 +1,18 @@
using BookApp.ViewModel;
namespace BookApp.Pages
{
public partial class Tous : ContentPage
{
public Tous()
{
InitializeComponent();
BindingContext = new TousViewModel();
}
async void BackButton(object sender, EventArgs args)
{
await Shell.Current.Navigation.PopAsync();
}
}
}

@ -0,0 +1,18 @@
using Android.App;
using Android.Content.PM;
using Android.OS;
namespace BookApp
{
[Activity(
Theme = "@style/Maui.SplashTheme",
MainLauncher = true,
ConfigurationChanges = ConfigChanges.ScreenSize
| ConfigChanges.Orientation
| ConfigChanges.UiMode
| ConfigChanges.ScreenLayout
| ConfigChanges.SmallestScreenSize
| ConfigChanges.Density
)]
public class MainActivity : MauiAppCompatActivity { }
}

@ -7,9 +7,7 @@ namespace BookApp
public class MainApplication : MauiApplication
{
public MainApplication(IntPtr handle, JniHandleOwnership ownership)
: base(handle, ownership)
{
}
: base(handle, ownership) { }
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 228 B

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 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,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_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

@ -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 @@
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m12.7270006 3.68663679c.3792191-.40151136.3611476-1.03441839-.0403638-1.41363742s-1.0344184-.36114752-1.4136374.04036384l-8.50031054 8.99999999c-.36397787.3853743-.36400206.9878117-.00005513 1.3732152l8.50031047 9.001448c.3791868.4015418 1.0120924.4196641 1.4136342.0404774.4015418-.3791868.4196642-1.0120924.0404774-1.4136342l-7.85190384-8.3148144z" fill="#212121"/></svg>

After

Width:  |  Height:  |  Size: 465 B

@ -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

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><g><path d="M0 0h24v24H0V0z" fill="none"/><path d="M0 0h24v24H0V0z" fill="none"/></g><g><path d="M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z"/></g></svg>

After

Width:  |  Height:  |  Size: 343 B

@ -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 viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><path d="m62 25.2h-22.9l-7.1-22.2-7.1 22.2h-22.9l18.5 13.7-7 22.1 18.5-13.7 18.5 13.7-7.1-22.2z" fill="#ffce31"/></svg>

After

Width:  |  Height:  |  Size: 179 B

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

Loading…
Cancel
Save