fronted: login
BIN
Captura de pantalla 2025-08-11 003208.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
Captura de pantalla 2025-08-11 003533.png
Normal file
After Width: | Height: | Size: 20 KiB |
@@ -14,12 +14,15 @@ public class EventModel
|
|||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
public DateTime? Date { get; set; }
|
public DateTime? Date { get; set; }
|
||||||
public string? Location { get; set; }
|
public string? Location { get; set; }
|
||||||
|
[ForeignKey("TagId")]
|
||||||
public List<TagModel> RelatedTags { get; set; } = [];
|
public List<TagModel> RelatedTags { get; set; } = [];
|
||||||
public DateTime CreatedAt { get; set; }
|
public DateTime CreatedAt { get; set; }
|
||||||
public DateTime UpdatedAt { get; set; }
|
public DateTime UpdatedAt { get; set; }
|
||||||
public string? CreatedBy { get; set; }
|
public string? CreatedBy { get; set; }
|
||||||
public string? UpdatedBy { get; set; }
|
public string? UpdatedBy { get; set; }
|
||||||
|
|
||||||
|
public EventModel() { }
|
||||||
|
|
||||||
public EventModel(string id)
|
public EventModel(string id)
|
||||||
{
|
{
|
||||||
Id = id;
|
Id = id;
|
||||||
|
@@ -6,6 +6,8 @@ namespace back.DataModels;
|
|||||||
[Table("Galleries")]
|
[Table("Galleries")]
|
||||||
public class GalleryModel
|
public class GalleryModel
|
||||||
{
|
{
|
||||||
|
public GalleryModel() { }
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
[MaxLength(100)]
|
[MaxLength(100)]
|
||||||
@@ -16,7 +18,8 @@ public class GalleryModel
|
|||||||
public DateTime? UpdatedAt { get; set; }
|
public DateTime? UpdatedAt { get; set; }
|
||||||
public string? CreatedBy { get; set; }
|
public string? CreatedBy { get; set; }
|
||||||
public string? UpdatedBy { get; set; }
|
public string? UpdatedBy { get; set; }
|
||||||
public List<PhotoModel> Photos { get; set; } = new();
|
[ForeignKey("PhotoId")]
|
||||||
|
public List<PhotoModel> Photos { get; set; } = [];
|
||||||
public bool? IsPublic { get; set; } = true;
|
public bool? IsPublic { get; set; } = true;
|
||||||
public bool? IsArchived { get; set; } = false;
|
public bool? IsArchived { get; set; } = false;
|
||||||
public bool? IsFavorite { get; set; } = false;
|
public bool? IsFavorite { get; set; } = false;
|
||||||
|
@@ -6,6 +6,8 @@ namespace back.DataModels;
|
|||||||
[Table("Permissions")]
|
[Table("Permissions")]
|
||||||
public class PermissionModel
|
public class PermissionModel
|
||||||
{
|
{
|
||||||
|
public PermissionModel() { }
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
[Required, MaxLength(100)]
|
[Required, MaxLength(100)]
|
||||||
|
@@ -6,12 +6,15 @@ namespace back.DataModels;
|
|||||||
[Table("Persons")]
|
[Table("Persons")]
|
||||||
public class PersonModel
|
public class PersonModel
|
||||||
{
|
{
|
||||||
|
public PersonModel() { }
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
[Required, MaxLength(100)]
|
[Required, MaxLength(100)]
|
||||||
public string? Name { get; set; }
|
public string? Name { get; set; }
|
||||||
public string? ProfilePicture { get; set; }
|
public string? ProfilePicture { get; set; }
|
||||||
public string? Avatar { get; set; }
|
public string? Avatar { get; set; }
|
||||||
|
[ForeignKey("SocialMediaId")]
|
||||||
public SocialMedia? SocialMedia { get; set; }
|
public SocialMedia? SocialMedia { get; set; }
|
||||||
[MaxLength(250)]
|
[MaxLength(250)]
|
||||||
public string? Bio { get; set; } // Optional field for a short biography or description
|
public string? Bio { get; set; } // Optional field for a short biography or description
|
||||||
@@ -33,9 +36,11 @@ public class PersonModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Table("SocialMediaLinks")]
|
[Table("SocialMedia")]
|
||||||
public class SocialMedia
|
public class SocialMedia
|
||||||
{
|
{
|
||||||
|
[Key]
|
||||||
|
public string Id { get; set; } = Guid.NewGuid().ToString();
|
||||||
public string? Facebook { get; set; }
|
public string? Facebook { get; set; }
|
||||||
public string? Instagram { get; set; }
|
public string? Instagram { get; set; }
|
||||||
public string? Twitter { get; set; }
|
public string? Twitter { get; set; }
|
||||||
|
@@ -3,9 +3,11 @@ using System.ComponentModel.DataAnnotations.Schema;
|
|||||||
|
|
||||||
namespace back.DataModels;
|
namespace back.DataModels;
|
||||||
|
|
||||||
[Table("Photo")]
|
[Table("Photos")]
|
||||||
public class PhotoModel
|
public class PhotoModel
|
||||||
{
|
{
|
||||||
|
public PhotoModel() { }
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
[Required, MaxLength(100), MinLength(1)]
|
[Required, MaxLength(100), MinLength(1)]
|
||||||
@@ -20,12 +22,16 @@ public class PhotoModel
|
|||||||
public DateTime UpdatedAt { get; set; }
|
public DateTime UpdatedAt { get; set; }
|
||||||
public string CreatedBy { get; set; }
|
public string CreatedBy { get; set; }
|
||||||
public string UpdatedBy { get; set; }
|
public string UpdatedBy { get; set; }
|
||||||
|
[ForeignKey("EventId")]
|
||||||
public EventModel? Event { get; set; } = null;
|
public EventModel? Event { get; set; } = null;
|
||||||
|
[ForeignKey("TagId")]
|
||||||
public List<TagModel> Tags { get; set; } = [];
|
public List<TagModel> Tags { get; set; } = [];
|
||||||
|
[ForeignKey("RankingId")]
|
||||||
public RankingModel Ranking { get; set; } = new RankingModel(0);
|
public RankingModel Ranking { get; set; } = new RankingModel(0);
|
||||||
public bool IsFavorite { get; set; } = false;
|
public bool IsFavorite { get; set; } = false;
|
||||||
public bool IsPublic { get; set; } = true;
|
public bool IsPublic { get; set; } = true;
|
||||||
public bool IsArchived { get; set; } = false;
|
public bool IsArchived { get; set; } = false;
|
||||||
|
[ForeignKey("PersonId")]
|
||||||
public List<PersonModel>? Persons { get; set; }
|
public List<PersonModel>? Persons { get; set; }
|
||||||
|
|
||||||
public PhotoModel(
|
public PhotoModel(
|
||||||
|
@@ -1,7 +1,14 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace back.DataModels;
|
namespace back.DataModels;
|
||||||
|
|
||||||
|
[Table("Rankings")]
|
||||||
public class RankingModel
|
public class RankingModel
|
||||||
{
|
{
|
||||||
|
[Key]
|
||||||
|
public string Id { get; set; } = Guid.NewGuid().ToString();
|
||||||
|
|
||||||
private int totalVotes;
|
private int totalVotes;
|
||||||
private int upVotes;
|
private int upVotes;
|
||||||
private int downVotes;
|
private int downVotes;
|
||||||
@@ -13,6 +20,13 @@ public class RankingModel
|
|||||||
this.downVotes = downVotes;
|
this.downVotes = downVotes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RankingModel()
|
||||||
|
{
|
||||||
|
totalVotes = 0;
|
||||||
|
upVotes = 0;
|
||||||
|
downVotes = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public void DownVote()
|
public void DownVote()
|
||||||
{
|
{
|
||||||
downVotes++;
|
downVotes++;
|
||||||
|
@@ -1,17 +1,22 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace back.DataModels;
|
namespace back.DataModels;
|
||||||
|
|
||||||
[Tags("Roles")]
|
[Tags("Roles")]
|
||||||
public class RoleModel
|
public class RoleModel
|
||||||
{
|
{
|
||||||
|
public RoleModel() { }
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
[Required, MaxLength(100)]
|
[Required, MaxLength(100)]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
[MaxLength(250)]
|
[MaxLength(250)]
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
|
[ForeignKey("PermissionId")]
|
||||||
public List<PermissionModel> Permissions { get; set; }
|
public List<PermissionModel> Permissions { get; set; }
|
||||||
|
[ForeignKey("RoleId")]
|
||||||
public RoleModel? BaseRoleModel { get; set; }
|
public RoleModel? BaseRoleModel { get; set; }
|
||||||
|
|
||||||
public RoleModel(string id, string name, string description, List<PermissionModel>? permissions = null, RoleModel? baseRoleModel = null)
|
public RoleModel(string id, string name, string description, List<PermissionModel>? permissions = null, RoleModel? baseRoleModel = null)
|
||||||
|
@@ -4,11 +4,18 @@ using System.ComponentModel.DataAnnotations.Schema;
|
|||||||
namespace back.DataModels;
|
namespace back.DataModels;
|
||||||
|
|
||||||
[Table("Tags")]
|
[Table("Tags")]
|
||||||
public class TagModel(string id, string? name = null)
|
public class TagModel
|
||||||
{
|
{
|
||||||
|
public TagModel() { }
|
||||||
|
public TagModel(string id, string? name = null)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
Name = name;
|
||||||
|
}
|
||||||
|
|
||||||
[Key]
|
[Key]
|
||||||
public string Id { get; init; } = id;
|
public string Id { get; init; }
|
||||||
[Required, MaxLength(25)]
|
[Required, MaxLength(25)]
|
||||||
public string? Name { get; init; } = name;
|
public string? Name { get; init; }
|
||||||
public DateTime CreatedAt { get; init; } = DateTime.UtcNow;
|
public DateTime CreatedAt { get; init; } = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,9 @@ public class UserModel : PersonModel
|
|||||||
public string Email { get; set; }
|
public string Email { get; set; }
|
||||||
[Required, MinLength(8)]
|
[Required, MinLength(8)]
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
|
[Required]
|
||||||
|
public string Salt { get; set; }
|
||||||
|
[ForeignKey("RoleId")]
|
||||||
public List<RoleModel> Role { get; set; }
|
public List<RoleModel> Role { get; set; }
|
||||||
|
|
||||||
public UserModel(string id, string email, string password, string name, List<RoleModel> role, DateTime createdAt, DateTime updatedAt)
|
public UserModel(string id, string email, string password, string name, List<RoleModel> role, DateTime createdAt, DateTime updatedAt)
|
||||||
@@ -22,17 +25,30 @@ public class UserModel : PersonModel
|
|||||||
UpdatedAt = updatedAt;
|
UpdatedAt = updatedAt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UserModel() { }
|
||||||
|
|
||||||
public bool IsAdmin => Role.Exists(r => r.IsAdmin);
|
public bool IsAdmin => Role.Exists(r => r.IsAdmin);
|
||||||
public bool IsContentManager => Role.Exists(r => r.IsContentManager);
|
public bool IsContentManager => Role.Exists(r => r.IsContentManager);
|
||||||
public bool IsUser => Role.Exists(r => r.IsUser);
|
public bool IsUser => Role.Exists(r => r.IsUser);
|
||||||
|
|
||||||
public static readonly UserModel DefaultUser = new(
|
public UserDto ToDto()
|
||||||
"0",
|
{
|
||||||
"default@example.com",
|
return new UserDto
|
||||||
string.Empty,
|
{
|
||||||
"Default User",
|
Id = Id,
|
||||||
[RoleModel.UserRole],
|
Name = Name,
|
||||||
DateTime.UtcNow,
|
Email = Email,
|
||||||
DateTime.UtcNow
|
ProfilePicture = ProfilePicture,
|
||||||
);
|
Avatar = Avatar,
|
||||||
|
SocialMedia = SocialMedia,
|
||||||
|
Bio = Bio,
|
||||||
|
CreatedAt = CreatedAt,
|
||||||
|
UpdatedAt = UpdatedAt
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UserDto : PersonModel
|
||||||
|
{
|
||||||
|
public required string Email { get; set; }
|
||||||
}
|
}
|
@@ -49,7 +49,9 @@ public static partial class DbContextOptionsBuilderExtensions
|
|||||||
|
|
||||||
public static void UseDatabaseConfig(this DbContextOptionsBuilder options, DatabaseConfig config)
|
public static void UseDatabaseConfig(this DbContextOptionsBuilder options, DatabaseConfig config)
|
||||||
{
|
{
|
||||||
if(!Enum.TryParse(Enum.GetName(typeof(DatabaseProvider), config.Provider)?.ToLowerInvariant(), out DatabaseProvider provider))
|
var providerName = Enum.GetNames<DatabaseProvider>()
|
||||||
|
.FirstOrDefault(name => name.Equals(config.Provider, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
if (!Enum.TryParse(providerName, out DatabaseProvider provider))
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"Unsupported database provider: {config.Provider} -- Supported providers are: {SupportedDbs()}");
|
throw new InvalidOperationException($"Unsupported database provider: {config.Provider} -- Supported providers are: {SupportedDbs()}");
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using back.persistance.blob;
|
using back.persistance.blob;
|
||||||
|
using back.services.Crypto;
|
||||||
using back.services.ImageResizer;
|
using back.services.ImageResizer;
|
||||||
|
|
||||||
namespace back.ServicesExtensions;
|
namespace back.ServicesExtensions;
|
||||||
@@ -15,6 +16,7 @@ public static partial class ServicesExtensions
|
|||||||
services.AddSingleton<IBlobStorageService, FileSystemImageStorageService>();
|
services.AddSingleton<IBlobStorageService, FileSystemImageStorageService>();
|
||||||
|
|
||||||
services.AddSingleton<IImageResizer, ImageResizer>();
|
services.AddSingleton<IImageResizer, ImageResizer>();
|
||||||
|
services.AddSingleton<ICryptoService, CryptoService>();
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@ namespace back.context;
|
|||||||
public class EventContext : DbContext
|
public class EventContext : DbContext
|
||||||
{
|
{
|
||||||
private DbSet<EventModel> Events { get; set; }
|
private DbSet<EventModel> Events { get; set; }
|
||||||
public EventContext(DbContextOptions<EventContext> options)
|
public EventContext(DbContextOptions<EventContext> options) : base(options)
|
||||||
{
|
{
|
||||||
Database.EnsureCreated();
|
Database.EnsureCreated();
|
||||||
}
|
}
|
||||||
|
@@ -6,8 +6,9 @@ namespace back.context;
|
|||||||
public class PersonContext : DbContext
|
public class PersonContext : DbContext
|
||||||
{
|
{
|
||||||
private DbSet<PersonModel> Persons { get; set; }
|
private DbSet<PersonModel> Persons { get; set; }
|
||||||
public PersonContext(DbContextOptions<PersonContext> options)
|
public PersonContext(DbContextOptions<PersonContext> options) : base(options)
|
||||||
{
|
{
|
||||||
|
// Ensure database is created
|
||||||
Database.EnsureCreated();
|
Database.EnsureCreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -161,38 +161,73 @@ public class PhotoContext : DbContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PhotoModel?> GetById(Guid id)
|
public async Task<PhotoModel?> GetById(Guid id)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
return await Photos.FindAsync(id);
|
return await Photos.FindAsync(id);
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<int> GetTotalItems()
|
public async Task<int> GetTotalItems()
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
return await Photos.CountAsync();
|
return await Photos.CountAsync();
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<PhotoModel>> GetPage(int page = 1, int pageSize = 20)
|
public async Task<IEnumerable<PhotoModel>?> GetPage(int page = 1, int pageSize = 20)
|
||||||
{
|
{
|
||||||
if (page < 1) page = 1;
|
if (page < 1) page = 1;
|
||||||
if (pageSize < 1) pageSize = 20;
|
if (pageSize < 1) pageSize = 20;
|
||||||
|
try
|
||||||
|
{
|
||||||
return await Photos
|
return await Photos
|
||||||
.OrderByDescending(p => p.CreatedAt)
|
.OrderByDescending(p => p.CreatedAt)
|
||||||
.Skip((page - 1) * pageSize)
|
.Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize)
|
.Take(pageSize)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<bool> Exists(PhotoModel? photo)
|
public async Task<bool> Exists(PhotoModel? photo)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if (photo == null) return false;
|
if (photo == null) return false;
|
||||||
if (string.IsNullOrEmpty(photo.Id)) return false;
|
if (string.IsNullOrEmpty(photo.Id)) return false;
|
||||||
return await Photos.AnyAsync(p => p.Id == photo.Id);
|
return await Photos.AnyAsync(p => p.Id == photo.Id);
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false; // Handle exceptions gracefully
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<bool> Exists(string id)
|
public async Task<bool> Exists(string id)
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(id)) return false;
|
||||||
return await Photos.AnyAsync(p => p.Id == id);
|
return await Photos.AnyAsync(p => p.Id == id);
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false; // Handle exceptions gracefully
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Delete(PhotoModel photo)
|
public async Task Delete(PhotoModel photo)
|
||||||
{
|
{
|
||||||
|
@@ -6,7 +6,7 @@ namespace back.context;
|
|||||||
public class TagContext : DbContext
|
public class TagContext : DbContext
|
||||||
{
|
{
|
||||||
private DbSet<TagModel> Tags { get; set; }
|
private DbSet<TagModel> Tags { get; set; }
|
||||||
public TagContext(DbContextOptions<TagContext> options)
|
public TagContext(DbContextOptions<TagContext> options) : base(options)
|
||||||
{
|
{
|
||||||
Database.EnsureCreated();
|
Database.EnsureCreated();
|
||||||
}
|
}
|
||||||
|
@@ -1,17 +1,111 @@
|
|||||||
using back.DataModels;
|
using back.DataModels;
|
||||||
|
using back.services.Crypto;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
namespace back.context;
|
namespace back.context;
|
||||||
|
|
||||||
public class UserContext : DbContext
|
public class UserContext : DbContext
|
||||||
{
|
{
|
||||||
public DbSet<UserModel> Users { get; set; }
|
public record HttpErrorMap(HttpStatusCode Code, string Description);
|
||||||
public UserContext(DbContextOptions<UserContext> options) : base(options)
|
|
||||||
|
public static class Errors
|
||||||
{
|
{
|
||||||
|
public static readonly HttpErrorMap Unauthorized =
|
||||||
|
new(HttpStatusCode.Unauthorized, "Invalid user data. Email or password are wrong.");
|
||||||
|
public static readonly HttpErrorMap BadRequest =
|
||||||
|
new(HttpStatusCode.BadRequest, "Missing user data.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public DbSet<UserModel> Users { get; set; }
|
||||||
|
private readonly ICryptoService _cryptoService;
|
||||||
|
public UserContext(
|
||||||
|
DbContextOptions<UserContext> options,
|
||||||
|
ICryptoService cryptoService
|
||||||
|
) : base(options)
|
||||||
|
{
|
||||||
|
_cryptoService = cryptoService ?? throw new ArgumentNullException(nameof(cryptoService));
|
||||||
// Ensure database is created
|
// Ensure database is created
|
||||||
Database.EnsureCreated();
|
Database.EnsureCreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<UserModel?> Create(string clientId, UserModel user)
|
||||||
|
{
|
||||||
|
ArgumentNullException.ThrowIfNull(user);
|
||||||
|
|
||||||
|
if (await Exists(user))
|
||||||
|
{
|
||||||
|
return await GetById(Guid.Parse(user.Id)) ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(user.Id))
|
||||||
|
{
|
||||||
|
user.Id = Guid.NewGuid().ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(user.Salt))
|
||||||
|
{
|
||||||
|
user.Salt = _cryptoService.Salt();
|
||||||
|
}
|
||||||
|
user.Password = _cryptoService.Decrypt(clientId, user.Password) ?? string.Empty;
|
||||||
|
user.Password = _cryptoService.Hash(user.Password + user.Salt + _cryptoService.Pepper()) ?? string.Empty;
|
||||||
|
|
||||||
|
user.CreatedAt = DateTime.UtcNow;
|
||||||
|
Users.Add(user);
|
||||||
|
await SaveChangesAsync();
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<UserModel?> Update(UserModel user)
|
||||||
|
{
|
||||||
|
ArgumentNullException.ThrowIfNull(user);
|
||||||
|
if (!await Exists(user))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var existingUser = await GetById(Guid.Parse(user.Id));
|
||||||
|
if (existingUser == null) return null;
|
||||||
|
existingUser.Name = user.Name;
|
||||||
|
existingUser.Email = user.Email;
|
||||||
|
existingUser.UpdatedAt = DateTime.UtcNow;
|
||||||
|
Users.Update(existingUser);
|
||||||
|
await SaveChangesAsync();
|
||||||
|
return existingUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> Delete(Guid id)
|
||||||
|
{
|
||||||
|
var user = await GetById(id);
|
||||||
|
if (user == null) return false;
|
||||||
|
Users.Remove(user);
|
||||||
|
await SaveChangesAsync();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<UserModel?> GetByEmail(string email)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(email)) return null;
|
||||||
|
return await Users.FirstOrDefaultAsync(u => u.Email == email);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> GetUserSaltByEmail(string email)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(email)) return string.Empty;
|
||||||
|
var user = await Users.FirstOrDefaultAsync(u => u.Email == email);
|
||||||
|
return user?.Salt ?? string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<UserModel?> Login(string email, string password, string clientId)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) return null;
|
||||||
|
|
||||||
|
var pass = _cryptoService.Decrypt(clientId, password) + await GetUserSaltByEmail(email) + _cryptoService.Pepper();
|
||||||
|
var hashedPassword = _cryptoService.Hash(pass);
|
||||||
|
var user = await Users
|
||||||
|
.FirstOrDefaultAsync(u => u.Email == email && u.Password == hashedPassword);
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<UserModel?> GetById(Guid id)
|
public async Task<UserModel?> GetById(Guid id)
|
||||||
{
|
{
|
||||||
return await Users.FindAsync(id);
|
return await Users.FindAsync(id);
|
||||||
|
54
back/controllers/UsersController.cs
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
using back.context;
|
||||||
|
using back.DataModels;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace back.controllers;
|
||||||
|
|
||||||
|
[ApiController, Route("api/[controller]")]
|
||||||
|
public class UsersController(UserContext userContext) : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly UserContext _userContext = userContext;
|
||||||
|
// GET: api/<UsersController>
|
||||||
|
//[HttpGet]
|
||||||
|
//public async Task<ActionResult<IEnumerable<UserModel>>> Get([FromQuery] int page = 1, [FromQuery] int pageSize = 20)
|
||||||
|
//{
|
||||||
|
// var users = await _userContext.GetPage(page, pageSize);
|
||||||
|
// var totalItems = await _userContext.GetTotalItems();
|
||||||
|
// Response.Headers.Append("X-Total-Count", totalItems.ToString());
|
||||||
|
// return Ok(users);
|
||||||
|
//}
|
||||||
|
//// GET api/<UsersController>/5
|
||||||
|
//[HttpGet("{id}")]
|
||||||
|
//public async Task<IActionResult> Get(Guid id)
|
||||||
|
//{
|
||||||
|
// var user = await _userContext.GetById(id);
|
||||||
|
// if (user == null)
|
||||||
|
// return NotFound();
|
||||||
|
// return Ok(user);
|
||||||
|
//}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IActionResult> Login(
|
||||||
|
[FromHeader(Name = "X-client-thumbprint")] string clientId,
|
||||||
|
[FromBody] UserModel user
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (user == null || string.IsNullOrEmpty(user.Email) || string.IsNullOrEmpty(user.Password))
|
||||||
|
return BadRequest(UserContext.Errors.BadRequest.Description);
|
||||||
|
var existingUser = await _userContext.Login(user.Email, user.Password, clientId);
|
||||||
|
if (existingUser == null)
|
||||||
|
return Unauthorized(UserContext.Errors.Unauthorized.Description);
|
||||||
|
return Ok(existingUser.ToDto());
|
||||||
|
}
|
||||||
|
|
||||||
|
//// POST api/<UsersController>
|
||||||
|
//[HttpPost]
|
||||||
|
//public async Task<IActionResult> Post([FromBody] UserModel user)
|
||||||
|
//{
|
||||||
|
// if (user == null)
|
||||||
|
// return BadRequest("User cannot be null");
|
||||||
|
// var createdUser = await _userContext.Create(user);
|
||||||
|
// return CreatedAtAction(nameof(Get), new { id = createdUser.Id }, createdUser);
|
||||||
|
//}
|
||||||
|
}
|
168
back/services/Crypto/CryptoService.cs
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
|
namespace back.services.Crypto;
|
||||||
|
|
||||||
|
public class CryptoService(IMemoryCache cache) : ICryptoService
|
||||||
|
{
|
||||||
|
private readonly IMemoryCache _cache = cache;
|
||||||
|
private readonly MemoryCacheEntryOptions _CacheOptions = new()
|
||||||
|
{
|
||||||
|
AbsoluteExpiration = DateTimeOffset.Now.AddHours(1),
|
||||||
|
AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1),
|
||||||
|
SlidingExpiration = TimeSpan.FromMinutes(30),
|
||||||
|
Priority = CacheItemPriority.High,
|
||||||
|
PostEvictionCallbacks =
|
||||||
|
{
|
||||||
|
new PostEvictionCallbackRegistration
|
||||||
|
{
|
||||||
|
EvictionCallback = (key, value, reason, state) =>
|
||||||
|
{
|
||||||
|
var clientId = key.ToString()?.Replace("_public","").Replace("_private","");
|
||||||
|
if(string.IsNullOrEmpty(clientId)) { return; }
|
||||||
|
// Handle the eviction of the certificate - removing public/private keys from the cache
|
||||||
|
try{ cache.Remove($"{clientId}_public"); } catch{ }
|
||||||
|
try{ cache.Remove($"{clientId}_private"); } catch{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public string? Encrypt(string plainText, string clientId)
|
||||||
|
{
|
||||||
|
// get keys from cache
|
||||||
|
if (!_cache.TryGetValue($"{clientId}_private", out string? privateCert) || string.IsNullOrEmpty(privateCert))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Private certificate not found for the client.");
|
||||||
|
}
|
||||||
|
if (!_cache.TryGetValue($"{clientId}_public", out string? publicCert) || string.IsNullOrEmpty(publicCert))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Public certificate not found for the client.");
|
||||||
|
}
|
||||||
|
// import rsa keys and configure RSA for encryption
|
||||||
|
using var rsa = RSA.Create(2048);
|
||||||
|
rsa.ImportRSAPublicKey(Convert.FromBase64String(publicCert), out _);
|
||||||
|
rsa.ImportRSAPrivateKey(Convert.FromBase64String(privateCert), out _);
|
||||||
|
// Encrypt the plain text using RSA
|
||||||
|
string? encryptedText = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var plainBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
||||||
|
var encryptedBytes = rsa.Encrypt(plainBytes, RSAEncryptionPadding.OaepSHA256);
|
||||||
|
encryptedText = Convert.ToBase64String(encryptedBytes);
|
||||||
|
}
|
||||||
|
catch (CryptographicException ex)
|
||||||
|
{
|
||||||
|
// Handle encryption errors
|
||||||
|
throw new InvalidOperationException("Encryption failed.", ex);
|
||||||
|
}
|
||||||
|
return encryptedText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? Decrypt(string encryptedText, string clientId)
|
||||||
|
{
|
||||||
|
// get keys from cache
|
||||||
|
if (!_cache.TryGetValue($"{clientId}_private", out string? privateCert) || string.IsNullOrEmpty(privateCert))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Private certificate not found for the client.");
|
||||||
|
}
|
||||||
|
if (!_cache.TryGetValue($"{clientId}_public", out string? publicCert) || string.IsNullOrEmpty(publicCert))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Private certificate not found for the client.");
|
||||||
|
}
|
||||||
|
// import rsa keys and configure RSA for decryption
|
||||||
|
using var rsa = RSA.Create(2048);
|
||||||
|
rsa.ImportRSAPublicKey(Convert.FromBase64String(publicCert), out _);
|
||||||
|
rsa.ImportRSAPrivateKey(Convert.FromBase64String(privateCert), out _);
|
||||||
|
// Decrypt the encrypted text using RSA
|
||||||
|
string? plainText = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var encryptedBytes = Convert.FromBase64String(encryptedText);
|
||||||
|
var decryptedBytes = rsa.Decrypt(encryptedBytes, RSAEncryptionPadding.OaepSHA256);
|
||||||
|
plainText = System.Text.Encoding.UTF8.GetString(decryptedBytes);
|
||||||
|
}
|
||||||
|
catch (CryptographicException ex)
|
||||||
|
{
|
||||||
|
// Handle decryption errors
|
||||||
|
throw new InvalidOperationException("Decryption failed.", ex);
|
||||||
|
}
|
||||||
|
return plainText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetPublicCertificate(string clientId)
|
||||||
|
{
|
||||||
|
if (_cache.TryGetValue($"{clientId}_public", out string? publicCert) && !string.IsNullOrEmpty(publicCert))
|
||||||
|
{
|
||||||
|
return publicCert;
|
||||||
|
}
|
||||||
|
(publicCert, _) = GenerateCertificate();
|
||||||
|
_cache.Set($"{clientId}_public", publicCert, _CacheOptions);
|
||||||
|
return publicCert;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetPrivateCertificate(string clientId)
|
||||||
|
{
|
||||||
|
if (_cache.TryGetValue($"{clientId}_private", out string? privateCert) && !string.IsNullOrEmpty(privateCert))
|
||||||
|
{
|
||||||
|
return privateCert;
|
||||||
|
}
|
||||||
|
(_, privateCert) = GenerateCertificate();
|
||||||
|
_cache.Set($"{clientId}_private", privateCert, _CacheOptions);
|
||||||
|
return privateCert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static (string publicCert, string privateCert) GenerateCertificate()
|
||||||
|
{
|
||||||
|
// Generate a new RSA key pair for the client
|
||||||
|
using var rsa = RSA.Create(2048);
|
||||||
|
var publicKey = rsa.ExportRSAPublicKey();
|
||||||
|
var privateKey = rsa.ExportRSAPrivateKey();
|
||||||
|
// Convert to Base64 strings for storage
|
||||||
|
var publicCert = Convert.ToBase64String(publicKey);
|
||||||
|
var privateCert = Convert.ToBase64String(privateKey);
|
||||||
|
return (publicCert, privateCert);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? Hash(string plainText)
|
||||||
|
{
|
||||||
|
string? hash = null;
|
||||||
|
if (string.IsNullOrEmpty(plainText))
|
||||||
|
{
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
var plainBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
||||||
|
var hashBytes = SHA256.HashData(plainBytes);
|
||||||
|
hash = Convert.ToBase64String(hashBytes);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool VerifyHash(string plainText, string hash)
|
||||||
|
{
|
||||||
|
var plainTextHash = Hash(plainText);
|
||||||
|
if (string.IsNullOrEmpty(plainTextHash) || string.IsNullOrEmpty(hash))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return plainTextHash.Equals(hash, StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Pepper()
|
||||||
|
{
|
||||||
|
// get pepper from environtment variable
|
||||||
|
var pepper = Environment.GetEnvironmentVariable("PEPPER");
|
||||||
|
if (string.IsNullOrEmpty(pepper))
|
||||||
|
{
|
||||||
|
return "BactilForteFlash20mg";
|
||||||
|
}
|
||||||
|
return pepper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Salt()
|
||||||
|
{
|
||||||
|
var saltBytes = new byte[32]; // 256 bits
|
||||||
|
using var rng = RandomNumberGenerator.Create();
|
||||||
|
rng.GetBytes(saltBytes);
|
||||||
|
return Convert.ToBase64String(saltBytes);
|
||||||
|
}
|
||||||
|
}
|
13
back/services/Crypto/ICryptoService.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
namespace back.services.Crypto;
|
||||||
|
|
||||||
|
public interface ICryptoService
|
||||||
|
{
|
||||||
|
string? Encrypt(string clientId, string plainText);
|
||||||
|
string? Decrypt(string clientId, string encryptedText);
|
||||||
|
string? Hash(string plainText);
|
||||||
|
bool VerifyHash(string plainText, string hash);
|
||||||
|
string Salt();
|
||||||
|
string Pepper();
|
||||||
|
string GetPublicCertificate(string clientId);
|
||||||
|
string GetPrivateCertificate(string clientId);
|
||||||
|
}
|
71
front/v2/public/assets/external/apple-original-logo.svg
vendored
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="21"
|
||||||
|
height="21"
|
||||||
|
viewBox="0 0 21 21"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
sodipodi:docname="Logo - SIWA - Logo-only - Black.svg"
|
||||||
|
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs1" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="14.410714"
|
||||||
|
inkscape:cx="27.965304"
|
||||||
|
inkscape:cy="28"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1912"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg1" />
|
||||||
|
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
|
||||||
|
<title
|
||||||
|
id="title1">Black Logo Square</title>
|
||||||
|
<desc
|
||||||
|
id="desc1">Created with Sketch.</desc>
|
||||||
|
<g
|
||||||
|
id="Black-Logo-Square"
|
||||||
|
stroke="none"
|
||||||
|
stroke-width="1"
|
||||||
|
fill="none"
|
||||||
|
fill-rule="evenodd"
|
||||||
|
transform="translate(-17.417596,-15.266418)">
|
||||||
|
<rect
|
||||||
|
id="Rectangle"
|
||||||
|
fill="#ffffff"
|
||||||
|
x="6"
|
||||||
|
y="6"
|
||||||
|
width="44"
|
||||||
|
height="44" />
|
||||||
|
<path
|
||||||
|
d="m 28.222656,20.384615 c 0.832031,0 1.875,-0.579784 2.496094,-1.352829 0.5625,-0.700572 0.972656,-1.678957 0.972656,-2.657342 0,-0.132867 -0.01172,-0.265735 -0.03516,-0.374444 -0.925781,0.03624 -2.039063,0.640178 -2.707031,1.44946 -0.527344,0.61602 -1.007813,1.582326 -1.007813,2.57279 0,0.144946 0.02344,0.289892 0.03516,0.338208 0.05859,0.01208 0.152344,0.02416 0.246094,0.02416 z M 25.292969,35 c 1.136718,0 1.640625,-0.785124 3.058593,-0.785124 1.441407,0 1.757813,0.760966 3.023438,0.760966 1.242187,0 2.074219,-1.183725 2.859375,-2.343293 0.878906,-1.328671 1.242187,-2.633185 1.265625,-2.693579 -0.08203,-0.02416 -2.460938,-1.026701 -2.460938,-3.841068 0,-2.439924 1.875,-3.539097 1.980469,-3.623649 -1.242187,-1.835982 -3.128906,-1.884298 -3.644531,-1.884298 -1.394531,0 -2.53125,0.869676 -3.246094,0.869676 -0.773437,0 -1.792969,-0.82136 -3,-0.82136 -2.296875,0 -4.628906,1.95677 -4.628906,5.652892 0,2.294978 0.867187,4.722823 1.933594,6.293071 C 23.347656,33.912905 24.144531,35 25.292969,35 Z"
|
||||||
|
id=""
|
||||||
|
fill="#000000"
|
||||||
|
fill-rule="nonzero" />
|
||||||
|
</g>
|
||||||
|
<metadata
|
||||||
|
id="metadata1">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:title>Black Logo Square</dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
62
front/v2/public/assets/external/google-original-wordmark-logo.svg
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 126.21541 50"
|
||||||
|
version="1.1"
|
||||||
|
id="svg6"
|
||||||
|
sodipodi:docname="google-original-wordmark-logo.svg"
|
||||||
|
width="126.21541"
|
||||||
|
height="50"
|
||||||
|
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs6" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview6"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="6.3046875"
|
||||||
|
inkscape:cx="62.969021"
|
||||||
|
inkscape:cy="20.698885"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1912"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg6" />
|
||||||
|
<g
|
||||||
|
id="g6"
|
||||||
|
transform="matrix(0.99497334,0,0,1,-0.70221983,-39.451556)">
|
||||||
|
<path
|
||||||
|
fill="#4885ed"
|
||||||
|
d="M 31.85,57.91 H 17.09 v 4.38 h 10.47 c -0.52,6.14 -5.63,8.76 -10.45,8.76 a 11.7,11.7 0 0 1 0,-23.4 11.36,11.36 0 0 1 7.89,3.17 l 3.07,-3.18 A 15.59,15.59 0 0 0 17,43.26 16.090411,16.090411 0 1 0 17.23,75.44 c 8.61,0 14.92,-5.9 14.92,-14.63 a 13.13,13.13 0 0 0 -0.27,-2.9 z"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
fill="#db3236"
|
||||||
|
d="M 43.94,54.74 A 10.34,10.34 0 1 0 54.32,65.12 10.22,10.22 0 0 0 43.94,54.74 Z M 44,58.8 A 6.29,6.29 0 1 1 38.08,65.06 5.95,5.95 0 0 1 44,58.8 Z"
|
||||||
|
id="path2" />
|
||||||
|
<path
|
||||||
|
fill="#f4c20d"
|
||||||
|
d="M 66.56,54.74 A 10.34,10.34 0 1 0 76.93,65.12 10.22,10.22 0 0 0 66.56,54.74 Z m 0.06,4.06 a 6.29,6.29 0 1 1 -5.92,6.26 5.95,5.95 0 0 1 5.92,-6.26 z"
|
||||||
|
id="path3" />
|
||||||
|
<path
|
||||||
|
fill="#4885ed"
|
||||||
|
d="m 88.73,54.75 c -5.56,0 -9.93,4.87 -9.93,10.33 a 10.2,10.2 0 0 0 9.83,10.35 6.83,6.83 0 0 0 5.67,-2.51 v 2 c 0,3.57 -2.17,5.7 -5.44,5.7 A 5.73,5.73 0 0 1 83.58,77 l -4,1.66 a 10,10 0 0 0 9.3,6.09 c 5.53,0 9.74,-3.48 9.74,-10.78 v -18.6 h -4.31 v 1.75 a 7.32,7.32 0 0 0 -5.58,-2.37 z m 0.4,4.05 c 2.73,0 5.52,2.33 5.52,6.3 0,3.97 -2.79,6.27 -5.58,6.27 a 5.88,5.88 0 0 1 -5.72,-6.23 c 0,-4 2.86,-6.34 5.78,-6.34 z"
|
||||||
|
id="path4" />
|
||||||
|
<path
|
||||||
|
fill="#db3236"
|
||||||
|
d="m 117.93,54.72 c -5.24,0 -9.65,4.17 -9.65,10.33 a 10,10 0 0 0 10.15,10.38 10.49,10.49 0 0 0 8.66,-4.54 l -3.58,-2.38 a 5.79,5.79 0 0 1 -5.07,2.85 5.32,5.32 0 0 1 -5.07,-3.13 l 13.87,-5.75 -0.72,-1.69 a 9.36,9.36 0 0 0 -8.6,-6.06 z m 0.18,4 a 4.12,4.12 0 0 1 3.83,2.21 l -9.26,3.87 a 5.74,5.74 0 0 1 5.43,-6.08 z"
|
||||||
|
id="path5" />
|
||||||
|
<path
|
||||||
|
fill="#3cba54"
|
||||||
|
d="m 101.67,74.82 h 4.56 V 44.33 h -4.56 z"
|
||||||
|
id="path6" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
21
front/v2/public/assets/external/meta-logo.svg
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<svg width="512px" height="104px" viewBox="0 0 512 104" version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid">
|
||||||
|
<title>Meta</title>
|
||||||
|
<defs>
|
||||||
|
<linearGradient x1="13.8784354%" y1="55.9337491%" x2="89.143574%" y2="58.6936324%" id="linearGradient-1">
|
||||||
|
<stop stop-color="#0064E1" offset="0%"/>
|
||||||
|
<stop stop-color="#0064E1" offset="40%"/>
|
||||||
|
<stop stop-color="#0073EE" offset="83%"/>
|
||||||
|
<stop stop-color="#0082FB" offset="100%"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient x1="54.3150272%" y1="82.782443%" x2="54.3150272%" y2="39.3067715%" id="linearGradient-2">
|
||||||
|
<stop stop-color="#0082FB" offset="0%"/>
|
||||||
|
<stop stop-color="#0064E0" offset="100%"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g>
|
||||||
|
<path d="M16.7750211,68.0290295 C16.7750211,73.9591561 18.0766245,78.5120675 19.7778903,81.2664979 C22.0084388,84.8742616 25.3353586,86.4027004 28.7270886,86.4027004 C33.1017722,86.4027004 37.1037975,85.3171308 44.8162025,74.6504641 C50.9947679,66.1009283 58.2751055,54.1002532 63.1736709,46.5768776 L71.4693671,33.8308861 C77.2320675,24.978903 83.9021097,15.1385654 91.5497046,8.46852321 C97.7930802,3.02447257 104.527932,0 111.305992,0 C122.68557,0 133.525063,6.59443038 141.820759,18.9623629 C150.899578,32.5076793 155.306667,49.5689451 155.306667,67.1756962 C155.306667,77.6425316 153.243544,85.3333333 149.732996,91.4092827 C146.341266,97.2854008 139.730633,103.156118 128.610295,103.156118 L128.610295,86.4027004 C138.131983,86.4027004 140.508354,77.6533333 140.508354,67.6401688 C140.508354,53.3711392 137.181435,37.535865 129.852489,26.221097 C124.651477,18.195443 117.911224,13.2914768 110.495865,13.2914768 C102.475612,13.2914768 96.0216034,19.3404219 88.76827,30.1259072 C84.9120675,35.8562025 80.9532489,42.8394937 76.5083544,50.7193249 L71.6151899,59.3876793 C61.785654,76.8162025 59.295865,80.7858228 54.381097,87.3370464 C45.7667511,98.8084388 38.4108017,103.156118 28.7270886,103.156118 C17.2394937,103.156118 9.97535865,98.1819409 5.4764557,90.6855696 C1.80388186,84.5772152 0,76.5623629 0,67.4295359 L16.7750211,68.0290295 Z" fill="#0081FB"/>
|
||||||
|
<path d="M13.2266667,20.1451477 C20.9174684,8.29029536 32.0162025,0 44.7459916,0 C52.1181435,0 59.4470886,2.18194093 67.1000844,8.4307173 C75.4713924,15.2627848 84.3935865,26.5127426 95.5247257,45.0538397 L99.5159494,51.7076793 C109.151055,67.7589873 114.632911,76.0168776 117.841013,79.9108861 C121.967257,84.9120675 124.856709,86.4027004 128.610295,86.4027004 C138.131983,86.4027004 140.508354,77.6533333 140.508354,67.6401688 L155.306667,67.1756962 C155.306667,77.6425316 153.243544,85.3333333 149.732996,91.4092827 C146.341266,97.2854008 139.730633,103.156118 128.610295,103.156118 C121.697215,103.156118 115.572658,101.654684 108.8,95.2654852 C103.593586,90.361519 97.5068354,81.6499578 92.8243038,73.8187342 L78.8955274,50.5518987 C71.9068354,38.8752743 65.4960338,30.1691139 61.785654,26.2264979 C57.7944304,21.9868354 52.6636287,16.8668354 44.4759494,16.8668354 C37.8491139,16.8668354 32.2214346,21.516962 27.5118987,28.6298734 L13.2266667,20.1451477 Z" fill="url(#linearGradient-1)"/>
|
||||||
|
<path d="M44.4759494,16.8668354 C37.8491139,16.8668354 32.2214346,21.516962 27.5118987,28.6298734 C20.8526582,38.6808439 16.7750211,53.6519831 16.7750211,68.0290295 C16.7750211,73.9591561 18.0766245,78.5120675 19.7778903,81.2664979 L5.4764557,90.6855696 C1.80388186,84.5772152 0,76.5623629 0,67.4295359 C0,50.8219409 4.55831224,33.5122363 13.2266667,20.1451477 C20.9174684,8.29029536 32.0162025,0 44.7459916,0 L44.4759494,16.8668354 Z" fill="url(#linearGradient-2)"/>
|
||||||
|
<path d="M187.916962,3.2621097 L207.322194,3.2621097 L240.315949,62.9522363 L273.315105,3.2621097 L292.299072,3.2621097 L292.299072,101.341435 L276.469198,101.341435 L276.469198,26.1724895 L247.531477,78.2258228 L232.679156,78.2258228 L203.746835,26.1724895 L203.746835,101.341435 L187.916962,101.341435 L187.916962,3.2621097 Z M341.900422,39.8312236 C330.547848,39.8312236 323.71038,48.3753586 322.073924,58.9556118 L360.603544,58.9556118 C359.80962,48.0567089 353.523038,39.8312236 341.900422,39.8312236 Z M306.379072,64.9829536 C306.379072,42.7206751 320.76692,26.5181435 342.175865,26.5181435 C363.233755,26.5181435 375.80692,42.515443 375.80692,66.1711392 L375.80692,70.5188186 L322.073924,70.5188186 C323.980422,82.0280169 331.617215,89.7836287 343.931139,89.7836287 C353.755274,89.7836287 359.896034,86.7861603 365.718143,81.3043038 L374.127257,91.6037131 C366.204219,98.8894515 356.126245,103.091308 343.369451,103.091308 C320.19443,103.091308 306.379072,86.1920675 306.379072,64.9829536 Z M395.001519,41.235443 L380.430042,41.235443 L380.430042,28.2734177 L395.001519,28.2734177 L395.001519,6.83746835 L410.275105,6.83746835 L410.275105,28.2734177 L432.413165,28.2734177 L432.413165,41.235443 L410.275105,41.235443 L410.275105,74.0887764 C410.275105,85.3063291 413.861266,89.2921519 422.675443,89.2921519 C426.699072,89.2921519 429.005232,88.9464979 432.413165,88.3794093 L432.413165,101.201013 C428.168101,102.4 424.117468,102.950886 419.731983,102.950886 C403.243207,102.950886 395.001519,93.9422785 395.001519,75.9088608 L395.001519,41.235443 Z M496.726414,53.8410127 C493.658734,46.0962025 486.815865,40.3929114 476.759494,40.3929114 C463.689451,40.3929114 455.323544,49.6661603 455.323544,64.7723207 C455.323544,79.5004219 463.025148,89.2219409 476.132996,89.2219409 C486.437806,89.2219409 493.793755,83.2270042 496.726414,75.7684388 L496.726414,53.8410127 Z M512,101.341435 L497.007257,101.341435 L497.007257,91.1122363 C492.816203,97.1341772 485.190211,103.091308 472.838481,103.091308 C452.974177,103.091308 439.698903,86.4621097 439.698903,64.7723207 C439.698903,42.8772996 453.292827,26.5181435 473.681013,26.5181435 C483.758987,26.5181435 491.665823,30.547173 497.007257,37.6600844 L497.007257,28.2734177 L512,28.2734177 L512,101.341435 Z" fill="#192830"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.8 KiB |
12
front/v2/public/assets/external/microsoft-logo.svg
vendored
Normal file
After Width: | Height: | Size: 9.3 KiB |
26
front/v2/public/assets/icons/add-square-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="add-square">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect data-name="--Rectangle" fill="none" height="20" id="_--Rectangle" rx="2" ry="2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" x="2" y="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="15.5" x2="8.5" y1="12" y2="12"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="15.5" y2="8.5"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 757 B |
24
front/v2/public/assets/icons/add-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g data-name="add" id="add-2">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="19" y2="5"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5" x2="19" y1="12" y2="12"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 562 B |
26
front/v2/public/assets/icons/alert-square-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="alert-circle">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="8" y2="12"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="16" y2="16"/>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" data-name="--Circle" fill="none" id="_--Circle" r="10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 722 B |
28
front/v2/public/assets/icons/align-justify-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="align-justify">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 18 4 18 4 18 20 18 20 18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 14 4 14 4 14 20 14 20 14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 10 4 10 4 10 20 10 20 10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 6 4 6 4 6 20 6 20 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 873 B |
28
front/v2/public/assets/icons/align-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="align-left">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="12.9 18 4.1 18 4.1 18 12.9 18 12.9 18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 14 4 14 4 14 20 14 20 14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="12.9 10 4.1 10 4.1 10 12.9 10 12.9 10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 6 4 6 4 6 20 6 20 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 890 B |
28
front/v2/public/assets/icons/align-right-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="align-right">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="19.9 18 11.1 18 11.1 18 19.9 18 19.9 18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 14 4 14 4 14 20 14 20 14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="19.9 10 11.1 10 11.1 10 19.9 10 19.9 10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="#ffffff" points="20 6 4 6 4 6 20 6 20 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 895 B |
24
front/v2/public/assets/icons/arrow-down-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-down-left">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="5.3 11.6 5.3 18.7 12.4 18.7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="18.7" x2="6.9" y1="5.3" y2="17.1"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 604 B |
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-down-right">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="11.6 18.7 18.7 18.7 18.7 11.6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5.3" x2="17.1" y1="5.3" y2="17.1"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 607 B |
24
front/v2/public/assets/icons/arrow-down-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-down">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="7 16.4 12 21.5 17 16.4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="2.5" y2="19.2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 591 B |
24
front/v2/public/assets/icons/arrow-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-left">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="7.6 7 2.5 12 7.6 17" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="21.5" x2="4.8" y1="12" y2="12"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 588 B |
24
front/v2/public/assets/icons/arrow-right-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-right">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="16.4 7 21.5 12 16.4 17" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="2.5" x2="19.2" y1="12" y2="12"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 592 B |
24
front/v2/public/assets/icons/arrow-up-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-up-left">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="5.3 12.4 5.3 5.3 12.4 5.3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="18.7" x2="6.9" y1="18.7" y2="6.9"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 600 B |
24
front/v2/public/assets/icons/arrow-up-right-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-up-right">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="18.7 12.4 18.7 5.3 11.6 5.3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5.3" x2="17.1" y1="18.7" y2="6.9"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 603 B |
24
front/v2/public/assets/icons/arrow-up-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="arrow-up">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="7 7.5 12 2.5 17 7.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="21.3" y2="4.8"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 586 B |
24
front/v2/public/assets/icons/bell-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="bell">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M18.9,11.2s0-8.7-6.9-8.7-6.9,8.7-6.9,8.7v3.9L2.5,17.5h19l-2.6-2.4Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M14.5,20.5s-.5,1-2.5,1-2.5-1-2.5-1" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 593 B |
24
front/v2/public/assets/icons/browsers-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="browsers">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect fill="none" height="14" rx="2" ry="2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="14" x="3" y="7"/>
|
||||||
|
|
||||||
|
<path d="M8,3H19a2,2,0,0,1,2,2V16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 565 B |
18
front/v2/public/assets/icons/bubble-square-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="bubble-square">
|
||||||
|
|
||||||
|
<path d="M7.7,18.3H19.4a2.1,2.1,0,0,0,2.1-2.1V4.6a2.1,2.1,0,0,0-2.1-2.1H4.6A2.1,2.1,0,0,0,2.5,4.6V21.5Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 473 B |
4
front/v2/public/assets/icons/cart-minus-svgrepo-com.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M21 5L19 12H7.37671M20 16H8L6 3H3M16 6H11M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 596 B |
4
front/v2/public/assets/icons/cart-plus-svgrepo-com.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M21 5L19 12H7.37671M20 16H8L6 3H3M16 5.5H13.5M13.5 5.5H11M13.5 5.5V8M13.5 5.5V3M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 634 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M7.2998 5H22L20 12H8.37675M21 16H9L7 3H4M4 8H2M5 11H2M6 14H2M10 20C10 20.5523 9.55228 21 9 21C8.44772 21 8 20.5523 8 20C8 19.4477 8.44772 19 9 19C9.55228 19 10 19.4477 10 20ZM21 20C21 20.5523 20.5523 21 20 21C19.4477 21 19 20.5523 19 20C19 19.4477 19.4477 19 20 19C20.5523 19 21 19.4477 21 20Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 619 B |
4
front/v2/public/assets/icons/cart-xmark-svgrepo-com.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M21 5L19 12H7.37671M20 16H8L6 3H3M11 3L13.5 5.5M13.5 5.5L16 8M13.5 5.5L16 3M13.5 5.5L11 8M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 644 B |
18
front/v2/public/assets/icons/chevron-down-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Chevron">
|
||||||
|
|
||||||
|
<polyline fill="none" id="Down" points="5 8.5 12 15.5 19 8.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 414 B |
18
front/v2/public/assets/icons/chevron-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Chevron">
|
||||||
|
|
||||||
|
<polyline fill="none" id="Left" points="15.5 5 8.5 12 15.5 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 415 B |
18
front/v2/public/assets/icons/chevron-right-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Chevron">
|
||||||
|
|
||||||
|
<polyline fill="none" id="Right" points="8.5 5 15.5 12 8.5 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 415 B |
18
front/v2/public/assets/icons/circle-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="Circle">
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" data-name="Circle" fill="none" id="Circle-2" r="10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 425 B |
24
front/v2/public/assets/icons/clock-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="Clock">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline fill="none" points="11.9 5.9 11.9 11.9 12 12 14.1 14.1" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" data-name="Circle" fill="none" id="Circle-2" r="10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 590 B |
24
front/v2/public/assets/icons/code-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="Code">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="15.5 7 20.5 12 15.5 17" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polyline data-name="Left" fill="none" id="Left-2" points="8.5 7 3.5 12 8.5 17" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 612 B |
24
front/v2/public/assets/icons/disc-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="Disc">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" data-name="Circle" fill="none" id="Circle-2" r="10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" data-name="Circle" fill="none" id="Circle-3" r="3.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 600 B |
30
front/v2/public/assets/icons/download-svgrepo-com.svg
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="download">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M3,12.3v7a2,2,0,0,0,2,2H19a2,2,0,0,0,2-2v-7" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="7.9 12.3 12 16.3 16.1 12.3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="2.7" y2="14.2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 759 B |
24
front/v2/public/assets/icons/edit-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="edit">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polygon fill="none" points="12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 604 B |
28
front/v2/public/assets/icons/expand-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="expand">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="3 17.3 3 21 6.7 21" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="10" x2="3.8" y1="14" y2="20.2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="14" x2="20.2" y1="10" y2="3.8"/>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-3" points="21 6.7 21 3 17.3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 895 B |
26
front/v2/public/assets/icons/file-add-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-File">
|
||||||
|
|
||||||
|
<g id="Add">
|
||||||
|
|
||||||
|
<path d="M18,22H6a2,2,0,0,1-2-2V4A2,2,0,0,1,6,2h7.1a2,2,0,0,1,1.5.6l4.9,5.2A2,2,0,0,1,20,9.2V20A2,2,0,0,1,18,22Z" fill="none" id="File" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="17" y2="11"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="9" x2="15" y1="14" y2="14"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 782 B |
28
front/v2/public/assets/icons/file-remove-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-File">
|
||||||
|
|
||||||
|
<g id="Remove">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M18,22H6a2,2,0,0,1-2-2V4A2,2,0,0,1,6,2h7.1a2,2,0,0,1,1.5.6l4.9,5.2A2,2,0,0,1,20,9.2V20A2,2,0,0,1,18,22Z" fill="none" id="File" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="9" x2="15" y1="16.5" y2="16.5"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 661 B |
32
front/v2/public/assets/icons/file-text-svgrepo-com.svg
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-File">
|
||||||
|
|
||||||
|
<g id="Text">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M18,22H6a2,2,0,0,1-2-2V4A2,2,0,0,1,6,2h7.1a2,2,0,0,1,1.5.6l4.9,5.2A2,2,0,0,1,20,9.2V20A2,2,0,0,1,18,22Z" fill="none" id="File" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7.9" x2="16.1" y1="17.5" y2="17.5"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7.9" x2="16.1" y1="13.5" y2="13.5"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="13" y1="9.5" y2="9.5"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 949 B |
4
front/v2/public/assets/icons/fingerprint-svgrepo-com.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M6.89258 17.7897C6.9083 17.7633 6.92441 17.7369 6.9409 17.7107C8.14358 15.7988 8.8398 13.5379 8.8398 11.1034C8.8398 9.14189 10.4299 7.55176 12.3915 7.55176C14.353 7.55176 15.9431 9.14189 15.9431 11.1034C15.9431 12.0065 15.8816 12.8957 15.7626 13.7672M13.8825 19.8437C14.4257 18.7596 14.871 17.6179 15.2069 16.4309M18.6156 17.4359C19.1883 15.4236 19.4949 13.2993 19.4949 11.1033C19.4949 7.18026 16.3147 4 12.3916 4C11.0978 4 9.88477 4.34591 8.83997 4.9503M4.40039 14.9783C4.96924 13.8073 5.28831 12.4926 5.28831 11.1033C5.28831 9.8095 5.63422 8.59646 6.2386 7.55166M12.3915 11.1035C12.3915 14.2265 11.4958 17.1403 9.94727 19.6019" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 954 B |
18
front/v2/public/assets/icons/folder-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="folder">
|
||||||
|
|
||||||
|
<path d="M2,18.8V5.3A2.3,2.3,0,0,1,4.3,3H9.6a1.1,1.1,0,0,1,.8.4l2.8,3.2a1.1,1.1,0,0,0,.8.4h5.6A2.2,2.2,0,0,1,22,9.2v9.7A2.2,2.2,0,0,1,19.8,21H4.2A2.2,2.2,0,0,1,2,18.8Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 530 B |
28
front/v2/public/assets/icons/grid-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="grid">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect fill="none" height="7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="7" x="14.5" y="2.5"/>
|
||||||
|
|
||||||
|
<rect fill="none" height="7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="7" x="14.5" y="14.5"/>
|
||||||
|
|
||||||
|
<rect fill="none" height="7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="7" x="2.5" y="2.5"/>
|
||||||
|
|
||||||
|
<rect fill="none" height="7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="7" x="2.5" y="14.5"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 849 B |
4
front/v2/public/assets/icons/id-badge-svgrepo-com.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M14 6H10M15 17C14.7164 15.8589 13.481 15 12 15C10.519 15 9.28364 15.8589 9 17M12 11H12.01M8.2 21H15.8C16.9201 21 17.4802 21 17.908 20.782C18.2843 20.5903 18.5903 20.2843 18.782 19.908C19 19.4802 19 18.9201 19 17.8V6.2C19 5.0799 19 4.51984 18.782 4.09202C18.5903 3.71569 18.2843 3.40973 17.908 3.21799C17.4802 3 16.9201 3 15.8 3H8.2C7.0799 3 6.51984 3 6.09202 3.21799C5.71569 3.40973 5.40973 3.71569 5.21799 4.09202C5 4.51984 5 5.07989 5 6.2V17.8C5 18.9201 5 19.4802 5.21799 19.908C5.40973 20.2843 5.71569 20.5903 6.09202 20.782C6.51984 21 7.07989 21 8.2 21ZM13 11C13 11.5523 12.5523 12 12 12C11.4477 12 11 11.5523 11 11C11 10.4477 11.4477 10 12 10C12.5523 10 13 10.4477 13 11Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1002 B |
26
front/v2/public/assets/icons/info-circle-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="info-circle">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" data-name="--Circle" fill="none" id="_--Circle" r="10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="12" y2="16"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="8" y2="8"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 720 B |
26
front/v2/public/assets/icons/info-square-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="info-square">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect data-name="--Rectangle" fill="none" height="20" id="_--Rectangle" rx="2" ry="2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" x="2" y="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="12" y2="16"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="8" y2="8"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 750 B |
24
front/v2/public/assets/icons/lock-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="lock">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect fill="none" height="10" rx="2" ry="2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="16" x="4" y="11"/>
|
||||||
|
|
||||||
|
<path d="M16.5,11V8h0c0-2.8-.5-5-4.5-5S7.5,5.2,7.5,8h0v3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 585 B |
26
front/v2/public/assets/icons/mail-read-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="mail-read">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline fill="none" points="4 9 12 14 20 9" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polyline fill="none" points="3 8.5 12 3.5 21 8.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M21,8.5v10a2,2,0,0,1-2,2H5a2,2,0,0,1-2-2V8.5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 705 B |
24
front/v2/public/assets/icons/mail-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="mail">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline fill="none" points="4 8.2 12 14.1 20 8.2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<rect fill="none" height="14" rx="2" ry="2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="18" x="3" y="6.5"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 568 B |
28
front/v2/public/assets/icons/maximize-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="maximize">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M3,8V5A2,2,0,0,1,5,3H8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M21,16v3a2,2,0,0,1-2,2H16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M3,16v3a2,2,0,0,0,2,2H8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M21,8V5a2,2,0,0,0-2-2H16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 815 B |
3
front/v2/public/assets/icons/menu-svgrepo-com.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M3 12H21M3 6H21M3 18H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 225 B |
28
front/v2/public/assets/icons/minimize-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="minimize">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M8,3V6A2,2,0,0,1,6,8H3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M16,21V18a2,2,0,0,1,2-2h3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M8,21V18a2,2,0,0,0-2-2H3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M16,3V6a2,2,0,0,0,2,2h3" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 815 B |
18
front/v2/public/assets/icons/minus-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="minus">
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="4" x2="20" y1="12" y2="12"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 397 B |
18
front/v2/public/assets/icons/more-horizontal-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="#000000" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-More">
|
||||||
|
|
||||||
|
<path d="M8,12a2,2,0,1,1-2-2A2,2,0,0,1,8,12Zm10-2a2,2,0,1,0,2,2A2,2,0,0,0,18,10Zm-6,0a2,2,0,1,0,2,2A2,2,0,0,0,12,10Z" id="Horizontal"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 412 B |
18
front/v2/public/assets/icons/more-vertical-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="#000000" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-More">
|
||||||
|
|
||||||
|
<path d="M12,16a2,2,0,1,1-2,2A2,2,0,0,1,12,16ZM10,6a2,2,0,1,0,2-2A2,2,0,0,0,10,6Zm0,6a2,2,0,1,0,2-2A2,2,0,0,0,10,12Z" id="Vertical"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 410 B |
18
front/v2/public/assets/icons/navigation-ne-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="navigation-ne">
|
||||||
|
|
||||||
|
<polyline fill="none" points="21.5 2.5 2.5 10.2 9.6 14.4 13.8 21.5 21.5 2.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 433 B |
18
front/v2/public/assets/icons/navigation-nw-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="navigation-nw">
|
||||||
|
|
||||||
|
<polyline fill="none" points="2.5 2.5 10.2 21.5 14.4 14.4 21.5 10.2 2.5 2.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 433 B |
18
front/v2/public/assets/icons/navigation-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="navigation">
|
||||||
|
|
||||||
|
<polyline fill="none" points="12 2.5 4 21.5 12 19.4 20 21.5 12 2.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 421 B |
28
front/v2/public/assets/icons/push-down-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Push">
|
||||||
|
|
||||||
|
<g id="Down">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Down" fill="none" id="Down-2" points="5 6.1 12 13.1 19 6.1" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5" x2="19" y1="17.9" y2="17.9"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 604 B |
28
front/v2/public/assets/icons/push-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Push">
|
||||||
|
|
||||||
|
<g id="Left">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline fill="none" id="Down" points="17.9 5 10.9 12 17.9 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6.1" x2="6.1" y1="5" y2="19"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 585 B |
28
front/v2/public/assets/icons/push-right-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Push">
|
||||||
|
|
||||||
|
<g id="Right">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline fill="none" id="Down" points="6.1 19 13.1 12 6.1 5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="17.9" x2="17.9" y1="19" y2="5"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 586 B |
28
front/v2/public/assets/icons/push-up-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="F-Push">
|
||||||
|
|
||||||
|
<g id="Up">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Down" fill="none" id="Down-2" points="19 17.9 12 10.9 5 17.9" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="19" x2="5" y1="6.1" y2="6.1"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 602 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M14.9536 14.9458L21 21M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 457 B |
3
front/v2/public/assets/icons/search-svgrepo-com.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M21 21L16.514 16.506L21 21ZM19 10.5C19 15.194 15.194 19 10.5 19C5.806 19 2 15.194 2 10.5C2 5.806 5.806 2 10.5 2C15.194 2 19 5.806 19 10.5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 340 B |
4
front/v2/public/assets/icons/send-alt-2-svgrepo-com.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M20.7639 12H10.0556M3 8.00003H5.5M4 12H5.5M4.5 16H5.5M9.96153 12.4896L9.07002 15.4486C8.73252 16.5688 8.56376 17.1289 8.70734 17.4633C8.83199 17.7537 9.08656 17.9681 9.39391 18.0415C9.74792 18.1261 10.2711 17.8645 11.3175 17.3413L19.1378 13.4311C20.059 12.9705 20.5197 12.7402 20.6675 12.4285C20.7961 12.1573 20.7961 11.8427 20.6675 11.5715C20.5197 11.2598 20.059 11.0295 19.1378 10.5689L11.3068 6.65342C10.2633 6.13168 9.74156 5.87081 9.38789 5.95502C9.0808 6.02815 8.82627 6.24198 8.70128 6.53184C8.55731 6.86569 8.72427 7.42461 9.05819 8.54246L9.96261 11.5701C10.0137 11.7411 10.0392 11.8266 10.0493 11.9137C10.0583 11.991 10.0582 12.069 10.049 12.1463C10.0387 12.2334 10.013 12.3188 9.96153 12.4896Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
24
front/v2/public/assets/icons/sidebar-bottom-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="sidebar-bottom">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect data-name="Square" fill="none" height="18" id="Square-2" rx="2" ry="2" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" width="18" x="3" y="3"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" x1="21" x2="3" y1="15" y2="15"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 558 B |
24
front/v2/public/assets/icons/sidebar-left-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="sidebar-left">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect data-name="Square" fill="none" height="18" id="Square-2" rx="2" ry="2" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" width="18" x="3" y="3"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" x1="9" x2="9" y1="21" y2="3"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 554 B |
24
front/v2/public/assets/icons/sidebar-right-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="sidebar-right">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect data-name="Square" fill="none" height="18" id="Square-2" rx="2" ry="2" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" width="18" x="3" y="3"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" x1="15" x2="15" y1="21" y2="3"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 557 B |
24
front/v2/public/assets/icons/sidebar-top-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="sidebar-top">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect data-name="Square" fill="none" height="18" id="Square-2" rx="2" ry="2" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" width="18" x="3" y="3"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" x1="21" x2="3" y1="9" y2="9"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 553 B |
24
front/v2/public/assets/icons/signal-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="signal">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M2.5,12A9.5,9.5,0,1,1,12,21.5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<path d="M7.5,12A4.5,4.5,0,1,1,12,16.5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 553 B |
26
front/v2/public/assets/icons/stopwatch-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="stopwatch">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="10.8" y2="14"/>
|
||||||
|
|
||||||
|
<circle cx="12" cy="14.5" data-name="Circle" fill="none" id="Circle-2" r="7.9" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<polyline fill="none" points="12 5.5 12 1.5 9 1.5 15 1.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 730 B |
32
front/v2/public/assets/icons/support-svgrepo-com.svg
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="support">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" fill="none" r="4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" transform="translate(-5 12) rotate(-45)"/>
|
||||||
|
|
||||||
|
<circle cx="12" cy="12" fill="none" r="10" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" transform="translate(-5 12) rotate(-45)"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5" x2="9" y1="5" y2="9"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="15" x2="19" y1="9" y2="5"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="15" x2="19" y1="15" y2="19"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="9" x2="5" y1="15" y2="19"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
18
front/v2/public/assets/icons/thumbs-down-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="thumbs-down">
|
||||||
|
|
||||||
|
<path d="M7.3,12.6,10.1,21a.6.6,0,0,0,.8.3l1-.5a2.6,2.6,0,0,0,1.4-2.3V14.6h6.4a2,2,0,0,0,1.9-2.5l-2-8a2,2,0,0,0-1.9-1.5H4.3a2,2,0,0,0-2,2v6a2,2,0,0,0,2,2h3V2.6" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 527 B |
18
front/v2/public/assets/icons/thumbs-up-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="thumbs-up">
|
||||||
|
|
||||||
|
<path d="M7.3,11.4,10.1,3a.6.6,0,0,1,.8-.3l1,.5a2.6,2.6,0,0,1,1.4,2.3V9.4h6.4a2,2,0,0,1,1.9,2.5l-2,8a2,2,0,0,1-1.9,1.5H4.3a2,2,0,0,1-2-2v-6a2,2,0,0,1,2-2h3v10" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 524 B |
18
front/v2/public/assets/icons/tick-svgrepo-com.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="tick">
|
||||||
|
|
||||||
|
<polyline fill="none" points="3.7 14.3 9.6 19 20.3 5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 401 B |
24
front/v2/public/assets/icons/unlock-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="unlock">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<rect fill="none" height="10" rx="2" ry="2" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="16" x="4" y="11"/>
|
||||||
|
|
||||||
|
<path d="M16.5,11V8h0c0-2.8-.5-5-4.5-5" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 569 B |
30
front/v2/public/assets/icons/upload-svgrepo-com.svg
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="upload">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M3,12.3v7a2,2,0,0,0,2,2H19a2,2,0,0,0,2-2v-7" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<polyline data-name="Right" fill="none" id="Right-2" points="7.9 6.7 12 2.7 16.1 6.7" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="12" x2="12" y1="16.3" y2="4.8"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 754 B |
28
front/v2/public/assets/icons/user-add-svgrepo-com.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="user-add">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M17,21V19a4,4,0,0,0-4-4H5a4,4,0,0,0-4,4v2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<circle cx="9" cy="7" fill="none" r="4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="17" x2="23" y1="11" y2="11"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="20" x2="20" y1="8" y2="14"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 832 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M12 14.0709C11.6734 14.0242 11.3395 14 11 14C7.13401 14 4 17.134 4 21H14M17.997 18C18.997 17 19.997 16.6046 19.997 15.5C19.997 14.3954 19.1016 13.5 17.997 13.5C17.0651 13.5 16.282 14.1374 16.06 15M17.997 21H18.007M15 7C15 9.20914 13.2091 11 11 11C8.79086 11 7 9.20914 7 7C7 4.79086 8.79086 3 11 3C13.2091 3 15 4.79086 15 7Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 644 B |
26
front/v2/public/assets/icons/user-remove-svgrepo-com.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="user-remove">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M17,21V19a4,4,0,0,0-4-4H5a4,4,0,0,0-4,4v2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<circle cx="9" cy="7" fill="none" r="4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<line fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="17" x2="23" y1="11" y2="11"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 697 B |
24
front/v2/public/assets/icons/user-svgrepo-com.svg
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
|
||||||
|
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<title/>
|
||||||
|
|
||||||
|
<g id="Complete">
|
||||||
|
|
||||||
|
<g id="user">
|
||||||
|
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<path d="M20,21V19a4,4,0,0,0-4-4H8a4,4,0,0,0-4,4v2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
<circle cx="12" cy="7" fill="none" r="4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 552 B |