Saving
|
@ -0,0 +1,5 @@
|
||||||
|
<h3>ActionBar</h3>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
<div class="dropdown @CssDirection @(IsOpen ? "is-active" : default)">
|
||||||
|
<div class="dropdown-trigger">
|
||||||
|
@DropdownTrigger
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-menu min-w-full pt-2" id="dropdown-menu6" role="menu">
|
||||||
|
<div class="dropdown-content text-right background neomorph is-nxsmall rounded-lg">
|
||||||
|
@DropdownContent
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter] public RenderFragment DropdownTrigger { get; set; }
|
||||||
|
[Parameter] public RenderFragment DropdownContent { get; set; }
|
||||||
|
[Parameter] public bool IsOpen { get; set; } = false;
|
||||||
|
[Parameter] public string CssDirection { get; set; } = "is-right";
|
||||||
|
|
||||||
|
void OpenCloseOptions()
|
||||||
|
{
|
||||||
|
IsOpen = !IsOpen;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<EditForm Model="">
|
||||||
|
|
||||||
|
</EditForm>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
|
||||||
|
|
||||||
|
namespace decePubClient.Extensions
|
||||||
|
{
|
||||||
|
public class CustomAuthenticationMessageHandler : AuthorizationMessageHandler
|
||||||
|
{
|
||||||
|
public CustomAuthenticationMessageHandler(IAccessTokenProvider provider, NavigationManager navigation)
|
||||||
|
: base(provider, navigation)
|
||||||
|
{
|
||||||
|
ConfigureHandler(new string[] { "https://demo.identityserver.io" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Extensions;
|
||||||
|
|
||||||
|
public class GenericExtensions
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -0,0 +1,106 @@
|
||||||
|
using collAnon.Shared;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Mail;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace collAnon.Client.Helpers
|
||||||
|
{
|
||||||
|
public static class SUtility
|
||||||
|
{
|
||||||
|
public static T IfTrueThen<T>(bool conditionIsTrue, T ifTrue, T ifFalse = default)
|
||||||
|
{
|
||||||
|
if (conditionIsTrue)
|
||||||
|
return ifTrue;
|
||||||
|
else
|
||||||
|
return ifFalse;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TimeBetween(this DateTime datetime, TimeSpan start, TimeSpan end)
|
||||||
|
{
|
||||||
|
// convert datetime to a TimeSpan
|
||||||
|
var now = datetime.TimeOfDay;
|
||||||
|
// see if start comes before end
|
||||||
|
if (start < end)
|
||||||
|
return start <= now && now <= end;
|
||||||
|
// start is after end, so do the inverse comparison
|
||||||
|
return !(end < now && now < start);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool CacheHasExpired(long? lastTimeCacheTimeTicks)
|
||||||
|
{
|
||||||
|
if (!lastTimeCacheTimeTicks.HasValue) return true;
|
||||||
|
return (DateTime.Now.Ticks - lastTimeCacheTimeTicks.Value) > VConstants.CacheExpirationPeriod.Ticks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetFileIcon(string fileName)
|
||||||
|
{
|
||||||
|
switch (Path.GetExtension(fileName))
|
||||||
|
{
|
||||||
|
case ".odp":
|
||||||
|
case ".pptx":
|
||||||
|
return "file-powerpoint";
|
||||||
|
|
||||||
|
case ".ods":
|
||||||
|
case ".xlsx":
|
||||||
|
return "file-excel";
|
||||||
|
|
||||||
|
case ".odt":
|
||||||
|
case ".docx":
|
||||||
|
return "file-word";
|
||||||
|
|
||||||
|
case ".pdf":
|
||||||
|
return "file-pdf";
|
||||||
|
|
||||||
|
case ".jpg":
|
||||||
|
case ".jpeg":
|
||||||
|
case ".png":
|
||||||
|
return "file-image";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "file";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetMissingMimeType(string fileName)
|
||||||
|
{
|
||||||
|
switch (Path.GetExtension(fileName))
|
||||||
|
{
|
||||||
|
case ".docx":
|
||||||
|
return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
|
||||||
|
|
||||||
|
case ".xlsx":
|
||||||
|
return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsValidEmail(string email)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var addr = new MailAddress(email);
|
||||||
|
return addr.Address == email;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetQrCodeBase64(string base64String) => $"data:image/png;base64,{base64String}";
|
||||||
|
|
||||||
|
public static int GetRand()
|
||||||
|
{
|
||||||
|
var random = new Random(DateTime.Now.Millisecond);
|
||||||
|
return random.Next(0, random.Next(10, 1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T Deserialize<T>(string value)
|
||||||
|
{
|
||||||
|
return JsonSerializer.Deserialize<T>(value, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
<h3>CascadingState</h3>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Models;
|
||||||
|
|
||||||
|
public class ActionBarFilter
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
namespace decePubClient.Models
|
||||||
|
{
|
||||||
|
public class AuthData
|
||||||
|
{
|
||||||
|
public string Token { get; set; }
|
||||||
|
public long? TokenExpiration { get; set; }
|
||||||
|
public string CurrentLanguageCode { get; set; } = "en";
|
||||||
|
public User User { get; set; }
|
||||||
|
|
||||||
|
//public bool UserHasPolicies(params string[] policies)
|
||||||
|
//{
|
||||||
|
// var hasAllPolicies = true;
|
||||||
|
// foreach (var policy in policies)
|
||||||
|
// if (!(User?.Policies?.Any(p => p == policy) ?? false))
|
||||||
|
// {
|
||||||
|
// hasAllPolicies = false;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// return hasAllPolicies;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
namespace decePubClient.Models
|
||||||
|
{
|
||||||
|
public class ClientLogs
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public string Where { get; set; }
|
||||||
|
public string WarningMessage { get; set; }
|
||||||
|
public ClientLogException Exception { get; set; }
|
||||||
|
public DateTime TimeStamp { get; set; } = DateTime.Now;
|
||||||
|
public string ErrorMessage()
|
||||||
|
{
|
||||||
|
if (Exception.InnerExceptionMessage != null)
|
||||||
|
{
|
||||||
|
return @$"<b>Type</b>: {Exception.Type ?? "N/A"} <b>HelpLink</b>: {Exception.HelpLink ?? "N/A"} <b>HResult</b>: {Exception.HResult ?? "N/A"}<br>
|
||||||
|
<b>Source</b>: {Exception.Source ?? "N/A"} <b>StackTrace</b>: {Exception.StackTrace ?? "N/A"} <b>MemberName</b>: {Exception.TargetSiteName ?? "N/A"}<br>
|
||||||
|
<b>Message</b>: {Exception.Message ?? "N/A"}<br>
|
||||||
|
<b>InnerExceptionMessage</b>:{Exception.InnerExceptionMessage ?? "N/A"}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return @$"<b>Type</b>: {Exception.Type ?? "N/A"} <b>HelpLink</b>: {Exception.HelpLink ?? "N/A"} <b>HResult</b>: {Exception.HResult ?? "N/A"}<br>
|
||||||
|
<b>Source</b>: {Exception.Source ?? "N/A"} <b>StackTrace</b>: {Exception.StackTrace ?? "N/A"} <b>MemberName</b>: {Exception.TargetSiteName ?? "N/A"}<br>
|
||||||
|
<b>Message</b>: {Exception.Message ?? "N/A"}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ClientLogException
|
||||||
|
{
|
||||||
|
public string Type { get; set; }
|
||||||
|
public string HelpLink { get; set; }
|
||||||
|
public string HResult { get; set; }
|
||||||
|
public string Source { get; set; }
|
||||||
|
public string StackTrace { get; set; }
|
||||||
|
public string TargetSiteName { get; set; }
|
||||||
|
public string Message { get; set; }
|
||||||
|
public string InnerExceptionMessage { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System.Security.Principal;
|
||||||
|
|
||||||
|
namespace decePubClient.Models
|
||||||
|
{
|
||||||
|
public interface CustomIPrincipal : IPrincipal
|
||||||
|
{
|
||||||
|
string UserId { get; set; }
|
||||||
|
string UserName { get; set; }
|
||||||
|
string DisplayName { get; set; }
|
||||||
|
string PictureUrl { get; set; }
|
||||||
|
string ProfileUrl { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System.Security.Principal;
|
||||||
|
|
||||||
|
namespace decePubClient.Models
|
||||||
|
{
|
||||||
|
public class CustomPrincipal : CustomIPrincipal
|
||||||
|
{
|
||||||
|
public string UserId { get; set; }
|
||||||
|
public string UserName { get; set; }
|
||||||
|
public string DisplayName { get; set; }
|
||||||
|
public string PictureUrl { get; set; }
|
||||||
|
public string ProfileUrl { get; set; }
|
||||||
|
public bool IsAdmin { get; set; } = false;
|
||||||
|
public IIdentity Identity { get; }
|
||||||
|
|
||||||
|
public CustomPrincipal(string userName, string authType) =>
|
||||||
|
Identity = new GenericIdentity(userName, authType);
|
||||||
|
|
||||||
|
public bool IsInRole(string role) => false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Models;
|
||||||
|
|
||||||
|
public class MessageForm
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
|
namespace decePubClient.Models
|
||||||
|
{
|
||||||
|
public class PublicCacheData
|
||||||
|
{
|
||||||
|
public IReadOnlyList<ViewLanguage> Languages { get; set; } = new List<ViewLanguage>();
|
||||||
|
public string LastPage { get; set; }
|
||||||
|
public IReadOnlyDictionary<string, string> Policies { get; set; } = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
|
||||||
|
|
||||||
|
public string CurrentLanguageCode { get; set; } = "en-GB";
|
||||||
|
public bool NativeNotificationsEnabled { get; set; } = false;
|
||||||
|
public short ThemeIndexColour { get; set; } = 25;
|
||||||
|
public bool ThemeIsDarkMode { get; set; } = false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Models.Types;
|
||||||
|
|
||||||
|
public class ContentType
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace decePubClient.Models.Types
|
||||||
|
{
|
||||||
|
public enum MediaType
|
||||||
|
{
|
||||||
|
Images,
|
||||||
|
Video,
|
||||||
|
Audio,
|
||||||
|
Documents
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
namespace decePubClient.Models.Types;
|
||||||
|
|
||||||
|
public enum TimeSortingType { }
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace decePubClient.Models.Types
|
||||||
|
{
|
||||||
|
public enum TimelineType
|
||||||
|
{
|
||||||
|
Home,
|
||||||
|
Local,
|
||||||
|
Federation
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Models;
|
||||||
|
|
||||||
|
public class UploadMedia
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace decePubClient.Models
|
||||||
|
{
|
||||||
|
public class ViewLanguage
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string International2Code { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
@page "/administration"
|
||||||
|
|
||||||
|
<section class="block relative w-full h-full neomorphInset is-nxsmall rounded-xl">
|
||||||
|
|
||||||
|
<div class="flex flex-col space-y-4 p-4 md:p-5 w-full h-full absolute overflow-y-auto">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
@page "/expand/{messageId}"
|
||||||
|
<Title>@Localizer</Title>
|
||||||
|
|
||||||
|
<section class="block relative w-full h-full neomorphInset is-nxsmall rounded-xl">
|
||||||
|
|
||||||
|
<div class="flex flex-col space-y-4 p-4 md:p-5 w-full h-full absolute overflow-y-auto">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[CascadingParameter] IStringLocalizer<AllStrings> Localizer { get; set; }
|
||||||
|
[Inject] NavigationManager Navigation { get; set; }
|
||||||
|
[Inject] IStorage DbStorage { get; set; }
|
||||||
|
[SupplyParameterFromQuery] string messageId { get; set; }
|
||||||
|
|
||||||
|
List<Message> Messages { get; set; } = new();
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
if (messageId is { Length: 0 })
|
||||||
|
{
|
||||||
|
Navigation.NavigateTo("/");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var currentMessage = await DbStorage.GetMessage(messageId);
|
||||||
|
|
||||||
|
var messages = await DbStorage.GetMessages();
|
||||||
|
|
||||||
|
if (currentMessage.RootMessageId is { Length: > 0 })
|
||||||
|
Messages = messages.Where(m => m.RootMessageId == currentMessage.RootMessageId)
|
||||||
|
.OrderByDescending(m => m.CreatedAt)
|
||||||
|
.ToList();
|
||||||
|
else
|
||||||
|
Messages = messages.Where(m => m.RootMessageId == messageId)
|
||||||
|
.OrderByDescending(m => m.CreatedAt)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Resources;
|
||||||
|
|
||||||
|
public class AllStrings
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<root>
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>1.3</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Resources;
|
||||||
|
|
||||||
|
public class ErrorMessages
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<root>
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>1.3</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace decePubClient.Resources
|
||||||
|
{
|
||||||
|
public static class ValidationNames
|
||||||
|
{
|
||||||
|
public const string Required = "Required";
|
||||||
|
public const string RequiredWithName = "RequiredWithName";
|
||||||
|
public const string MaxLength = "MaxLength";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
//MEDIA QUERY MANAGER
|
||||||
|
|
||||||
|
/*$breakpoint argument choices:
|
||||||
|
- phone
|
||||||
|
- tab-port
|
||||||
|
- tab-land
|
||||||
|
- desk
|
||||||
|
- big-desktop
|
||||||
|
*/
|
||||||
|
|
||||||
|
@mixin MediaQuery($breakpoint) {
|
||||||
|
// max-width:768px;
|
||||||
|
@if $breakpoint==phone {
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
@content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $breakpoint==tab-p {
|
||||||
|
// min-width:768px;
|
||||||
|
// max-width:900px;
|
||||||
|
@media screen and (min-width: 768px) and (max-width: 900px) {
|
||||||
|
@content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $breakpoint==tab-l {
|
||||||
|
// min-width:901px;
|
||||||
|
// max-width:1200px;
|
||||||
|
@media screen and (min-width: 901px) and (max-width: 1200px) {
|
||||||
|
@content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $breakpoint==laptop {
|
||||||
|
// min-width:1201px;
|
||||||
|
// max-width:1366px;
|
||||||
|
@media screen and (min-width: 1201px) and (max-width: 1366px) {
|
||||||
|
@content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $breakpoint==desk {
|
||||||
|
// min-width:1201px;
|
||||||
|
// max-width:1800px;
|
||||||
|
@media screen and (min-width: 1201px) and (max-width: 1800px) {
|
||||||
|
@content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $breakpoint==big-d {
|
||||||
|
// min-width:1801px;
|
||||||
|
// max-width:4000px;
|
||||||
|
@media screen and (min-width: 1801px) and (max-width: 4000px) {
|
||||||
|
@content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace decePubClient.Services;
|
||||||
|
|
||||||
|
public class AppStatusService
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
using Blazored.LocalStorage;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
using System.Net;
|
||||||
|
using decePubClient.Models;
|
||||||
|
|
||||||
|
namespace decePubClient.Services
|
||||||
|
{
|
||||||
|
public interface IHttpService
|
||||||
|
{
|
||||||
|
Task<HttpResponseMessage> Get(string uri, object payload = default, string?[] queryParams = default);
|
||||||
|
|
||||||
|
Task<HttpResponseMessage> GetAnon(string uri, object payload = default, string?[] queryParams = default);
|
||||||
|
|
||||||
|
Task<HttpResponseMessage> Post(string uri, object payload = default);
|
||||||
|
|
||||||
|
Task<HttpResponseMessage> PostAnon(string uri, object payload = default);
|
||||||
|
|
||||||
|
Task<HttpResponseMessage> Delete(string uri, string?[] queryParams = default, object payload = default);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HttpService : IHttpService
|
||||||
|
{
|
||||||
|
readonly IHttpClientFactory HttpClientFactory;
|
||||||
|
readonly TokenAuthStateProvider AuthStateProvider;
|
||||||
|
readonly ILogger<HttpService> Logger;
|
||||||
|
readonly ILocalStorageService Storage;
|
||||||
|
readonly IStorage DbStorage;
|
||||||
|
|
||||||
|
public HttpService(
|
||||||
|
IHttpClientFactory httpClientFactory,
|
||||||
|
TokenAuthStateProvider authStateProvider,
|
||||||
|
ILogger<HttpService> logger,
|
||||||
|
ILocalStorageService storage,
|
||||||
|
IStorage dbStorage)
|
||||||
|
{
|
||||||
|
HttpClientFactory = httpClientFactory;
|
||||||
|
AuthStateProvider = authStateProvider;
|
||||||
|
Logger = logger;
|
||||||
|
Storage = storage;
|
||||||
|
DbStorage = dbStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<HttpResponseMessage> Get(string uri, object payload = default, string?[] queryParams = default)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uri = $"{CultureInfo.DefaultThreadCurrentCulture.TwoLetterISOLanguageName}/{uri}";
|
||||||
|
var request = default(HttpRequestMessage);
|
||||||
|
if (queryParams != null)
|
||||||
|
request = new(HttpMethod.Get, string.Join('?', uri, string.Join('&', queryParams)));
|
||||||
|
else
|
||||||
|
request = new(HttpMethod.Get, uri);
|
||||||
|
if (payload != null)
|
||||||
|
request.Content = JsonContent.Create(payload);
|
||||||
|
return await SendRequest(request);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(Get)}:{uri}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(Get)}:{uri}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<HttpResponseMessage> Post(string uri, object payload = default)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uri = $"{CultureInfo.DefaultThreadCurrentCulture.TwoLetterISOLanguageName}/{uri}";
|
||||||
|
var request = new HttpRequestMessage(HttpMethod.Post, uri)
|
||||||
|
{
|
||||||
|
Content = JsonContent.Create(payload)
|
||||||
|
};
|
||||||
|
return await SendRequest(request);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(Post)}:{uri}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(Post)}:{uri}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<HttpResponseMessage> GetAnon(string uri, object payload = default, string?[] queryParams = default)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uri = $"{CultureInfo.DefaultThreadCurrentCulture.TwoLetterISOLanguageName}/{uri}";
|
||||||
|
var request = default(HttpRequestMessage);
|
||||||
|
if (queryParams != null)
|
||||||
|
request = new(HttpMethod.Get, string.Join('?', uri, string.Join('&', queryParams)));
|
||||||
|
else
|
||||||
|
request = new(HttpMethod.Get, uri);
|
||||||
|
if (payload != null)
|
||||||
|
request.Content = JsonContent.Create(payload);
|
||||||
|
return await SendAnonRequest(request);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(GetAnon)}:{uri}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(GetAnon)}:{uri}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<HttpResponseMessage> PostAnon(string uri, object payload = default)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uri = $"{CultureInfo.DefaultThreadCurrentCulture.TwoLetterISOLanguageName}/{uri}";
|
||||||
|
var request = new HttpRequestMessage(HttpMethod.Post, uri)
|
||||||
|
{
|
||||||
|
Content = JsonContent.Create(payload)
|
||||||
|
};
|
||||||
|
return await SendAnonRequest(request);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(PostAnon)}:{uri}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(PostAnon)}:{uri}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<HttpResponseMessage> Delete(string uri, string?[] queryParams = default, object payload = default)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uri = $"{CultureInfo.DefaultThreadCurrentCulture.TwoLetterISOLanguageName}/{uri}";
|
||||||
|
var request = default(HttpRequestMessage);
|
||||||
|
if (queryParams != null)
|
||||||
|
request = new(HttpMethod.Delete, string.Join('?', uri, string.Join('&', queryParams)));
|
||||||
|
else
|
||||||
|
request = new(HttpMethod.Delete, uri);
|
||||||
|
if (payload != null)
|
||||||
|
request.Content = JsonContent.Create(payload);
|
||||||
|
return await SendRequest(request);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(Delete)}:{uri}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(Delete)}:{uri}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// helper methods
|
||||||
|
async Task<HttpResponseMessage> SendRequest(HttpRequestMessage request)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var authData = await Storage.GetItemAsync<AuthData>(nameof(AuthData));
|
||||||
|
var isApiUrl = !request.RequestUri?.IsAbsoluteUri;
|
||||||
|
if (isApiUrl.HasValue && isApiUrl.Value)
|
||||||
|
request.Headers.Authorization = new("Bearer", authData.Token);
|
||||||
|
|
||||||
|
var response = await HttpClientFactory.CreateClient().SendAsync(request);
|
||||||
|
if (response.StatusCode is HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden)
|
||||||
|
{
|
||||||
|
Logger.LogWarning($"{nameof(SendRequest)}:401/403:{request.RequestUri?.OriginalString}:{await response.Content.ReadAsStringAsync()}");
|
||||||
|
await DbStorage.AddLog($"{nameof(SendRequest)}:401/403:{request.RequestUri?.OriginalString}:{await response.Content.ReadAsStringAsync()}", $"{nameof(SendRequest)}:{request.RequestUri?.OriginalString}");
|
||||||
|
await AuthStateProvider.LogoutAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(SendRequest)}:{request.RequestUri?.OriginalString}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(SendRequest)}:{request.RequestUri?.OriginalString}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async Task<HttpResponseMessage> SendAnonRequest(HttpRequestMessage request)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var authData = await Storage.GetItemAsync<AuthData>(nameof(AuthData));
|
||||||
|
if (!string.IsNullOrEmpty(authData?.Token))
|
||||||
|
request.Headers.Authorization = new("Bearer", authData.Token);
|
||||||
|
|
||||||
|
var response = await HttpClientFactory.CreateClient().SendAsync(request);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError(ex, $"{nameof(SendAnonRequest)}:{request.RequestUri?.OriginalString}");
|
||||||
|
await DbStorage.AddLog(ex, $"{nameof(SendAnonRequest)}:{request.RequestUri?.OriginalString}");
|
||||||
|
return new(HttpStatusCode.ServiceUnavailable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace decePubClient.Services
|
||||||
|
{
|
||||||
|
public class MessagesService
|
||||||
|
{
|
||||||
|
public MessagesService()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,89 @@
|
||||||
|
using Blazored.LocalStorage;
|
||||||
|
using decePubClient.Models;
|
||||||
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
|
using System.Security.Claims;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace decePubClient.Services
|
||||||
|
{
|
||||||
|
public class TokenAuthStateProvider : AuthenticationStateProvider
|
||||||
|
{
|
||||||
|
readonly ILocalStorageService Storage;
|
||||||
|
readonly IStorage DbStorage;
|
||||||
|
readonly ILogger<TokenAuthStateProvider> Logger;
|
||||||
|
AuthData AuthData { get; set; }
|
||||||
|
|
||||||
|
public TokenAuthStateProvider(ILocalStorageService storage,
|
||||||
|
IStorage dbStorage,
|
||||||
|
ILogger<TokenAuthStateProvider> logger)
|
||||||
|
{
|
||||||
|
Storage = storage;
|
||||||
|
DbStorage = dbStorage;
|
||||||
|
Logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetToken(/*string token, long expirationTicks = default*/)
|
||||||
|
{
|
||||||
|
//AuthData = await Storage.GetItemAsync<AuthData>(nameof(AuthData));
|
||||||
|
//if (string.IsNullOrEmpty(token))
|
||||||
|
//{
|
||||||
|
// Logger.LogInformation($"set null({nameof(SetToken)})");
|
||||||
|
// AuthData.Token = null;
|
||||||
|
// AuthData.TokenExpiration = null;
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// AuthData.Token = token;
|
||||||
|
// AuthData.TokenExpiration = expirationTicks;
|
||||||
|
//}
|
||||||
|
//await Storage.SetItemAsync(nameof(AuthData), AuthData);
|
||||||
|
|
||||||
|
NotifyAuthenticationStateChanged(GetAuthenticationStateAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
public async ValueTask<bool> IsAuthenticatedAsync()
|
||||||
|
{
|
||||||
|
AuthData = await Storage.GetItemAsync<AuthData>(nameof(AuthData));
|
||||||
|
if (AuthData is null)
|
||||||
|
{
|
||||||
|
AuthData = new();
|
||||||
|
await Storage.SetItemAsync(nameof(AuthData), AuthData);
|
||||||
|
}
|
||||||
|
return AuthData.Token != null &&
|
||||||
|
AuthData.TokenExpiration.HasValue &&
|
||||||
|
AuthData.TokenExpiration.Value > DateTime.UtcNow.Ticks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task LogoutAsync(bool deleteDb = false)
|
||||||
|
{
|
||||||
|
Logger.LogInformation($"set null({nameof(LogoutAsync)})");
|
||||||
|
//await Storage.RemoveItemAsync(nameof(PrivateCacheData));
|
||||||
|
await Storage.RemoveItemAsync(nameof(AuthData));
|
||||||
|
if (deleteDb)
|
||||||
|
await DbStorage.RemoveAll(includeClientLogs: true);
|
||||||
|
|
||||||
|
NotifyAuthenticationStateChanged(GetAuthenticationStateAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
|
||||||
|
{
|
||||||
|
AuthData = await Storage.GetItemAsync<AuthData>(nameof(AuthData));
|
||||||
|
if (string.IsNullOrEmpty(AuthData?.Token))
|
||||||
|
{
|
||||||
|
Logger.LogInformation($"set null({nameof(GetAuthenticationStateAsync)})");
|
||||||
|
return new(new());
|
||||||
|
}
|
||||||
|
var claims = new List<Claim>
|
||||||
|
{
|
||||||
|
new(ClaimTypes.UserData, JsonSerializer.Serialize(AuthData.User))
|
||||||
|
};
|
||||||
|
|
||||||
|
//claims.Add(new(Policies.IsUser, (AuthData.User.Policies.Contains(Policies.IsUser)).ToString().ToLower()));
|
||||||
|
//claims.Add(new(Policies.UserPlus, (AuthData.User.Policies.Contains(Policies.UserPlus)).ToString().ToLower()));
|
||||||
|
//claims.Add(new(Policies.IsAdmin, (AuthData.User.Policies.Contains(Policies.IsAdmin)).ToString().ToLower()));
|
||||||
|
|
||||||
|
var identity = new ClaimsIdentity(claims, "jwt");
|
||||||
|
return new(new(identity));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
///<binding AfterBuild='Clean output files, Update all files, Stylesheets, wwwroot/css/style.min.css' />
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
///<binding BeforeBuild='All files' />
|
|
@ -0,0 +1,2 @@
|
||||||
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
|
<s:Boolean x:Key="/Default/CodeEditing/SuppressUninitializedWarningFix/Enabled/@EntryValue">False</s:Boolean></wpf:ResourceDictionary>
|
|
@ -0,0 +1,904 @@
|
||||||
|
{
|
||||||
|
"name": "decepubclient",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/code-frame": {
|
||||||
|
"version": "7.16.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
|
||||||
|
"integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/highlight": "^7.16.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@babel/helper-validator-identifier": {
|
||||||
|
"version": "7.16.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
|
||||||
|
"integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw=="
|
||||||
|
},
|
||||||
|
"@babel/highlight": {
|
||||||
|
"version": "7.16.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
|
||||||
|
"integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/helper-validator-identifier": "^7.16.7",
|
||||||
|
"chalk": "^2.0.0",
|
||||||
|
"js-tokens": "^4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^1.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^3.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.5",
|
||||||
|
"supports-color": "^5.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "1.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"requires": {
|
||||||
|
"color-name": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "5.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@nodelib/fs.scandir": {
|
||||||
|
"version": "2.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||||
|
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||||
|
"requires": {
|
||||||
|
"@nodelib/fs.stat": "2.0.5",
|
||||||
|
"run-parallel": "^1.1.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@nodelib/fs.stat": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
|
||||||
|
},
|
||||||
|
"@nodelib/fs.walk": {
|
||||||
|
"version": "1.2.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||||
|
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||||
|
"requires": {
|
||||||
|
"@nodelib/fs.scandir": "2.1.5",
|
||||||
|
"fastq": "^1.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@types/parse-json": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
|
||||||
|
},
|
||||||
|
"acorn": {
|
||||||
|
"version": "7.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||||
|
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
|
||||||
|
},
|
||||||
|
"acorn-node": {
|
||||||
|
"version": "1.8.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
|
||||||
|
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
|
||||||
|
"requires": {
|
||||||
|
"acorn": "^7.0.0",
|
||||||
|
"acorn-walk": "^7.0.0",
|
||||||
|
"xtend": "^4.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"acorn-walk": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
|
||||||
|
},
|
||||||
|
"ansi-regex": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
|
||||||
|
},
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"anymatch": {
|
||||||
|
"version": "3.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
|
||||||
|
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
|
||||||
|
"requires": {
|
||||||
|
"normalize-path": "^3.0.0",
|
||||||
|
"picomatch": "^2.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"arg": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA=="
|
||||||
|
},
|
||||||
|
"array-union": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw=="
|
||||||
|
},
|
||||||
|
"autoprefixer": {
|
||||||
|
"version": "10.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
|
||||||
|
"integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
|
||||||
|
"requires": {
|
||||||
|
"browserslist": "^4.19.1",
|
||||||
|
"caniuse-lite": "^1.0.30001297",
|
||||||
|
"fraction.js": "^4.1.2",
|
||||||
|
"normalize-range": "^0.1.2",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"postcss-value-parser": "^4.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"binary-extensions": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
|
||||||
|
},
|
||||||
|
"braces": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||||
|
"requires": {
|
||||||
|
"fill-range": "^7.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserslist": {
|
||||||
|
"version": "4.19.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
|
||||||
|
"integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
|
||||||
|
"requires": {
|
||||||
|
"caniuse-lite": "^1.0.30001286",
|
||||||
|
"electron-to-chromium": "^1.4.17",
|
||||||
|
"escalade": "^3.1.1",
|
||||||
|
"node-releases": "^2.0.1",
|
||||||
|
"picocolors": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"callsites": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
|
||||||
|
},
|
||||||
|
"camelcase-css": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
|
||||||
|
},
|
||||||
|
"caniuse-lite": {
|
||||||
|
"version": "1.0.30001306",
|
||||||
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001306.tgz",
|
||||||
|
"integrity": "sha512-Wd1OuggRzg1rbnM5hv1wXs2VkxJH/AA+LuudlIqvZiCvivF+wJJe2mgBZC8gPMgI7D76PP5CTx8Luvaqc1V6OQ=="
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.1.0",
|
||||||
|
"supports-color": "^7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chokidar": {
|
||||||
|
"version": "3.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||||
|
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||||
|
"requires": {
|
||||||
|
"anymatch": "~3.1.2",
|
||||||
|
"braces": "~3.0.2",
|
||||||
|
"fsevents": "~2.3.2",
|
||||||
|
"glob-parent": "~5.1.2",
|
||||||
|
"is-binary-path": "~2.1.0",
|
||||||
|
"is-glob": "~4.0.1",
|
||||||
|
"normalize-path": "~3.0.0",
|
||||||
|
"readdirp": "~3.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cliui": {
|
||||||
|
"version": "7.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
||||||
|
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
|
||||||
|
"requires": {
|
||||||
|
"string-width": "^4.2.0",
|
||||||
|
"strip-ansi": "^6.0.0",
|
||||||
|
"wrap-ansi": "^7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"requires": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||||
|
},
|
||||||
|
"cosmiconfig": {
|
||||||
|
"version": "7.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
|
||||||
|
"integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
|
||||||
|
"requires": {
|
||||||
|
"@types/parse-json": "^4.0.0",
|
||||||
|
"import-fresh": "^3.2.1",
|
||||||
|
"parse-json": "^5.0.0",
|
||||||
|
"path-type": "^4.0.0",
|
||||||
|
"yaml": "^1.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cssesc": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
|
||||||
|
},
|
||||||
|
"defined": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
|
||||||
|
},
|
||||||
|
"dependency-graph": {
|
||||||
|
"version": "0.11.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
|
||||||
|
"integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg=="
|
||||||
|
},
|
||||||
|
"detective": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==",
|
||||||
|
"requires": {
|
||||||
|
"acorn-node": "^1.6.1",
|
||||||
|
"defined": "^1.0.0",
|
||||||
|
"minimist": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"didyoumean": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
||||||
|
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
|
||||||
|
},
|
||||||
|
"dir-glob": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
||||||
|
"requires": {
|
||||||
|
"path-type": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dlv": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
|
||||||
|
},
|
||||||
|
"electron-to-chromium": {
|
||||||
|
"version": "1.4.63",
|
||||||
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz",
|
||||||
|
"integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA=="
|
||||||
|
},
|
||||||
|
"emoji-regex": {
|
||||||
|
"version": "8.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||||
|
},
|
||||||
|
"error-ex": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
||||||
|
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
||||||
|
"requires": {
|
||||||
|
"is-arrayish": "^0.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"escalade": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
|
||||||
|
},
|
||||||
|
"escape-string-regexp": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||||
|
},
|
||||||
|
"fast-glob": {
|
||||||
|
"version": "3.2.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
|
||||||
|
"integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
|
||||||
|
"requires": {
|
||||||
|
"@nodelib/fs.stat": "^2.0.2",
|
||||||
|
"@nodelib/fs.walk": "^1.2.3",
|
||||||
|
"glob-parent": "^5.1.2",
|
||||||
|
"merge2": "^1.3.0",
|
||||||
|
"micromatch": "^4.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fastq": {
|
||||||
|
"version": "1.13.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||||
|
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
||||||
|
"requires": {
|
||||||
|
"reusify": "^1.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fill-range": {
|
||||||
|
"version": "7.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
|
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||||
|
"requires": {
|
||||||
|
"to-regex-range": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fraction.js": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA=="
|
||||||
|
},
|
||||||
|
"fs-extra": {
|
||||||
|
"version": "10.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
|
||||||
|
"integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.2.0",
|
||||||
|
"jsonfile": "^6.0.1",
|
||||||
|
"universalify": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fsevents": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"function-bind": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||||
|
},
|
||||||
|
"get-caller-file": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||||
|
},
|
||||||
|
"get-stdin": {
|
||||||
|
"version": "9.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
|
||||||
|
"integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA=="
|
||||||
|
},
|
||||||
|
"glob-parent": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||||
|
"requires": {
|
||||||
|
"is-glob": "^4.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"globby": {
|
||||||
|
"version": "12.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz",
|
||||||
|
"integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==",
|
||||||
|
"requires": {
|
||||||
|
"array-union": "^3.0.1",
|
||||||
|
"dir-glob": "^3.0.1",
|
||||||
|
"fast-glob": "^3.2.7",
|
||||||
|
"ignore": "^5.1.9",
|
||||||
|
"merge2": "^1.4.1",
|
||||||
|
"slash": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"graceful-fs": {
|
||||||
|
"version": "4.2.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
|
||||||
|
"integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="
|
||||||
|
},
|
||||||
|
"has": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||||
|
"requires": {
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||||
|
},
|
||||||
|
"ignore": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="
|
||||||
|
},
|
||||||
|
"import-fresh": {
|
||||||
|
"version": "3.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||||
|
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
||||||
|
"requires": {
|
||||||
|
"parent-module": "^1.0.0",
|
||||||
|
"resolve-from": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-arrayish": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
||||||
|
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
|
||||||
|
},
|
||||||
|
"is-binary-path": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||||
|
"requires": {
|
||||||
|
"binary-extensions": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-core-module": {
|
||||||
|
"version": "2.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
|
||||||
|
"integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
|
||||||
|
"requires": {
|
||||||
|
"has": "^1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-extglob": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||||
|
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
|
||||||
|
},
|
||||||
|
"is-fullwidth-code-point": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||||
|
},
|
||||||
|
"is-glob": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||||
|
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||||
|
"requires": {
|
||||||
|
"is-extglob": "^2.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-number": {
|
||||||
|
"version": "7.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||||
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||||
|
},
|
||||||
|
"js-tokens": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||||
|
},
|
||||||
|
"json-parse-even-better-errors": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
|
||||||
|
},
|
||||||
|
"jsonfile": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.6",
|
||||||
|
"universalify": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lilconfig": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA=="
|
||||||
|
},
|
||||||
|
"lines-and-columns": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
|
||||||
|
},
|
||||||
|
"merge2": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
|
||||||
|
},
|
||||||
|
"micromatch": {
|
||||||
|
"version": "4.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
||||||
|
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
||||||
|
"requires": {
|
||||||
|
"braces": "^3.0.1",
|
||||||
|
"picomatch": "^2.2.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "1.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||||
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||||
|
},
|
||||||
|
"nanoid": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA=="
|
||||||
|
},
|
||||||
|
"node-releases": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA=="
|
||||||
|
},
|
||||||
|
"normalize-path": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
|
||||||
|
},
|
||||||
|
"normalize-range": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
|
||||||
|
},
|
||||||
|
"object-hash": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="
|
||||||
|
},
|
||||||
|
"parent-module": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
||||||
|
"requires": {
|
||||||
|
"callsites": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parse-json": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/code-frame": "^7.0.0",
|
||||||
|
"error-ex": "^1.3.1",
|
||||||
|
"json-parse-even-better-errors": "^2.3.0",
|
||||||
|
"lines-and-columns": "^1.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-parse": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||||
|
},
|
||||||
|
"path-type": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
|
||||||
|
},
|
||||||
|
"picocolors": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
|
||||||
|
},
|
||||||
|
"picomatch": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
|
||||||
|
},
|
||||||
|
"pify": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||||
|
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
|
||||||
|
},
|
||||||
|
"postcss": {
|
||||||
|
"version": "8.4.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
|
||||||
|
"integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
|
||||||
|
"requires": {
|
||||||
|
"nanoid": "^3.2.0",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"source-map-js": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-cli": {
|
||||||
|
"version": "9.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-9.1.0.tgz",
|
||||||
|
"integrity": "sha512-zvDN2ADbWfza42sAnj+O2uUWyL0eRL1V+6giM2vi4SqTR3gTYy8XzcpfwccayF2szcUif0HMmXiEaDv9iEhcpw==",
|
||||||
|
"requires": {
|
||||||
|
"chokidar": "^3.3.0",
|
||||||
|
"dependency-graph": "^0.11.0",
|
||||||
|
"fs-extra": "^10.0.0",
|
||||||
|
"get-stdin": "^9.0.0",
|
||||||
|
"globby": "^12.0.0",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"postcss-load-config": "^3.0.0",
|
||||||
|
"postcss-reporter": "^7.0.0",
|
||||||
|
"pretty-hrtime": "^1.0.3",
|
||||||
|
"read-cache": "^1.0.0",
|
||||||
|
"slash": "^4.0.0",
|
||||||
|
"yargs": "^17.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-js": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
|
||||||
|
"requires": {
|
||||||
|
"camelcase-css": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-load-config": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==",
|
||||||
|
"requires": {
|
||||||
|
"lilconfig": "^2.0.4",
|
||||||
|
"yaml": "^1.10.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-nested": {
|
||||||
|
"version": "5.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
|
||||||
|
"integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
|
||||||
|
"requires": {
|
||||||
|
"postcss-selector-parser": "^6.0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-reporter": {
|
||||||
|
"version": "7.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz",
|
||||||
|
"integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==",
|
||||||
|
"requires": {
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"thenby": "^1.3.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-selector-parser": {
|
||||||
|
"version": "6.0.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz",
|
||||||
|
"integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==",
|
||||||
|
"requires": {
|
||||||
|
"cssesc": "^3.0.0",
|
||||||
|
"util-deprecate": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-value-parser": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
|
||||||
|
},
|
||||||
|
"pretty-hrtime": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
|
||||||
|
},
|
||||||
|
"queue-microtask": {
|
||||||
|
"version": "1.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||||
|
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
|
||||||
|
},
|
||||||
|
"quick-lru": {
|
||||||
|
"version": "5.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
|
||||||
|
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
|
||||||
|
},
|
||||||
|
"read-cache": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
|
||||||
|
"requires": {
|
||||||
|
"pify": "^2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"readdirp": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||||
|
"requires": {
|
||||||
|
"picomatch": "^2.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"require-directory": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
|
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
|
||||||
|
},
|
||||||
|
"resolve": {
|
||||||
|
"version": "1.22.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||||
|
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||||
|
"requires": {
|
||||||
|
"is-core-module": "^2.8.1",
|
||||||
|
"path-parse": "^1.0.7",
|
||||||
|
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resolve-from": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
|
||||||
|
},
|
||||||
|
"reusify": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
|
||||||
|
},
|
||||||
|
"run-parallel": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||||
|
"requires": {
|
||||||
|
"queue-microtask": "^1.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"slash": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="
|
||||||
|
},
|
||||||
|
"source-map-js": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
|
||||||
|
},
|
||||||
|
"string-width": {
|
||||||
|
"version": "4.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||||
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"requires": {
|
||||||
|
"emoji-regex": "^8.0.0",
|
||||||
|
"is-fullwidth-code-point": "^3.0.0",
|
||||||
|
"strip-ansi": "^6.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"supports-preserve-symlinks-flag": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
|
||||||
|
},
|
||||||
|
"tailwindcss": {
|
||||||
|
"version": "3.0.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.18.tgz",
|
||||||
|
"integrity": "sha512-ihPTpEyA5ANgZbwKlgrbfnzOp9R5vDHFWmqxB1PT8NwOGCOFVVMl+Ps1cQQ369acaqqf1BEF77roCwK0lvNmTw==",
|
||||||
|
"requires": {
|
||||||
|
"arg": "^5.0.1",
|
||||||
|
"chalk": "^4.1.2",
|
||||||
|
"chokidar": "^3.5.3",
|
||||||
|
"color-name": "^1.1.4",
|
||||||
|
"cosmiconfig": "^7.0.1",
|
||||||
|
"detective": "^5.2.0",
|
||||||
|
"didyoumean": "^1.2.2",
|
||||||
|
"dlv": "^1.1.3",
|
||||||
|
"fast-glob": "^3.2.11",
|
||||||
|
"glob-parent": "^6.0.2",
|
||||||
|
"is-glob": "^4.0.3",
|
||||||
|
"normalize-path": "^3.0.0",
|
||||||
|
"object-hash": "^2.2.0",
|
||||||
|
"postcss-js": "^4.0.0",
|
||||||
|
"postcss-load-config": "^3.1.0",
|
||||||
|
"postcss-nested": "5.0.6",
|
||||||
|
"postcss-selector-parser": "^6.0.9",
|
||||||
|
"postcss-value-parser": "^4.2.0",
|
||||||
|
"quick-lru": "^5.1.1",
|
||||||
|
"resolve": "^1.21.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"glob-parent": {
|
||||||
|
"version": "6.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||||
|
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||||
|
"requires": {
|
||||||
|
"is-glob": "^4.0.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"thenby": {
|
||||||
|
"version": "1.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz",
|
||||||
|
"integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ=="
|
||||||
|
},
|
||||||
|
"to-regex-range": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||||
|
"requires": {
|
||||||
|
"is-number": "^7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"universalify": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
|
||||||
|
},
|
||||||
|
"util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||||
|
},
|
||||||
|
"wrap-ansi": {
|
||||||
|
"version": "7.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||||
|
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.0.0",
|
||||||
|
"string-width": "^4.1.0",
|
||||||
|
"strip-ansi": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xtend": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
||||||
|
},
|
||||||
|
"y18n": {
|
||||||
|
"version": "5.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
||||||
|
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
|
||||||
|
},
|
||||||
|
"yaml": {
|
||||||
|
"version": "1.10.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||||
|
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
|
||||||
|
},
|
||||||
|
"yargs": {
|
||||||
|
"version": "17.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
|
||||||
|
"integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
|
||||||
|
"requires": {
|
||||||
|
"cliui": "^7.0.2",
|
||||||
|
"escalade": "^3.1.1",
|
||||||
|
"get-caller-file": "^2.0.5",
|
||||||
|
"require-directory": "^2.1.1",
|
||||||
|
"string-width": "^4.2.3",
|
||||||
|
"y18n": "^5.0.5",
|
||||||
|
"yargs-parser": "^21.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yargs-parser": {
|
||||||
|
"version": "21.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz",
|
||||||
|
"integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"name": "decepubclient",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.thepra.dev/thepra/decePubClient.git"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = {
|
||||||
|
content: [],
|
||||||
|
theme: {
|
||||||
|
extend: {},
|
||||||
|
},
|
||||||
|
plugins: [],
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square70x70logo src="/imgs/mstile-70x70.png" />
|
||||||
|
<square150x150logo src="/imgs/mstile-150x150.png" />
|
||||||
|
<square310x310logo src="/imgs/mstile-310x310.png" />
|
||||||
|
<wide310x150logo src="/imgs/mstile-310x150.png" />
|
||||||
|
<TileColor>#fadcc7</TileColor>
|
||||||
|
</tile>
|
||||||
|
</msapplication>
|
||||||
|
</browserconfig>
|
|
@ -1,64 +0,0 @@
|
||||||
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');
|
|
||||||
|
|
||||||
html, body {
|
|
||||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1:focus {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a, .btn-link {
|
|
||||||
color: #0071c1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #1b6ec2;
|
|
||||||
border-color: #1861ac;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
padding-top: 1.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.valid.modified:not([type=checkbox]) {
|
|
||||||
outline: 1px solid #26b050;
|
|
||||||
}
|
|
||||||
|
|
||||||
.invalid {
|
|
||||||
outline: 1px solid red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.validation-message {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#blazor-error-ui {
|
|
||||||
background: lightyellow;
|
|
||||||
bottom: 0;
|
|
||||||
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
|
|
||||||
display: none;
|
|
||||||
left: 0;
|
|
||||||
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
|
|
||||||
position: fixed;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#blazor-error-ui .dismiss {
|
|
||||||
cursor: pointer;
|
|
||||||
position: absolute;
|
|
||||||
right: 0.75rem;
|
|
||||||
top: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blazor-error-boundary {
|
|
||||||
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
|
|
||||||
padding: 1rem 1rem 1rem 3.7rem;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blazor-error-boundary::after {
|
|
||||||
content: "An error has occurred."
|
|
||||||
}
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*# sourceMappingURL=main.css.map */
|
|
@ -1,86 +0,0 @@
|
||||||
SIL OPEN FONT LICENSE Version 1.1
|
|
||||||
|
|
||||||
Copyright (c) 2014 Waybury
|
|
||||||
|
|
||||||
PREAMBLE
|
|
||||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
||||||
development of collaborative font projects, to support the font creation
|
|
||||||
efforts of academic and linguistic communities, and to provide a free and
|
|
||||||
open framework in which fonts may be shared and improved in partnership
|
|
||||||
with others.
|
|
||||||
|
|
||||||
The OFL allows the licensed fonts to be used, studied, modified and
|
|
||||||
redistributed freely as long as they are not sold by themselves. The
|
|
||||||
fonts, including any derivative works, can be bundled, embedded,
|
|
||||||
redistributed and/or sold with any software provided that any reserved
|
|
||||||
names are not used by derivative works. The fonts and derivatives,
|
|
||||||
however, cannot be released under any other type of license. The
|
|
||||||
requirement for fonts to remain under this license does not apply
|
|
||||||
to any document created using the fonts or their derivatives.
|
|
||||||
|
|
||||||
DEFINITIONS
|
|
||||||
"Font Software" refers to the set of files released by the Copyright
|
|
||||||
Holder(s) under this license and clearly marked as such. This may
|
|
||||||
include source files, build scripts and documentation.
|
|
||||||
|
|
||||||
"Reserved Font Name" refers to any names specified as such after the
|
|
||||||
copyright statement(s).
|
|
||||||
|
|
||||||
"Original Version" refers to the collection of Font Software components as
|
|
||||||
distributed by the Copyright Holder(s).
|
|
||||||
|
|
||||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
||||||
or substituting -- in part or in whole -- any of the components of the
|
|
||||||
Original Version, by changing formats or by porting the Font Software to a
|
|
||||||
new environment.
|
|
||||||
|
|
||||||
"Author" refers to any designer, engineer, programmer, technical
|
|
||||||
writer or other person who contributed to the Font Software.
|
|
||||||
|
|
||||||
PERMISSION & CONDITIONS
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
||||||
redistribute, and sell modified and unmodified copies of the Font
|
|
||||||
Software, subject to the following conditions:
|
|
||||||
|
|
||||||
1) Neither the Font Software nor any of its individual components,
|
|
||||||
in Original or Modified Versions, may be sold by itself.
|
|
||||||
|
|
||||||
2) Original or Modified Versions of the Font Software may be bundled,
|
|
||||||
redistributed and/or sold with any software, provided that each copy
|
|
||||||
contains the above copyright notice and this license. These can be
|
|
||||||
included either as stand-alone text files, human-readable headers or
|
|
||||||
in the appropriate machine-readable metadata fields within text or
|
|
||||||
binary files as long as those fields can be easily viewed by the user.
|
|
||||||
|
|
||||||
3) No Modified Version of the Font Software may use the Reserved Font
|
|
||||||
Name(s) unless explicit written permission is granted by the corresponding
|
|
||||||
Copyright Holder. This restriction only applies to the primary font name as
|
|
||||||
presented to the users.
|
|
||||||
|
|
||||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
||||||
Software shall not be used to promote, endorse or advertise any
|
|
||||||
Modified Version, except to acknowledge the contribution(s) of the
|
|
||||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
5) The Font Software, modified or unmodified, in part or in whole,
|
|
||||||
must be distributed entirely under this license, and must not be
|
|
||||||
distributed under any other license. The requirement for fonts to
|
|
||||||
remain under this license does not apply to any document created
|
|
||||||
using the Font Software.
|
|
||||||
|
|
||||||
TERMINATION
|
|
||||||
This license becomes null and void if any of the above conditions are
|
|
||||||
not met.
|
|
||||||
|
|
||||||
DISCLAIMER
|
|
||||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
||||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
||||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
||||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
||||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
|
@ -1,21 +0,0 @@
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Waybury
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
|
@ -1,114 +0,0 @@
|
||||||
[Open Iconic v1.1.1](http://useiconic.com/open)
|
|
||||||
===========
|
|
||||||
|
|
||||||
### Open Iconic is the open source sibling of [Iconic](http://useiconic.com). It is a hyper-legible collection of 223 icons with a tiny footprint—ready to use with Bootstrap and Foundation. [View the collection](http://useiconic.com/open#icons)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## What's in Open Iconic?
|
|
||||||
|
|
||||||
* 223 icons designed to be legible down to 8 pixels
|
|
||||||
* Super-light SVG files - 61.8 for the entire set
|
|
||||||
* SVG sprite—the modern replacement for icon fonts
|
|
||||||
* Webfont (EOT, OTF, SVG, TTF, WOFF), PNG and WebP formats
|
|
||||||
* Webfont stylesheets (including versions for Bootstrap and Foundation) in CSS, LESS, SCSS and Stylus formats
|
|
||||||
* PNG and WebP raster images in 8px, 16px, 24px, 32px, 48px and 64px.
|
|
||||||
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
#### For code samples and everything else you need to get started with Open Iconic, check out our [Icons](http://useiconic.com/open#icons) and [Reference](http://useiconic.com/open#reference) sections.
|
|
||||||
|
|
||||||
### General Usage
|
|
||||||
|
|
||||||
#### Using Open Iconic's SVGs
|
|
||||||
|
|
||||||
We like SVGs and we think they're the way to display icons on the web. Since Open Iconic are just basic SVGs, we suggest you display them like you would any other image (don't forget the `alt` attribute).
|
|
||||||
|
|
||||||
```
|
|
||||||
<img src="/open-iconic/svg/icon-name.svg" alt="icon name">
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Using Open Iconic's SVG Sprite
|
|
||||||
|
|
||||||
Open Iconic also comes in a SVG sprite which allows you to display all the icons in the set with a single request. It's like an icon font, without being a hack.
|
|
||||||
|
|
||||||
Adding an icon from an SVG sprite is a little different than what you're used to, but it's still a piece of cake. *Tip: To make your icons easily style able, we suggest adding a general class to the* `<svg>` *tag and a unique class name for each different icon in the* `<use>` *tag.*
|
|
||||||
|
|
||||||
```
|
|
||||||
<svg class="icon">
|
|
||||||
<use xlink:href="open-iconic.svg#account-login" class="icon-account-login"></use>
|
|
||||||
</svg>
|
|
||||||
```
|
|
||||||
|
|
||||||
Sizing icons only needs basic CSS. All the icons are in a square format, so just set the `<svg>` tag with equal width and height dimensions.
|
|
||||||
|
|
||||||
```
|
|
||||||
.icon {
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Coloring icons is even easier. All you need to do is set the `fill` rule on the `<use>` tag.
|
|
||||||
|
|
||||||
```
|
|
||||||
.icon-account-login {
|
|
||||||
fill: #f00;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
To learn more about SVG Sprites, read [Chris Coyier's guide](http://css-tricks.com/svg-sprites-use-better-icon-fonts/).
|
|
||||||
|
|
||||||
#### Using Open Iconic's Icon Font...
|
|
||||||
|
|
||||||
|
|
||||||
##### …with Bootstrap
|
|
||||||
|
|
||||||
You can find our Bootstrap stylesheets in `font/css/open-iconic-bootstrap.{css, less, scss, styl}`
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
<link href="/open-iconic/font/css/open-iconic-bootstrap.css" rel="stylesheet">
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
<span class="oi oi-icon-name" title="icon name" aria-hidden="true"></span>
|
|
||||||
```
|
|
||||||
|
|
||||||
##### …with Foundation
|
|
||||||
|
|
||||||
You can find our Foundation stylesheets in `font/css/open-iconic-foundation.{css, less, scss, styl}`
|
|
||||||
|
|
||||||
```
|
|
||||||
<link href="/open-iconic/font/css/open-iconic-foundation.css" rel="stylesheet">
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
<span class="fi-icon-name" title="icon name" aria-hidden="true"></span>
|
|
||||||
```
|
|
||||||
|
|
||||||
##### …on its own
|
|
||||||
|
|
||||||
You can find our default stylesheets in `font/css/open-iconic.{css, less, scss, styl}`
|
|
||||||
|
|
||||||
```
|
|
||||||
<link href="/open-iconic/font/css/open-iconic.css" rel="stylesheet">
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
<span class="oi" data-glyph="icon-name" title="icon name" aria-hidden="true"></span>
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
### Icons
|
|
||||||
|
|
||||||
All code (including SVG markup) is under the [MIT License](http://opensource.org/licenses/MIT).
|
|
||||||
|
|
||||||
### Fonts
|
|
||||||
|
|
||||||
All fonts are under the [SIL Licensed](http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web).
|
|
After Width: | Height: | Size: 326 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
User-agent: *
|
||||||
|
Crawl-delay: 120
|
||||||
|
Disallow: /_framework/
|
||||||
|
Disallow: /webfonts/
|
||||||
|
Disallow: /_content/
|
||||||
|
Disallow: /js/
|
||||||
|
Sitemap: https://collanon.app/sitemap.xml
|
|
@ -0,0 +1,511 @@
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Icons';
|
||||||
|
src: url('../fonts/open-iconic.eot');
|
||||||
|
src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph].oi-text-replace {
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph].oi-text-replace:before {
|
||||||
|
width: 1em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph]:before {
|
||||||
|
font-family: 'Icons';
|
||||||
|
display: inline-block;
|
||||||
|
speak: none;
|
||||||
|
line-height: 1;
|
||||||
|
vertical-align: baseline;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph]:empty:before {
|
||||||
|
width: 1em;
|
||||||
|
text-align: center;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph].oi-align-left:before {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph].oi-align-right:before {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph].oi-align-center:before {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oi[data-glyph].oi-flip-horizontal:before {
|
||||||
|
-webkit-transform: scale(-1, 1);
|
||||||
|
-ms-transform: scale(-1, 1);
|
||||||
|
transform: scale(-1, 1);
|
||||||
|
}
|
||||||
|
.oi[data-glyph].oi-flip-vertical:before {
|
||||||
|
-webkit-transform: scale(1, -1);
|
||||||
|
-ms-transform: scale(-1, 1);
|
||||||
|
transform: scale(1, -1);
|
||||||
|
}
|
||||||
|
.oi[data-glyph].oi-flip-horizontal-vertical:before {
|
||||||
|
-webkit-transform: scale(-1, -1);
|
||||||
|
-ms-transform: scale(-1, 1);
|
||||||
|
transform: scale(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.oi[data-glyph=account-login]:before { content:'\e000'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=account-logout]:before { content:'\e001'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=action-redo]:before { content:'\e002'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=action-undo]:before { content:'\e003'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=align-center]:before { content:'\e004'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=align-left]:before { content:'\e005'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=align-right]:before { content:'\e006'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=aperture]:before { content:'\e007'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-bottom]:before { content:'\e008'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-circle-bottom]:before { content:'\e009'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-circle-left]:before { content:'\e00a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-circle-right]:before { content:'\e00b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-circle-top]:before { content:'\e00c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-left]:before { content:'\e00d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-right]:before { content:'\e00e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-thick-bottom]:before { content:'\e00f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-thick-left]:before { content:'\e010'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-thick-right]:before { content:'\e011'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-thick-top]:before { content:'\e012'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=arrow-top]:before { content:'\e013'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=audio-spectrum]:before { content:'\e014'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=audio]:before { content:'\e015'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=badge]:before { content:'\e016'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=ban]:before { content:'\e017'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bar-chart]:before { content:'\e018'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=basket]:before { content:'\e019'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=battery-empty]:before { content:'\e01a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=battery-full]:before { content:'\e01b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=beaker]:before { content:'\e01c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bell]:before { content:'\e01d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bluetooth]:before { content:'\e01e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bold]:before { content:'\e01f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bolt]:before { content:'\e020'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=book]:before { content:'\e021'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bookmark]:before { content:'\e022'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=box]:before { content:'\e023'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=briefcase]:before { content:'\e024'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=british-pound]:before { content:'\e025'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=browser]:before { content:'\e026'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=brush]:before { content:'\e027'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bug]:before { content:'\e028'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=bullhorn]:before { content:'\e029'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=calculator]:before { content:'\e02a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=calendar]:before { content:'\e02b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=camera-slr]:before { content:'\e02c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=caret-bottom]:before { content:'\e02d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=caret-left]:before { content:'\e02e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=caret-right]:before { content:'\e02f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=caret-top]:before { content:'\e030'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=cart]:before { content:'\e031'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=chat]:before { content:'\e032'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=check]:before { content:'\e033'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=chevron-bottom]:before { content:'\e034'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=chevron-left]:before { content:'\e035'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=chevron-right]:before { content:'\e036'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=chevron-top]:before { content:'\e037'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=circle-check]:before { content:'\e038'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=circle-x]:before { content:'\e039'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=clipboard]:before { content:'\e03a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=clock]:before { content:'\e03b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=cloud-download]:before { content:'\e03c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=cloud-upload]:before { content:'\e03d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=cloud]:before { content:'\e03e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=cloudy]:before { content:'\e03f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=code]:before { content:'\e040'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=cog]:before { content:'\e041'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=collapse-down]:before { content:'\e042'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=collapse-left]:before { content:'\e043'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=collapse-right]:before { content:'\e044'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=collapse-up]:before { content:'\e045'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=command]:before { content:'\e046'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=comment-square]:before { content:'\e047'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=compass]:before { content:'\e048'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=contrast]:before { content:'\e049'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=copywriting]:before { content:'\e04a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=credit-card]:before { content:'\e04b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=crop]:before { content:'\e04c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=dashboard]:before { content:'\e04d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=data-transfer-download]:before { content:'\e04e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=data-transfer-upload]:before { content:'\e04f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=delete]:before { content:'\e050'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=dial]:before { content:'\e051'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=document]:before { content:'\e052'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=dollar]:before { content:'\e053'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=double-quote-sans-left]:before { content:'\e054'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=double-quote-sans-right]:before { content:'\e055'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=double-quote-serif-left]:before { content:'\e056'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=double-quote-serif-right]:before { content:'\e057'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=droplet]:before { content:'\e058'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=eject]:before { content:'\e059'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=elevator]:before { content:'\e05a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=ellipses]:before { content:'\e05b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=envelope-closed]:before { content:'\e05c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=envelope-open]:before { content:'\e05d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=euro]:before { content:'\e05e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=excerpt]:before { content:'\e05f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=expand-down]:before { content:'\e060'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=expand-left]:before { content:'\e061'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=expand-right]:before { content:'\e062'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=expand-up]:before { content:'\e063'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=external-link]:before { content:'\e064'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=eye]:before { content:'\e065'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=eyedropper]:before { content:'\e066'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=file]:before { content:'\e067'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=fire]:before { content:'\e068'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=flag]:before { content:'\e069'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=flash]:before { content:'\e06a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=folder]:before { content:'\e06b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=fork]:before { content:'\e06c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=fullscreen-enter]:before { content:'\e06d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=fullscreen-exit]:before { content:'\e06e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=globe]:before { content:'\e06f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=graph]:before { content:'\e070'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=grid-four-up]:before { content:'\e071'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=grid-three-up]:before { content:'\e072'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=grid-two-up]:before { content:'\e073'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=hard-drive]:before { content:'\e074'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=header]:before { content:'\e075'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=headphones]:before { content:'\e076'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=heart]:before { content:'\e077'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=home]:before { content:'\e078'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=image]:before { content:'\e079'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=inbox]:before { content:'\e07a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=infinity]:before { content:'\e07b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=info]:before { content:'\e07c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=italic]:before { content:'\e07d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=justify-center]:before { content:'\e07e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=justify-left]:before { content:'\e07f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=justify-right]:before { content:'\e080'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=key]:before { content:'\e081'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=laptop]:before { content:'\e082'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=layers]:before { content:'\e083'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=lightbulb]:before { content:'\e084'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=link-broken]:before { content:'\e085'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=link-intact]:before { content:'\e086'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=list-rich]:before { content:'\e087'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=list]:before { content:'\e088'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=location]:before { content:'\e089'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=lock-locked]:before { content:'\e08a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=lock-unlocked]:before { content:'\e08b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=loop-circular]:before { content:'\e08c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=loop-square]:before { content:'\e08d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=loop]:before { content:'\e08e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=magnifying-glass]:before { content:'\e08f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=map-marker]:before { content:'\e090'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=map]:before { content:'\e091'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-pause]:before { content:'\e092'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-play]:before { content:'\e093'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-record]:before { content:'\e094'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-skip-backward]:before { content:'\e095'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-skip-forward]:before { content:'\e096'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-step-backward]:before { content:'\e097'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-step-forward]:before { content:'\e098'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=media-stop]:before { content:'\e099'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=medical-cross]:before { content:'\e09a'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=menu]:before { content:'\e09b'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=microphone]:before { content:'\e09c'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=minus]:before { content:'\e09d'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=monitor]:before { content:'\e09e'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=moon]:before { content:'\e09f'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=move]:before { content:'\e0a0'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=musical-note]:before { content:'\e0a1'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=paperclip]:before { content:'\e0a2'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=pencil]:before { content:'\e0a3'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=people]:before { content:'\e0a4'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=person]:before { content:'\e0a5'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=phone]:before { content:'\e0a6'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=pie-chart]:before { content:'\e0a7'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=pin]:before { content:'\e0a8'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=play-circle]:before { content:'\e0a9'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=plus]:before { content:'\e0aa'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=power-standby]:before { content:'\e0ab'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=print]:before { content:'\e0ac'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=project]:before { content:'\e0ad'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=pulse]:before { content:'\e0ae'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=puzzle-piece]:before { content:'\e0af'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=question-mark]:before { content:'\e0b0'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=rain]:before { content:'\e0b1'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=random]:before { content:'\e0b2'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=reload]:before { content:'\e0b3'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=resize-both]:before { content:'\e0b4'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=resize-height]:before { content:'\e0b5'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=resize-width]:before { content:'\e0b6'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=rss-alt]:before { content:'\e0b7'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=rss]:before { content:'\e0b8'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=script]:before { content:'\e0b9'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=share-boxed]:before { content:'\e0ba'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=share]:before { content:'\e0bb'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=shield]:before { content:'\e0bc'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=signal]:before { content:'\e0bd'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=signpost]:before { content:'\e0be'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=sort-ascending]:before { content:'\e0bf'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=sort-descending]:before { content:'\e0c0'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=spreadsheet]:before { content:'\e0c1'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=star]:before { content:'\e0c2'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=sun]:before { content:'\e0c3'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=tablet]:before { content:'\e0c4'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=tag]:before { content:'\e0c5'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=tags]:before { content:'\e0c6'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=target]:before { content:'\e0c7'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=task]:before { content:'\e0c8'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=terminal]:before { content:'\e0c9'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=text]:before { content:'\e0ca'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=thumb-down]:before { content:'\e0cb'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=thumb-up]:before { content:'\e0cc'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=timer]:before { content:'\e0cd'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=transfer]:before { content:'\e0ce'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=trash]:before { content:'\e0cf'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=underline]:before { content:'\e0d0'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=vertical-align-bottom]:before { content:'\e0d1'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=vertical-align-center]:before { content:'\e0d2'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=vertical-align-top]:before { content:'\e0d3'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=video]:before { content:'\e0d4'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=volume-high]:before { content:'\e0d5'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=volume-low]:before { content:'\e0d6'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=volume-off]:before { content:'\e0d7'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=warning]:before { content:'\e0d8'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=wifi]:before { content:'\e0d9'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=wrench]:before { content:'\e0da'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=x]:before { content:'\e0db'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=yen]:before { content:'\e0dc'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=zoom-in]:before { content:'\e0dd'; }
|
||||||
|
|
||||||
|
.oi[data-glyph=zoom-out]:before { content:'\e0de'; }
|
|
@ -0,0 +1,16 @@
|
||||||
|
/*!
|
||||||
|
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
|
||||||
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||||
|
*/
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Font Awesome 5 Free';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 900;
|
||||||
|
font-display: block;
|
||||||
|
src: url("../webfonts/fa-solid-900.eot");
|
||||||
|
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
|
||||||
|
|
||||||
|
.fa,
|
||||||
|
.fas {
|
||||||
|
font-family: 'Font Awesome 5 Free';
|
||||||
|
font-weight: 900; }
|
|
@ -0,0 +1,3 @@
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
|
@ -0,0 +1,115 @@
|
||||||
|
.static {
|
||||||
|
position: static
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
display: table
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes spin {
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
to {
|
||||||
|
transform: rotate(360deg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes ping {
|
||||||
|
75%, 100% {
|
||||||
|
transform: scale(2);
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes ping {
|
||||||
|
75%, 100% {
|
||||||
|
transform: scale(2);
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes pulse {
|
||||||
|
50% {
|
||||||
|
opacity: .5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
50% {
|
||||||
|
opacity: .5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes bounce {
|
||||||
|
0%, 100% {
|
||||||
|
transform: translateY(-25%);
|
||||||
|
-webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);
|
||||||
|
animation-timing-function: cubic-bezier(0.8,0,1,1)
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
transform: none;
|
||||||
|
-webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);
|
||||||
|
animation-timing-function: cubic-bezier(0,0,0.2,1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes bounce {
|
||||||
|
0%, 100% {
|
||||||
|
transform: translateY(-25%);
|
||||||
|
-webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);
|
||||||
|
animation-timing-function: cubic-bezier(0.8,0,1,1)
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
transform: none;
|
||||||
|
-webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);
|
||||||
|
animation-timing-function: cubic-bezier(0,0,0.2,1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.px-3 {
|
||||||
|
padding-left: 0.75rem;
|
||||||
|
padding-right: 0.75rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.px-4 {
|
||||||
|
padding-left: 1rem;
|
||||||
|
padding-right: 1rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-center {
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
|
||||||
|
*, ::before, ::after {
|
||||||
|
--tw-shadow: 0 0 #0000
|
||||||
|
}
|
||||||
|
|
||||||
|
*, ::before, ::after {
|
||||||
|
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
|
||||||
|
--tw-ring-offset-width: 0px;
|
||||||
|
--tw-ring-offset-color: #fff;
|
||||||
|
--tw-ring-color: rgba(59, 130, 246, 0.5);
|
||||||
|
--tw-ring-offset-shadow: 0 0 #0000;
|
||||||
|
--tw-ring-shadow: 0 0 #0000
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 640px) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1280px) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1536px) {
|
||||||
|
}
|