added bootstrap icons

This commit is contained in:
Frede Hundewadt 2022-09-06 12:28:44 +02:00
parent eb22d5b151
commit dda16f22ec
1892 changed files with 4206 additions and 21368 deletions

View file

@ -20,7 +20,6 @@
<table class="table table-bordered d-print-table table-striped">
<thead>
<tr class="bg-dark text-white opacity-75 border-bottom">
<th></th>
<th scope="col">Kunde</th>
<th scope="col">Bynavn</th>
<th scope="col">Demo</th>
@ -31,41 +30,45 @@
<th class="text-center" scope="col"><i class="oi oi-phone"></i></th>
<th class="text-center" scope="col"><i class="oi oi-flash"></i></th>
<th class="text-center" scope="col"><i class="oi oi-calculator"></i></th>
<th class="text-center" scope="col"><i class="bi bi-box"></i></th>
</tr>
</thead>
<tbody>
@foreach (var activity in Activities)
{
<tr>
<td class="state align-middle">
@activity.ProcessStatusEnum
@* <DisplayStateComponent StateClass="@(GetProcessStatus(activity.ProcessStatusEnum))" /> *@
</td>
<td>@activity.Company.Name</td>
<td>@activity.Company.City</td>
<td>@activity.Demo</td>
<td>@activity.Sales</td>
<td>@activity.OfficeNote</td>
<td class="text-end">@($"{activity.SasAmount:N2}")</td>
<td class="text-end">@(activity.StatusTypeEnum == "Quote" ? $"{0:N2}" : $"{activity.OrderAmount:N2}")</td>
<td class="text-center">
<td class="align-middle"><a href="/office/customers/@activity.Company.CompanyId/orders/@activity.ActivityId">@activity.Company.Name</a></td>
<td class="align-middle">@activity.Company.City</td>
<td class="align-middle">@activity.Demo</td>
<td class="align-middle">@activity.Sales</td>
<td class="align-middle">@activity.OfficeNote</td>
<td class="align-middle text-end">@($"{activity.SasAmount:N2}")</td>
<td class="align-middle text-end">@(activity.StatusTypeEnum == "Quote" ? $"{0:N2}" : $"{activity.OrderAmount:N2}")</td>
<td class="align-middle text-center">
@if (activity.OurRef.Contains("T:"))
{<i class="oi oi-phone"></i>}
</td>
<td class="text-center">
<td class="align-middle text-center">
@if (activity.Express)
{<i class="oi oi-flash"></i>}
</td>
<td class="text-end">
<td class="align-middle text-end">
@if (activity.StatusTypeEnum == "Quote")
{<i class="oi oi-calculator"></i>}
</td>
<td class="align-middle state">
@if (activity.Lines.Any())
{
<ProcessStateComponent StateClass="@GetProcessStatus(activity.ProcessStatusEnum)"/>
}
</td>
</tr>
}
<tr>
<td colspan="5"></td>
<td class="text-end">Total</td>
<td class="text-end">@Activities.Where(x => x.StatusTypeEnum == "Order").Sum(x => x.OrderAmount)</td>
<td colspan="5" class="bg-light"></td>
<td class="align-middle text-center">Total</td>
<td class="align-middle text-end">@Activities.Where(x => x.StatusTypeEnum == "Order").Sum(x => x.OrderAmount)</td>
<td colspan="4" class="bg-light"></td>
</tr>
</tbody>
</table>

View file

@ -21,16 +21,22 @@ namespace Wonky.Client.Components;
public partial class ActivityTableComponent
{
[Parameter] public List<ReportItemView> Activities { get; set; }
[Inject] private NavigationManager _navigator { get; set; }
private static string GetProcessStatus(string processStatus)
{
return processStatus.ToLower() switch
{
"none" => "the-draw",
"picked" => "the-good",
"packed" => "the-bad",
"shipped" => "the-ugly",
"none" => "the-ugly-fg",
"picked" => "the-bad-fg",
"packed" => "the-good-fg",
"shipped" => "the-draw-fg",
_ => "the-dead"
};
}
private void ShowOrder(string companyId, string orderId)
{
_navigator.NavigateTo($"office/customers/{companyId}/orders/{orderId}");
}
}

View file

@ -15,65 +15,47 @@
//
*@
<ul class="list-group">
<li class="list-group-item">
<div class="row">
<div class="col-2">
<img class="state the-good rounded-circle me-1" src="state.png" alt="state"/>
</div>
<div class="col-10">
Er nylig besøgt
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="col-2">
<img class="state the-bad rounded-circle me-1" src="state.png" alt="state"/>
</div>
<div class="col-10">
Planlagt besøg
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="col-2">
<img class="state the-ugly rounded-circle me-1" src="state.png" alt="state"/>
</div>
<div class="col-10">
Besøgsinterval overskredet
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="col-2">
<img class="state the-draw rounded-circle me-1" src="state.png" alt="state"/>
</div>
<div class="col-10">
Ajourfør besøgsdato/interval
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="col-2">
<img class="state no-vat rounded-circle me-1" src="state.png" alt="state"/>
</div>
<div class="col-10">
CVR/ORG nummer ugyldig
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="col-2">
<img class="state the-dead rounded-circle me-1" src="state.png" alt="state"/>
</div>
<div class="col-10">
Virksomhed ophørt
</div>
</div>
</li>
</ul>
<table class="table">
<thead>
<tr>
<th scope="colgroup" colspan="2">Besøg status</th>
<th scope="colgroup" colspan="2">Pakning/Forsendelse</th>
</tr>
</thead>
<tr>
<td><img class="state the-good rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Er nylig besøgt</td>
<td><img class="state the-ugly rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Ubehandlet</td>
</tr>
<tr>
<td><img class="state the-bad rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Planlagt</td>
<td><img class="state the-bad rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Varer er plukket</td>
</tr>
<tr>
<td><img class="state the-ugly rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Interval Overskredet</td>
<td><img class="state the-good rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Ordre er pakket</td>
</tr>
<tr>
<td><img class="state the-draw rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Ajourfør besøgsdato/interval</td>
<td><img class="state the-draw rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Pakken er afsendt</td>
</tr>
<tr>
<td><img class="state the-dead rounded-circle me-1" src="state.png" alt="state"/></td>
<td>Virksomhed ophørt</td>
<td></td>
<td></td>
</tr>
<tr>
<td><img class="state no-vat rounded-circle me-1" src="state.png" alt="state"/></td>
<td>CVR/ORG nummer ugyldig</td>
<td></td>
<td></td>
</tr>
</table>

View file

@ -15,6 +15,7 @@
//
*@
@* <img class="state the-draw rounded-circle me-1" src="state.png" alt="state"/> *@
<img class="img-fluid float-start border border-secondary rounded-circle state @StateClass me-1" src="state.png" alt="state"/>
@code{
[Parameter] public string StateClass { get; set; } = "";

View file

@ -20,7 +20,7 @@
<PageTitle>Inno Web CRM</PageTitle>
<div class="card mb-3" style="max-width: 300px">
@*<div class="card mb-3" style="max-width: 300px">
<div class="row g-0">
<div class="col-4">
<i class="img-fluid rounded-start fi fi-dk" alt="dk flag"></i>
@ -57,4 +57,4 @@
</div>
</div>
</div>
</div>
</div>*@

View file

@ -21,6 +21,7 @@ using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.VisualBasic;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Client.Shared;

View file

@ -21,6 +21,7 @@ using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.VisualBasic;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Client.Shared;

View file

@ -16,6 +16,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;

View file

@ -28,7 +28,7 @@ namespace Wonky.Client.Components
[Parameter] public EventCallback<string> OnChanged { get; set; }
private Dictionary<string, string> Items { get; set; } = new();
private Preferences _preferences = new();
private string? Selection { get; set; }
private string Selection { get; set; } = "";
protected override async Task OnInitializedAsync()
{
UserPreferenceService.OnChange += ProfileServiceOnOnChange;

View file

@ -27,7 +27,7 @@ namespace Wonky.Client.Components
[Parameter] public int Spread { get; set; }
[Parameter] public EventCallback<int> SelectedPage { get; set; }
private List<PagingLink>? _links;
private List<PagingLink> _links { get; set; } = new();
protected override void OnParametersSet()
{

View file

@ -15,8 +15,24 @@
//
*@
@* <img class="state the-draw rounded-circle me-1" src="state.png" alt="state"/> *@
<img class="img-fluid float-start border border-secondary rounded-circle state @StateClass me-1" src="state.png" alt="state"/>
<i class="bi bi-@_icon @StateClass"></i>
@* <svg class="bi bi-exclamation-triangle text-success" width="32" height="32" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> *@
@* ... *@
@* </svg> *@
@code{
[Parameter] public string StateClass { get; set; } = "";
private string _icon { get; set; } = "";
protected override void OnParametersSet()
{
_icon = StateClass switch
{
"the-ugly-fg" => "square",
"the-bad-fg" => "box2",
"the-good-fg" => "box-seam-fill",
"the-draw-fg" => "truck",
_ => "question-square"
};
}
}

View file

@ -34,7 +34,7 @@
}
@if (ReportItem.Express)
{
<h3 class="fw-bold text-center">HASTER</h3>
<h2 class="fw-bold text-center">HASTER</h2>
}
</div>
</th>
@ -126,7 +126,5 @@
</div>
@code{
[Parameter]
public ReportItemView ReportItem { get; set; } = new();
[Parameter] public ReportItemView ReportItem { get; set; } = new();
}

View file

@ -22,7 +22,7 @@ namespace Wonky.Client.Components;
public partial class VatNumberInputComponent : IDisposable
{
[Parameter] public string VatNumber { get; set; } = "";
private EditContext? _editVatNumber;
private EditContext _editVatNumber { get; set; }
private bool _formInvalid = true;
[Parameter] public EventCallback<string> OnValidSubmit { get; set; }

View file

@ -18,23 +18,27 @@
<div class="row mb-3">
<div class="col-md-8">
<div class="btn-group-lg" role="group" aria-label="Ordre status">
<input type="radio" class="btn-check" name="btnorder" id="btnorder1" autocomplete="off" checked @onchange="@GetOrderStatusNone" />
<label class="btn btn-danger" for="btnorder1">Ubehandlet</label>
<input type="radio" class="btn-check" name="btn-order" id="btn-order1" autocomplete="off" checked @onchange="@GetOrderStatusNone" />
<label class="btn btn-danger" for="btn-order1">Ubehandlet</label>
<input type="radio" class="btn-check" name="btnorder" id="btnorder2" autocomplete="off" @onchange="@GetOrderStatusPicked"/>
<label class="btn btn-warning" for="btnorder2">Plukket</label>
<input type="radio" class="btn-check" name="btn-order" id="btn-order2" autocomplete="off" @onchange="@GetOrderStatusPicked"/>
<label class="btn btn-warning" for="btn-order2">Plukket</label>
<input type="radio" class="btn-check" name="btnorder" id="btnorder3" autocomplete="off" @onchange="@GetOrderStatusPacked" />
<label class="btn btn-success" for="btnorder3">Pakket</label>
<input type="radio" class="btn-check" name="btn-order" id="btn-order3" autocomplete="off" @onchange="@GetOrderStatusPacked" />
<label class="btn btn-success" for="btn-order3">Pakket</label>
<input type="radio" class="btn-check" name="btnorder" id="btnorder4" autocomplete="off" @onchange="@GetOrderStatusShipped" />
<label class="btn btn-info" for="btnorder4">Afsendt</label>
<input type="radio" class="btn-check" name="btn-order" id="btn-order4" autocomplete="off" @onchange="@GetOrderStatusShipped" />
<label class="btn btn-info" for="btn-order4">Afsendt</label>
</div>
</div>
<div class="col-md-4">
@if (_readyToShip && _orders.Any())
{
<button type="button" class="btn btn-lg btn-primary text-nowrap" @onclick="SetProcessStatusShipped">Sæt alle afsendt</button>
<button type="button" class="btn btn-lg btn-primary text-nowrap" @onclick="SetAllPackedStatusToShipped">Sæt alle afsendt</button>
}
else
{
<div class="alert alert-info">@_orders.Count forsendelse(r) på listen</div>
}
</div>
</div>
@ -53,7 +57,7 @@
<h4>Postnr. Bynavn</h4>
</div>
<div class="col-md-1 text-center">
<h4>H</h4>
<h4><i class="oi oi-flash"></i></h4>
</div>
<div class="col-md-2">
<h4>Status</h4>
@ -62,7 +66,7 @@
</div>
@foreach (var order in _orders)
{
<a class="list-group-item list-group-item-action" href="warehouse/orders/@order.OrderId">
<a class="list-group-item list-group-item-action" href="warehouse/orders/process/@order.OrderId">
<div class="row">
<div class="col-md-2">
@order.OrderDate

View file

@ -15,8 +15,10 @@
using System.Text.Json;
using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;
@ -24,8 +26,10 @@ namespace Wonky.Client.Components;
public partial class WarehouseListComponent
{
[Parameter] public string Status { get; set; } = "none";
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IWarehouseHttpRepository _warehouseRepo { get; set; }
[Inject] private IToastService _toast { get; set; }
private string _items { get; set; }
private bool _readyToShip;
@ -38,9 +42,24 @@ public partial class WarehouseListComponent
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
await GetOrderStatusNone();
_items = JsonSerializer.Serialize(_orders);
switch (Status.ToLower())
{
case "none":
await GetOrderStatusNone();
break;
case "picked":
await GetOrderStatusPicked();
break;
case "packed":
await GetOrderStatusPacked();
break;
case "shipped":
await GetOrderStatusShipped();
break;
default:
await GetOrderStatusNone();
break;
}
}
private async Task GetOrderStatusNone()
@ -48,6 +67,8 @@ public partial class WarehouseListComponent
Loading = true;
_orders = new List<WarehouseOrderView>();
_orders = await _warehouseRepo.GetWarehouseOrderListByStatus("none");
if(_orders.Any(x => x.Express))
_orders = _orders.OrderByDescending(x => x.Express).ToList();
_readyToShip = false;
Loading = false;
}
@ -72,26 +93,27 @@ public partial class WarehouseListComponent
private async Task GetOrderStatusShipped()
{
_toast.ShowWarning("Det kan tage lidt tid at hente alle.\nVent venligst.\nMåske skal vi tænke over hvor mange vi henter?");
Loading = true;
_orders = new List<WarehouseOrderView>();
var orderList = await _warehouseRepo.GetWarehouseOrderListByStatus("shipped");
_orders = orderList.OrderByDescending(x => x.OrderDate).ToList();
_toast.ShowInfo("Her er de så ....");
_readyToShip = false;
Loading = false;
}
private async Task SetProcessStatusShipped()
private async Task SetAllPackedStatusToShipped()
{
foreach (var order in _orders)
foreach (var order in _orders.Where(order => order.ProcessStatusEnum.ToLower() == "packed"))
{
if (order.ProcessStatusEnum.ToLower() != "packed") continue;
order.ProcessStatusEnum = "shipped";
var process = new WarehouseProcess
{
OrderId = order.OrderId,
ProcessStatusEnum = "shipped"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
order.ProcessStatusEnum = "shipped";
}
}

View file

@ -24,6 +24,7 @@ using Wonky.Client.Features;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Models;
@ -54,25 +55,39 @@ public class ActivityHttpRepository : IActivityHttpRepository
_apiConfig = configuration.Value;
}
public async Task<ReportItemListView> GetActivities(string activityDate)
public async Task<ReportStatusView> GetActivities(string activityDate)
{
var response = await _client
.GetAsync($"{_apiConfig.CrmSale}/date/{activityDate}");
var content = await response.Content.ReadAsStringAsync();
return string.IsNullOrWhiteSpace(content)
? new ReportItemListView()
: JsonSerializer.Deserialize<ReportItemListView>(content, _options);
? new ReportStatusView()
: JsonSerializer.Deserialize<ReportStatusView>(content, _options);
}
public async Task<List<ReportItemView>> GetCustomerActivities(string customerId)
{
var response = await _client.GetAsync($"{_apiConfig.CrmSale}/company/{customerId}");
var content = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<List<ReportItemView>>(content, _options);
}
public async Task<ApiResponseView> CreateActivity(ActivityDto model)
{
Console.WriteLine(JsonSerializer.Serialize(model, _options));
var response = await _client.PostAsJsonAsync($"{_apiConfig.CrmSale}", model, _options);
var content = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<ApiResponseView>(content);
return result!;
}
public async Task<ReportItemView> GetReportItem(string id)
{
var salesItem = await _client
.GetFromJsonAsync<ReportItemView>($"{_apiConfig.CrmSale}/{id}");
return salesItem ?? new ReportItemView();
}
public async Task<ActivityDto> GetActivity(string id)
{
var salesItem = await _client
@ -82,8 +97,7 @@ public class ActivityHttpRepository : IActivityHttpRepository
public async Task<ApiResponseView> AcceptOffer(string id)
{
var response = await _client.PostAsJsonAsync($"{_apiConfig.CrmSale}/{id}/accept", id)
;
var response = await _client.PostAsJsonAsync($"{_apiConfig.CrmSale}/{id}/accept", id);
var content = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<ApiResponseView>(content);
return result!;

View file

@ -17,6 +17,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;

View file

@ -17,6 +17,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Pages;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;

View file

@ -18,6 +18,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -23,6 +23,7 @@ using Wonky.Client.Features;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;

View file

@ -18,6 +18,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Pages;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;

View file

@ -18,6 +18,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -17,6 +17,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.Views;

View file

@ -17,6 +17,7 @@ using System.Net.Http.Json;
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Options;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.Configuration;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -1,6 +1,7 @@
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -18,6 +18,7 @@ using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Entity.Views;
@ -27,7 +28,7 @@ namespace Wonky.Client.Pages;
public partial class AdvisorListActivityTodayPage : IDisposable
{
[Inject] private UserPreferenceService _preferenceService { get; set; }
[Inject] private ILogger<LandingComponentAdvisor> _logger { get; set; }
[Inject] private ILogger<AdvisorListActivityTodayPage> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; }
[Inject] private IActivityHttpRepository _activityRepo { get; set; }

View file

@ -54,4 +54,4 @@
</div>
</div>
<CustomerTableComponent Companies="_companyList" OnDelete="DeleteCompany" />
<AdvisorCustomerTableComponent Companies="_companyList" OnDelete="DeleteCompany" />

View file

@ -20,6 +20,7 @@ using Blazored.LocalStorage;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;

View file

@ -16,6 +16,7 @@
using Microsoft.AspNetCore.Components;
using Toolbelt.Blazor;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;

View file

@ -63,7 +63,7 @@ else
<div class="col-md-4">
<InputSelect id="statusType" class="form-select" @bind-Value="@_draft.ActivityStatusEnum">
<option value="noSale" selected>Ingen salg</option>
@if (!string.IsNullOrEmpty(_draft.VatNumber) && !string.IsNullOrWhiteSpace(_draft.Address1))
@if (!string.IsNullOrEmpty(_draft.VatNumber) && !string.IsNullOrWhiteSpace(_draft.Address1) && _company.HasFolded == 0)
{
<option value="order">Bestilling</option>
<option value="quote">Tilbud</option>

View file

@ -22,6 +22,7 @@ using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services;
using Wonky.Client.Shared;
using Wonky.Entity.DTO;
@ -90,7 +91,6 @@ public partial class AdvisorNewActivityPage : IDisposable
protected override async Task OnInitializedAsync()
{
_editContext = new EditContext(_draft);
_editContext.OnFieldChanged += HandleFieldChanged;
_editContext.OnValidationStateChanged += ValidationChanged;
@ -102,7 +102,6 @@ public partial class AdvisorNewActivityPage : IDisposable
// get company
_company = await _companyRepo.GetCompanyById(CompanyId);
// variable to validate if customer needs phone number update
_phone = _company.Phone;
if (string.IsNullOrWhiteSpace(_company.Phone)
@ -111,7 +110,7 @@ public partial class AdvisorNewActivityPage : IDisposable
{
_company.Phone = _company.Account[..8];
}
// set up identification
_draft.CompanyId = _company.CompanyId;
_draft.BcId = _company.BcId;
@ -120,6 +119,9 @@ public partial class AdvisorNewActivityPage : IDisposable
_draft.ActivityStatusEnum = "noSale";
_draft.VisitTypeEnum = _company.Account is "" or "NY" ? "new" : "recall";
if (_company.HasFolded == 1)
_draft.OrderMessage = "Virksomheden er ophørt.";
// permanent identifications
_draft.SalesRep = _ux.Advisor;

View file

@ -26,6 +26,7 @@ using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.Extensions.Logging;
using Wonky.Client.Helpers;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Models;
using Wonky.Client.Shared;
using Wonky.Entity.DTO;

View file

@ -21,6 +21,7 @@ using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Entity.DTO;

View file

@ -182,31 +182,38 @@
<InputNumber id="interval" class="form-control" @bind-Value="_company.Interval"/>
<ValidationMessage For="@(() => _company.Interval)"></ValidationMessage>
</td>
<td colspan="2"></td>
<td colspan="2">
@if (_company.HasFolded == 1)
{
<button type="button" class="btn btn-info" onclick="@ForceActivity">Aktiver besøg</button>
}
</td>
</tr>
</tbody>
</table>
</div>
<div class="card-footer">
<div class="row">
<div class="col">
<a class="btn btn-light border-dark d-block" href="/companies">Oversigt</a>
</div>
<div class="col">
@* <a class="btn btn-light border-dark d-block" href="/companies/@_company.CompanyId/workplaces">Kemi</a> *@
</div>
<div class="col">
<a class="btn btn-light border-dark d-block" href="/companies/@_company.CompanyId/h/i">Produktkøb</a>
</div>
<div class="col">
<button type="submit" class="btn btn-light border-dark d-block">Gem</button>
</div>
<div class="col">
<ActivityButton ActionLink="@_actionLink"
ButtonText="Besøg"
ButtonType="primary"
Enabled="@_enableActivity">
</ActivityButton>
<div style="display:@(_hideButtons ? "none": "block")">
<div class="card-footer">
<div class="row">
<div class="col">
<a class="btn btn-light border-dark d-block" href="/companies">Kundeliste</a>
</div>
<div class="col">
<a class="btn btn-light border-dark d-block" href="/companies/@_company.CompanyId/activities">Aktivitet</a>
</div>
<div class="col">
<a class="btn btn-light border-dark d-block" href="/companies/@_company.CompanyId/h/i">Produktkøb</a>
</div>
<div class="col">
<button type="submit" class="btn btn-light border-dark d-block">Gem</button>
</div>
<div class="col">
<ActivityButton ActionLink="@_actionLink"
ButtonText="Besøg"
ButtonType="primary"
Enabled="@_enableActivity">
</ActivityButton>
</div>
</div>
</div>
</div>

View file

@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.DataProtection.Repositories;
using Wonky.Client.Helpers;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Models;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
@ -126,11 +127,14 @@ public partial class AdvisorViewCustomerPage : IDisposable
_editContext.OnFieldChanged += HandleFieldChanged;
_editContext.OnValidationStateChanged += ValidationChanged;
}
private void ForceActivity()
{
_enableActivity = _enableActivity == 0 ? 1 : 0;
}
private void HandleFieldChanged(object sender, FieldChangedEventArgs e)
{
_nextVisit = _lastVisit.AddDays(_company.Interval * 7);
// simple validation of VAT format
if (!VatUtils.ValidateFormat(_company.CountryCode, _company.VatNumber))
{
@ -187,6 +191,10 @@ public partial class AdvisorViewCustomerPage : IDisposable
_toast.ShowSuccess("Opdatering er afsendt. Der går nogle minutter inden data er opdateret.");
_company = await _companyRepo.GetCompanyById(_company.CompanyId);
_company.ValidVat = 1;
if (_virkRegInfo.States[0].State.ToLower() != "normal")
{
_company.HasFolded = 1;
}
StateHasChanged();
}
_hideButtons = false;
@ -197,9 +205,9 @@ public partial class AdvisorViewCustomerPage : IDisposable
_vInfos = await _vatService.QueryVirkRegistry(
new VirkParams
{
StreetName = address.StreetName,
HouseNumber = address.HouseNumber,
ZipCode = address.ZipCode
StreetName = address.StreetName.Trim(),
HouseNumber = address.HouseNumber.Trim(),
ZipCode = address.ZipCode.Trim()
});
if (!_vInfos.Any())
@ -209,6 +217,11 @@ public partial class AdvisorViewCustomerPage : IDisposable
private void SelectCompany(string vatNumber, bool syncAll)
{
_virkRegInfo = (from x in _vInfos where x.VatNumber == vatNumber select x).First();
_validVat = _virkRegInfo.States[0].State.ToLower() == "normal";
_company.HasFolded = _validVat ? 1 : 0;
_enableActivity = _validVat ? 1 : 0;
_vatState = _virkRegInfo.States[0].State.ToLower() == "normal" ? "the-good" : "the-dead";
if (syncAll)
{
_company.VatNumber = _virkRegInfo.VatNumber;
@ -245,9 +258,9 @@ public partial class AdvisorViewCustomerPage : IDisposable
{
return new VatAddress
{
ZipCode = model.ZipCode,
StreetName = model.Address1[..pos1],
HouseNumber = Regex.Replace(model.Address1[pos1..], "[^0-9]", "")
ZipCode = model.ZipCode.Trim(),
StreetName = model.Address1[..pos1].Trim(),
HouseNumber = Regex.Replace(model.Address1[pos1..], "[^0-9]", "").Trim()
};
}
// process address2
@ -256,9 +269,9 @@ public partial class AdvisorViewCustomerPage : IDisposable
{
return new VatAddress
{
ZipCode = model.ZipCode,
StreetName = model.Address2[..pos2],
HouseNumber = Regex.Replace(model.Address2[pos2..], "[^0-9]", "")
ZipCode = model.ZipCode.Trim(),
StreetName = model.Address2[..pos2].Trim(),
HouseNumber = Regex.Replace(model.Address2[pos2..], "[^0-9]", "").Trim()
};
}
// return empty model

View file

@ -14,6 +14,7 @@
//
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -18,6 +18,7 @@ using System.Threading.Tasks;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterfaces;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -51,6 +51,6 @@
</div>
</div>
</div>
<CustomerTableComponent Companies="_companyList" />
<AdvisorCustomerTableComponent Companies="_companyList" />
</div>
</div>

View file

@ -16,6 +16,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
@ -27,7 +28,7 @@ public partial class OfficeListAdvisorCustomerPage : IDisposable
{
[Parameter] public string CountryCode { get; set; } = "";
[Inject] private ILogger<AdvisorNewActivityPage> _logger { get; set; }
[Inject] private ILogger<OfficeListAdvisorCustomerPage> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _preferenceService { get; set; }
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }

View file

@ -25,6 +25,6 @@
<h3>Sælgere</h3>
</div>
<div class="card-body">
<AdminAdvisorTableComponent UserList="_salesReps"></AdminAdvisorTableComponent>
<OfficeAvisorTableComponent UserList="_salesReps"></OfficeAvisorTableComponent>
</div>
</div>

View file

@ -15,6 +15,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -24,6 +24,6 @@
</div>
</div>
<div class="card-body">
<CustomerTableComponent Companies="_companyList"></CustomerTableComponent>
<AdvisorCustomerTableComponent Companies="_companyList"></AdvisorCustomerTableComponent>
</div>
</div>

View file

@ -25,7 +25,7 @@ public partial class OfficeListCustomerPage
[Parameter] public string UserId { get; set; } = "";
[Parameter] public string CountryCode { get; set; } = "";
[Inject] private ILogger<AdvisorNewActivityPage> _logger { get; set; }
[Inject] private ILogger<OfficeListCustomerPage> _logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _userPrefs { get; set; }

View file

@ -29,6 +29,6 @@
</div>
</div>
<div class="card-body">
<AdminReportTableComponent CountryCode="@CountryCode" UserId="@UserId" ReportList="@_reports" />
<OfficeReportTableComponent CountryCode="@CountryCode" UserId="@UserId" ReportList="@_reports" />
</div>
</div>

View file

@ -16,6 +16,7 @@
using Microsoft.AspNetCore.Components;
using Toolbelt.Blazor;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;

View file

@ -1,6 +1,6 @@
@using Microsoft.AspNetCore.Authorization
@using Wonky.Client.Components
@attribute [Authorize(Roles = "Office,Warehouse")]
@attribute [Authorize(Roles = "Admin,Office,Warehouse")]
@page "/office/customers/{CompanyId}/orders/new"
<EditForm EditContext="_editContext">

View file

@ -3,6 +3,7 @@ using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Shared;
@ -20,6 +21,7 @@ public partial class OfficeNewOrderPage : IDisposable
[Inject] private IUserHttpRepository _userRepo { get; set; }
[Inject] private ISalesItemHttpRepository _itemRepo { get; set; }
[Inject] private IActivityHttpRepository _activityRepo { get; set; }
[Inject] private ILogger<OfficeNewOrderPage> _logger { get; set; }
private PriceListModal _priceList { get; set; } = new();
private CompanyDto _company { get; set; } = new();
private EditContext _editContext { get; set; }

View file

@ -16,6 +16,7 @@
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;

View file

@ -19,6 +19,7 @@ using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;

View file

@ -15,6 +15,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -16,6 +16,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -17,6 +17,7 @@
using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;
@ -26,7 +27,6 @@ namespace Wonky.Client.Pages;
public partial class ProductInventoryPage : IDisposable
{
[Parameter] public string CompanyId { get; set; } = "";
[Inject] private IHistoryHttpRepository _historyRepo { get; set; }
[Inject] private ICompanyHttpRepository _companyRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }

View file

@ -1,6 +1,7 @@
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;
@ -19,8 +20,6 @@ public partial class SalesActivityViewPage
{
_interceptor.RegisterEvent();
_interceptor.RegisterBeforeSendEvent();
_item = await _activityRepo.GetReportItem(OrderId);
Console.WriteLine(JsonSerializer.Serialize(_item));
}
}

View file

@ -21,6 +21,7 @@ using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
using Wonky.Entity.Requests;
@ -28,14 +29,14 @@ using Wonky.Entity.Views;
namespace Wonky.Client.Pages;
public partial class ItemCatalogPage : IDisposable
public partial class SalesCatalogPage : IDisposable
{
[Inject] private ILocalStorageService _storage { get; set; }
[Inject] private ISalesItemHttpRepository _itemRepo { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private UserPreferenceService _preferenceService { get; set; }
private List<SalesItemView> _items { get; set; } = new();
private MetaData? _metaData { get; set; } = new();
private MetaData _metaData { get; set; } = new();
private CatalogPagingParams _paging = new();
private Preferences _preferences = new();

View file

@ -17,6 +17,7 @@ using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Wonky.Client.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Entity.DTO;
@ -27,7 +28,7 @@ namespace Wonky.Client.Pages;
public partial class TaskItemListPage : IDisposable
{
[Inject] public UserPreferenceService UserPrefs { get; set; }
[Inject] public ILogger<LandingComponentAdvisor> Logger { get; set; }
[Inject] public ILogger<TaskItemListPage> Logger { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private NavigationManager _navigator { get; set; }
[Inject] private ITaskItemHttpRepository _taskItemRepo { get; set; }

View file

@ -18,6 +18,7 @@ using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
@ -28,7 +29,7 @@ public partial class TaskItemViewPage : IDisposable
[Parameter] public string TaskItemId { get; set; }
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private ITaskItemHttpRepository _taskItemRepo { get; set; }
private TaskItemDto? _taskItem = new ();
private TaskItemDto _taskItem = new ();
private EditContext _editContext { get; set; }

View file

@ -1,4 +1,12 @@
@using Wonky.Client.Components
@page "/warehouse/orders"
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize(Roles = "Admin,Warehouse,Office")]
@page "/warehouse/orders/{Status}"
<WarehouseListComponent />
<WarehouseListComponent Status="@Status" />
@code{
[Parameter] public string Status { get; set; } = "none";
}

View file

@ -18,7 +18,7 @@
@using Microsoft.AspNetCore.Authorization
@using Wonky.Client.Components
@attribute [Authorize(Roles = "Admin,Warehouse,Office")]
@page "/warehouse/orders/{OrderId}"
@page "/warehouse/orders/process/{OrderId}"
@if (!string.IsNullOrWhiteSpace(_order.OrderDate))
{

View file

@ -14,8 +14,10 @@
//
using Blazored.Toast.Services;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.Views;
@ -23,10 +25,11 @@ namespace Wonky.Client.Pages;
public partial class WarehouseOrderViewPage : IDisposable
{
[Parameter] public string OrderId { get; set; } = "";
[Parameter] public string OrderId { get; set; } = "";
[Inject] private HttpInterceptorService _interceptor { get; set; }
[Inject] private IWarehouseHttpRepository _warehouseRepo { get; set; }
[Inject] private NavigationManager _navigator { get; set; }
[Inject] private IToastService _toast { get; set; }
private WarehouseOrderView _order { get; set; } = new();
private bool Loading { get; set; }
@ -41,13 +44,14 @@ public partial class WarehouseOrderViewPage : IDisposable
private async Task SetProcessStatusPicked()
{
var process = new WarehouseProcess
{
OrderId = _order.OrderId,
ProcessStatusEnum = "picked"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
_navigator.NavigateTo("/warehouse/orders");
_navigator.NavigateTo("/warehouse/orders/none");
}
private async Task SetProcessStatusPacked()
@ -58,7 +62,7 @@ public partial class WarehouseOrderViewPage : IDisposable
ProcessStatusEnum = "packed"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
_navigator.NavigateTo("/warehouse/orders");
_navigator.NavigateTo("/warehouse/orders/picked");
}
private async Task SetProcessStatusShipped()
@ -69,7 +73,7 @@ public partial class WarehouseOrderViewPage : IDisposable
ProcessStatusEnum = "shipped"
};
await _warehouseRepo.UpdateWarehouseOrderStatus(process);
_navigator.NavigateTo("/warehouse/orders");
_navigator.NavigateTo("/warehouse/orders/packed");
}
public void Dispose()

View file

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
namespace Wonky.Client.Pages;

View file

@ -17,6 +17,7 @@
using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -18,6 +18,7 @@ using System.Text.Json;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Entity.DTO;
using Wonky.Entity.Views;

View file

@ -23,6 +23,7 @@ using Blazored.LocalStorage;
using Blazored.Toast;
using Wonky.Client;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Services;
using Wonky.Client.Shared;

View file

@ -65,6 +65,29 @@
<span class="oi oi-spreadsheet" aria-hidden="true"></span> Priskatalog
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/warehouse/orders">
<span class="oi oi-box" aria-hidden="true"></span> Forsendelse
</NavLink>
</div>
</AuthorizeView>
<AuthorizeView Roles="Office">
<div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/admin/users/advisors">
<span class="oi oi-people" aria-hidden="true"></span> Sælgere
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/price-catalog">
<span class="oi oi-spreadsheet" aria-hidden="true"></span> Priskatalog
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link ps-2" href="/warehouse/orders">
<span class="oi oi-box" aria-hidden="true"></span> Forsendelse
</NavLink>
</div>
</AuthorizeView>
<AuthorizeView Roles="Advisor">

View file

@ -15,6 +15,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Services;

View file

@ -15,6 +15,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Services;

View file

@ -15,6 +15,7 @@
using Microsoft.AspNetCore.Components;
using Wonky.Client.HttpInterceptors;
using Wonky.Client.HttpInterfaces;
using Wonky.Client.HttpRepository;
using Wonky.Client.Models;
using Wonky.Client.Services;

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
{
"appInfo": {
"name": "Wonky Client",
"version": "0.12.1",
"rc": false,
"version": "0.12.30",
"rc": true,
"sandBox": false,
"image": "grumpy-coder.png"
},

View file

@ -1,8 +1,8 @@
@font-face {
font-display: block;
font-family: "bootstrap-icons";
src: url("../icons/fonts/bootstrap-icons.woff2") format("woff2"),
url("../icons/fonts/bootstrap-icons.woff2") format("woff");
src: url("../fonts/bootstrap-icons.woff2") format("woff2"),
url("../fonts/bootstrap-icons.woff2") format("woff");
}
.bi::before,

View file

@ -40,6 +40,20 @@ body {
.the-dead {
background-color: black;
}
.the-good-fg {
color: green;
}
.the-bad-fg {
color: orange;
}
.the-ugly-fg {
color: #ff0000;
}
.the-draw-fg {
color: #9b02fc;
}
/* end state elements */
.btn.btn-edit {

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle-fill" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 278 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-circle" viewBox="0 0 16 16">
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 287 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square-fill" viewBox="0 0 16 16">
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm7.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 294 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square" viewBox="0 0 16 16">
<path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 376 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-123" viewBox="0 0 16 16">
<path d="M2.873 11.297V4.142H1.699L0 5.379v1.137l1.64-1.18h.06v5.961h1.174Zm3.213-5.09v-.063c0-.618.44-1.169 1.196-1.169.676 0 1.174.44 1.174 1.106 0 .624-.42 1.101-.807 1.526L4.99 10.553v.744h4.78v-.99H6.643v-.069L8.41 8.252c.65-.724 1.237-1.332 1.237-2.27C9.646 4.849 8.723 4 7.308 4c-1.573 0-2.36 1.064-2.36 2.15v.057h1.138Zm6.559 1.883h.786c.823 0 1.374.481 1.379 1.179.01.707-.55 1.216-1.421 1.21-.77-.005-1.326-.419-1.379-.953h-1.095c.042 1.053.938 1.918 2.464 1.918 1.478 0 2.642-.839 2.62-2.144-.02-1.143-.922-1.651-1.551-1.714v-.063c.535-.09 1.347-.66 1.326-1.678-.026-1.053-.933-1.855-2.359-1.845-1.5.005-2.317.88-2.348 1.898h1.116c.032-.498.498-.944 1.206-.944.703 0 1.206.435 1.206 1.07.005.64-.504 1.106-1.2 1.106h-.75v.96Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 870 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM6.646 6.24c0-.691.493-1.306 1.336-1.306.756 0 1.313.492 1.313 1.236 0 .697-.469 1.23-.902 1.705l-2.971 3.293V12h5.344v-1.107H7.268v-.077l1.974-2.22.096-.107c.688-.763 1.287-1.428 1.287-2.43 0-1.266-1.031-2.215-2.613-2.215-1.758 0-2.637 1.19-2.637 2.402v.065h1.271v-.07Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 458 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-circle" viewBox="0 0 16 16">
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 480 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square-fill" viewBox="0 0 16 16">
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm4.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 487 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-2-square" viewBox="0 0 16 16">
<path d="M6.646 6.24v.07H5.375v-.064c0-1.213.879-2.402 2.637-2.402 1.582 0 2.613.949 2.613 2.215 0 1.002-.6 1.667-1.287 2.43l-.096.107-1.974 2.22v.077h3.498V12H5.422v-.832l2.97-3.293c.434-.475.903-1.008.903-1.705 0-.744-.557-1.236-1.313-1.236-.843 0-1.336.615-1.336 1.306Z"/>
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 569 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-8.082.414c.92 0 1.535.54 1.541 1.318.012.791-.615 1.36-1.588 1.354-.861-.006-1.482-.469-1.54-1.066H5.104c.047 1.177 1.05 2.144 2.754 2.144 1.653 0 2.954-.937 2.93-2.396-.023-1.278-1.031-1.846-1.734-1.916v-.07c.597-.1 1.505-.739 1.482-1.876-.03-1.177-1.043-2.074-2.637-2.062-1.675.006-2.59.984-2.625 2.12h1.248c.036-.556.557-1.054 1.348-1.054.785 0 1.348.486 1.348 1.195.006.715-.563 1.237-1.342 1.237h-.838v1.072h.879Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 608 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-circle" viewBox="0 0 16 16">
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318Z"/>
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 645 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square-fill" viewBox="0 0 16 16">
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 637 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-3-square" viewBox="0 0 16 16">
<path d="M7.918 8.414h-.879V7.342h.838c.78 0 1.348-.522 1.342-1.237 0-.709-.563-1.195-1.348-1.195-.79 0-1.312.498-1.348 1.055H5.275c.036-1.137.95-2.115 2.625-2.121 1.594-.012 2.608.885 2.637 2.062.023 1.137-.885 1.776-1.482 1.875v.07c.703.07 1.71.64 1.734 1.917.024 1.459-1.277 2.396-2.93 2.396-1.705 0-2.707-.967-2.754-2.144H6.33c.059.597.68 1.06 1.541 1.066.973.006 1.6-.563 1.588-1.354-.006-.779-.621-1.318-1.541-1.318Z"/>
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 719 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM7.519 5.057c-.886 1.418-1.772 2.838-2.542 4.265v1.12H8.85V12h1.26v-1.559h1.007V9.334H10.11V4.002H8.176c-.218.352-.438.703-.657 1.055ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 391 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-circle" viewBox="0 0 16 16">
<path d="M7.519 5.057c.22-.352.439-.703.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 433 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square-fill" viewBox="0 0 16 16">
<path d="M6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.519 5.057c.22-.352.439-.703.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 440 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-4-square" viewBox="0 0 16 16">
<path d="M7.519 5.057c.22-.352.439-.703.657-1.055h1.933v5.332h1.008v1.107H10.11V12H8.85v-1.559H4.978V9.322c.77-1.427 1.656-2.847 2.542-4.265ZM6.225 9.281v.053H8.85V5.063h-.065c-.867 1.33-1.787 2.806-2.56 4.218Z"/>
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 507 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-8.006 4.158c1.74 0 2.924-1.119 2.924-2.806 0-1.641-1.178-2.584-2.56-2.584-.897 0-1.442.421-1.612.68h-.064l.193-2.344h3.621V4.002H5.791L5.445 8.63h1.149c.193-.358.668-.809 1.435-.809.85 0 1.582.604 1.582 1.57 0 1.085-.779 1.682-1.57 1.682-.697 0-1.389-.31-1.53-1.031H5.276c.065 1.213 1.149 2.115 2.72 2.115Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 496 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-circle" viewBox="0 0 16 16">
<path d="M1 8a7 7 0 1 1 14 0A7 7 0 0 1 1 8Zm15 0A8 8 0 1 0 0 8a8 8 0 0 0 16 0Zm-8.006 4.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 516 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square-fill" viewBox="0 0 16 16">
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm5.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 523 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-5-square" viewBox="0 0 16 16">
<path d="M7.994 12.158c-1.57 0-2.654-.902-2.719-2.115h1.237c.14.72.832 1.031 1.529 1.031.791 0 1.57-.597 1.57-1.681 0-.967-.732-1.57-1.582-1.57-.767 0-1.242.45-1.435.808H5.445L5.791 4h4.705v1.103H6.875l-.193 2.343h.064c.17-.258.715-.68 1.611-.68 1.383 0 2.561.944 2.561 2.585 0 1.687-1.184 2.806-2.924 2.806Z"/>
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 605 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8.21 3.855c-1.868 0-3.116 1.395-3.116 4.407 0 1.183.228 2.039.597 2.642.569.926 1.477 1.254 2.409 1.254 1.629 0 2.847-1.013 2.847-2.783 0-1.676-1.254-2.555-2.508-2.555-1.125 0-1.752.61-1.98 1.155h-.082c-.012-1.946.727-3.036 1.805-3.036.802 0 1.213.457 1.312.815h1.29c-.06-.908-.962-1.899-2.573-1.899Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 619 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-circle" viewBox="0 0 16 16">
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 643 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square-fill" viewBox="0 0 16 16">
<path d="M8.111 7.863c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm6.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 665 B

View file

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-6-square" viewBox="0 0 16 16">
<path d="M8.21 3.855c1.612 0 2.515.99 2.573 1.899H9.494c-.1-.358-.51-.815-1.312-.815-1.078 0-1.817 1.09-1.805 3.036h.082c.229-.545.855-1.155 1.98-1.155 1.254 0 2.508.88 2.508 2.555 0 1.77-1.218 2.783-2.847 2.783-.932 0-1.84-.328-2.409-1.254-.369-.603-.597-1.459-.597-2.642 0-3.012 1.248-4.407 3.117-4.407Zm-.099 4.008c-.92 0-1.564.65-1.564 1.576 0 1.032.703 1.635 1.558 1.635.868 0 1.553-.533 1.553-1.629 0-1.06-.744-1.582-1.547-1.582Z"/>
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 732 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM5.37 5.11h3.972v.07L6.025 12H7.42l3.258-6.85V4.002H5.369v1.107Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 252 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-circle" viewBox="0 0 16 16">
<path d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 281 B

View file

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-7-square-fill" viewBox="0 0 16 16">
<path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2Zm3.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 288 B

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