Implementing console commands
This commit is contained in:
1 parent
cd7ebf6cce
commit
31f5a79b52
11 files changed
+163
-54
No files matched your search
@@ -17,14 +17,6 @@
|
||||
@if (IsAnyFileSelected)
|
||||
{
|
||||
<div class="field is-grouped">
|
||||
<div class="control">
|
||||
<div class="button is-small is-rounded neoBtnSmallPlain">
|
||||
<div class="field">
|
||||
<input @onchange="OnDraftModeSwitch" id="switchRoundedOutlinedWarning" type="checkbox" name="switchRoundedOutlinedWarning" class="switch is-rounded is-outlined is-danger" checked="@IsDraftMode">
|
||||
<label for="switchRoundedOutlinedWarning">Draft mode @DraftMode</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control is-expanded borderRBig neomorphXSmall has-icons-left has-text-centered">
|
||||
<span>@SelectedFile.Name</span>
|
||||
</div>
|
||||
@@ -91,20 +83,27 @@
|
||||
<div class="editorActions">
|
||||
@if (IsAnyFileSelected)
|
||||
{
|
||||
<div class="buttons is-centered">
|
||||
<button @onclick="OnUndoChanges" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin"><span class="icon is-left has-text-dark"><i class="mdi mdi-undo-variant"></i></span> <span>Undo changes</span></button>
|
||||
@if (HasTesting && !IsDraftMode)
|
||||
{
|
||||
<button @onclick="OnTest" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin"><span class="icon is-left has-text-danger"><i class="mdi mdi-alert"></i></span> <span>Test</span></button>
|
||||
}
|
||||
@if (IsDraftMode)
|
||||
{
|
||||
<button @onclick="OnSaveDraft" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin"><span class="icon is-left has-text-light"><i class="mdi mdi-content-save"></i></span> <span>@(string.IsNullOrEmpty(SelectedFile.DraftBody) ? "Create" : "Save") draft</span></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button @onclick="OnSave" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin"><span class="icon is-left has-text-success"><i class="mdi mdi-content-save-all"></i></span> <span>Save</span></button>
|
||||
}
|
||||
<div class="level">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<div class="button is-rounded is-small noStyle isNoFinger">
|
||||
<div class="field">
|
||||
<input @onchange="OnDraftModeSwitch" id="switchRoundedOutlinedWarning" type="checkbox" name="switchRoundedOutlinedWarning" class="switch is-rounded is-outlined is-danger" checked="@IsDraftMode">
|
||||
<label for="switchRoundedOutlinedWarning">Draft mode @DraftMode</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<div class="buttons">
|
||||
<button @onclick="OnUndoChanges" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin"><span class="icon is-left has-text-dark"><i class="mdi mdi-undo-variant"></i></span> <span>Undo changes</span></button>
|
||||
<button @onclick="OnTest" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin @(HasTesting && !IsDraftMode ? null : "is-hidden")"><span class="icon is-left has-text-danger"><i class="mdi mdi-alert"></i></span> <span>Test</span></button>
|
||||
<button @onclick="OnSaveDraft" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin @(IsDraftMode ? null : "is-hidden")"><span class="icon is-left has-text-light"><i class="mdi mdi-content-save"></i></span> <span>@(string.IsNullOrEmpty(SelectedFile.DraftBody) ? "Create" : "Save") draft</span></button>
|
||||
<button @onclick="OnSave" class="button is-rounded neoBtnSmall is-small has-icon-left noBottomMargin @(IsDraftMode ? "is-hidden" : null)"><span class="icon is-left has-text-success"><i class="mdi mdi-content-save-all"></i></span> <span>Save</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
|
||||
@@ -86,6 +86,8 @@ namespace Seenginx.Components
|
||||
DraftMode = IsDraftMode ? "on" : "off";
|
||||
if (IsDraftMode)
|
||||
await JsRuntime.InvokeVoidAsync("UpdateEditor", SelectedFile.DraftBody ?? SelectedFile.Body);
|
||||
else
|
||||
await JsRuntime.InvokeVoidAsync("UpdateEditor", SelectedFile.Body);
|
||||
}
|
||||
|
||||
protected async Task OnFileClick(MouseEventArgs e, CFile file)
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace Seenginx.Pages
|
||||
var validationResult = await NginxService.ValidateForRenameFileAsync(ConfigFiles, SelectedFile, result.Data.ToString());
|
||||
if (!validationResult.AllOk)
|
||||
{
|
||||
var popupAwait = Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage));
|
||||
var popupAwait = Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage));
|
||||
await popupAwait.Result;
|
||||
return;
|
||||
}
|
||||
@@ -95,7 +95,7 @@ namespace Seenginx.Pages
|
||||
var renameResult = await NginxService.RenameFileAsync(SelectedFile, $"{result.Data}.conf");
|
||||
if (!renameResult.AllOk)
|
||||
{
|
||||
var popupAwait = Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, renameResult.ErrorMessage));
|
||||
var popupAwait = Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, renameResult.ErrorMessage));
|
||||
await popupAwait.Result;
|
||||
return;
|
||||
}
|
||||
@@ -124,13 +124,13 @@ namespace Seenginx.Pages
|
||||
|
||||
public async Task SaveDraftFileAsync()
|
||||
{
|
||||
var validationResult = await NginxService.ValidateForSaveDraftFileAsync(SelectedFile);
|
||||
//var validationResult = await NginxService.ValidateForSaveDraftFileAsync(SelectedFile);
|
||||
|
||||
if (!validationResult.AllOk)
|
||||
{
|
||||
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage)).Result;
|
||||
return;
|
||||
}
|
||||
//if (!validationResult.AllOk)
|
||||
//{
|
||||
// await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage)).Result;
|
||||
// return;
|
||||
//}
|
||||
|
||||
var saveDraftResult = await NginxService.SaveDraftFileAsync(SelectedFile);
|
||||
|
||||
@@ -143,7 +143,14 @@ namespace Seenginx.Pages
|
||||
|
||||
public async Task TestConfiguration()
|
||||
{
|
||||
var testResult = await NginxService.TestFileAsync(SelectedFile);
|
||||
|
||||
if (!testResult.AllOk)
|
||||
{
|
||||
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, $"{testResult.ErrorMessage}, ex [{testResult.Exception.Message}]")).Result;
|
||||
return;
|
||||
}
|
||||
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, testResult.Data)).Result;
|
||||
}
|
||||
|
||||
public async Task DeleteFile()
|
||||
|
||||
@@ -101,3 +101,14 @@ html {
|
||||
.switch[type="checkbox"] + label {
|
||||
font-size: inherit
|
||||
}
|
||||
|
||||
.switch[type="checkbox"].is-rounded + label::before,
|
||||
.switch[type="checkbox"].is-rounded + label::before {
|
||||
box-shadow: inset -3px -3px 6px rgba($light-shadow, .5), inset 3px 3px 6px rgba($dark-shadow, .5);
|
||||
border: none
|
||||
}
|
||||
|
||||
.button.noStyle {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
@@ -32,6 +32,10 @@
|
||||
&Finger {
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
&NoFinger {
|
||||
cursor: none
|
||||
}
|
||||
}
|
||||
|
||||
.neomorph {
|
||||
@@ -105,6 +109,12 @@
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
&InsetPlain {
|
||||
box-shadow: inset 3px 3px 6px rgba($dark-shadow, .5), inset -3px -3px 6px rgba($light-shadow, .5);
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
&Plain {
|
||||
box-shadow: -3px -3px 6px rgba($light-shadow, .5), 3px 3px 6px rgba($dark-shadow, .5);
|
||||
background: none !important;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
using Seenginx.Models;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Seenginx.Services
|
||||
{
|
||||
public class CommandService
|
||||
{
|
||||
public async Task<Result<string>> RunCommandAsync(string command)
|
||||
{
|
||||
var runResult = new Result<string>();
|
||||
try
|
||||
{
|
||||
var output = string.Empty;
|
||||
|
||||
var cmd = new ProcessStartInfo("CMD.exe", $"/C {command}");
|
||||
cmd.UseShellExecute = false;
|
||||
cmd.RedirectStandardInput = true;
|
||||
cmd.RedirectStandardOutput = true;
|
||||
cmd.CreateNoWindow = true;
|
||||
if (Environment.OSVersion.Platform.ToString().StartsWith("Win"))
|
||||
cmd.WorkingDirectory = @"C:\Program Files\nginx";
|
||||
|
||||
using (var process = Process.Start(cmd))
|
||||
using (var reader = process.StandardOutput)
|
||||
output = reader.ReadToEnd();
|
||||
|
||||
runResult.SetData(output);
|
||||
return runResult;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return runResult.Invalidate($"Error at running the command '{command}'", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using Seenginx.Models;
|
||||
using Seenginx.Services.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.AccessControl;
|
||||
@@ -15,9 +16,12 @@ namespace Seenginx.Services
|
||||
{
|
||||
private readonly ConfigPaths ConfigPaths;
|
||||
|
||||
public NginxService(ConfigPaths configPaths)
|
||||
private readonly CommandService CommandService;
|
||||
|
||||
public NginxService(ConfigPaths configPaths, CommandService commandService)
|
||||
{
|
||||
ConfigPaths = configPaths;
|
||||
CommandService = commandService;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<ConfigFile>> GetFilesAsync()
|
||||
@@ -250,7 +254,7 @@ namespace Seenginx.Services
|
||||
{
|
||||
var draftPathName = $"{configFile.FullPath}.draft";
|
||||
|
||||
if (File.Exists(draftPathName))
|
||||
if (!File.Exists(draftPathName))
|
||||
return validationResult.Invalidate($"File '{draftPathName}' not found.");
|
||||
|
||||
return validationResult;
|
||||
@@ -290,7 +294,7 @@ namespace Seenginx.Services
|
||||
|
||||
|
||||
|
||||
if (File.Exists(selectedConfigFile.FullPath))
|
||||
if (!File.Exists(selectedConfigFile.FullPath))
|
||||
return renameResult.Invalidate($"Original file '{selectedConfigFile.FullPath}' not found.");
|
||||
|
||||
var newPathName = Path.Combine(ConfigPaths.NginxPath, selectedConfigFile.Folder, $"{newName}.conf");
|
||||
@@ -327,10 +331,30 @@ namespace Seenginx.Services
|
||||
|
||||
public async Task<Result<string>> TestFileAsync(ConfigFile configFile)
|
||||
{
|
||||
await Task.Run(() => { });
|
||||
var result = new Result<string>();
|
||||
result.SetData("Uhu");
|
||||
return result;
|
||||
var command1 = string.Empty;
|
||||
var command2 = string.Empty;
|
||||
var runResult = new Result<string>();
|
||||
var originalPathName = Path.Combine(ConfigPaths.NginxPath, configFile.Folder, $"{configFile.Name}.conf");
|
||||
switch (Environment.OSVersion.Platform)
|
||||
{
|
||||
case PlatformID.Win32S:
|
||||
case PlatformID.Win32Windows:
|
||||
case PlatformID.Win32NT:
|
||||
case PlatformID.WinCE:
|
||||
//command1 = @$"cd ""C:\Program Files\nginx""";
|
||||
command2 = @$"nginx.exe -c ""{originalPathName}"" -t";
|
||||
break;
|
||||
case PlatformID.Unix:
|
||||
command1 = "";
|
||||
break;
|
||||
case PlatformID.Xbox:
|
||||
case PlatformID.MacOSX:
|
||||
return runResult.Invalidate($"Invalid platform '{Environment.OSVersion.Platform}'");
|
||||
}
|
||||
|
||||
runResult = await CommandService.RunCommandAsync(/*command1,*/ command2);
|
||||
|
||||
return runResult;
|
||||
}
|
||||
|
||||
//public async Task<Result> DeleteFileAsync(ConfigFile configFile)
|
||||
|
||||
@@ -23,86 +23,86 @@
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="Ok" Class="is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<button @onclick="Ok" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small has-text-success">
|
||||
<i class="mdi mdi-check"></i>
|
||||
</span>
|
||||
<span>Ok</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case PopupType.OkCancel:
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="Cancel" Class="is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<button @onclick="Cancel" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small">
|
||||
<i class="mdi mdi-close"></i>
|
||||
</span>
|
||||
<span>Cancel</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="Ok" Class="is-rounded neoBtnSmall is-small has-text-dark" Type="ButtonType.Submit">
|
||||
<button @onclick="Ok" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small has-text-success">
|
||||
<i class="mdi mdi-check"></i>
|
||||
</span>
|
||||
<span>Ok</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case PopupType.YesNo:
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="No" Class="is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<button @onclick="No" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small has-text-danger">
|
||||
<i class="mdi mdi-close"></i>
|
||||
</span>
|
||||
<span>No</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="Yes" Class="is-rounded neoBtnSmall is-small has-text-dark" Type="ButtonType.Submit">
|
||||
<button @onclick="Yes" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small has-text-success">
|
||||
<i class="mdi mdi-check"></i>
|
||||
</span>
|
||||
<span>Yes</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
case PopupType.YesNoCancel:
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="Cancel" Class="is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<button @onclick="Cancel" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small">
|
||||
<i class="mdi mdi-close"></i>
|
||||
</span>
|
||||
<span>Cancel</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="No" Class="is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<button @onclick="No" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small has-text-danger">
|
||||
<i class="mdi mdi-close"></i>
|
||||
</span>
|
||||
<span>No</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
<Blazorise.Bulma.Button Clicked="Yes" Class="is-rounded neoBtnSmall is-small has-text-dark" Type="ButtonType.Submit">
|
||||
<button @onclick="Yes" class="button is-rounded neoBtnSmall is-small has-text-dark">
|
||||
<span class="icon is-small has-text-success">
|
||||
<i class="mdi mdi-check"></i>
|
||||
</span>
|
||||
<span>Yes</span>
|
||||
</Blazorise.Bulma.Button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
break;
|
||||
|
||||
@@ -38,6 +38,7 @@ namespace Seenginx
|
||||
configPaths.SystemDPath = @"C:\systemd\system\";
|
||||
|
||||
services.AddSingleton(configPaths);
|
||||
services.AddTransient<CommandService>();
|
||||
services.AddTransient<IDmesgService, DmesgService>();
|
||||
services.AddTransient<INginxService, NginxService>();
|
||||
services.AddTransient<ISystemDService, SystemDService>();
|
||||
|
||||
@@ -59,6 +59,9 @@ html {
|
||||
.isFinger {
|
||||
cursor: pointer; }
|
||||
|
||||
.isNoFinger {
|
||||
cursor: none; }
|
||||
|
||||
.neomorph {
|
||||
/*box-shadow: 0px 0px 4px 4px rgba($background, 1), -8px -8px 16px rgba($light-shadow, 1), 8px 8px 16px rgba($dark-shadow, 1);*/
|
||||
box-shadow: -8px -8px 16px rgba(251, 238, 208, 0.5), 8px 8px 16px rgba(241, 185, 65, 0.5); }
|
||||
@@ -106,6 +109,10 @@ html {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
transform: scale(1.1); }
|
||||
.neoBtnSmallInsetPlain {
|
||||
box-shadow: inset 3px 3px 6px rgba(241, 185, 65, 0.5), inset -3px -3px 6px rgba(251, 238, 208, 0.5);
|
||||
background: none !important;
|
||||
border: none !important; }
|
||||
.neoBtnSmallPlain {
|
||||
box-shadow: -3px -3px 6px rgba(251, 238, 208, 0.5), 3px 3px 6px rgba(241, 185, 65, 0.5);
|
||||
background: none !important;
|
||||
@@ -235,6 +242,15 @@ html {
|
||||
.switch[type="checkbox"] + label {
|
||||
font-size: inherit; }
|
||||
|
||||
.switch[type="checkbox"].is-rounded + label::before,
|
||||
.switch[type="checkbox"].is-rounded + label::before {
|
||||
box-shadow: inset -3px -3px 6px rgba(251, 238, 208, 0.5), inset 3px 3px 6px rgba(241, 185, 65, 0.5);
|
||||
border: none; }
|
||||
|
||||
.button.noStyle {
|
||||
border: none;
|
||||
background: transparent; }
|
||||
|
||||
.main {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;}html{scrollbar-color:#f1b941 transparent;scrollbar-width:thin;scrollbar-arrow-color:#fbeed0;scrollbar-base-color:#f6d287;scrollbar-darkshadow-color:#f1b941;overflow-x:auto;overflow-y:auto;}*{scrollbar-width:inherit;}.isHidden{display:none;}@media only screen and (max-width:37.5em){.isHiddenMobile{display:none;}}.petiteCaps{font-variant:petite-caps;}.flexCenter{display:flex;align-content:center;align-items:center;}.noBottomMargin{margin-bottom:0 !important;}.isNoWrap{white-space:nowrap;}.isFinger{cursor:pointer;}.neomorph{box-shadow:-8px -8px 16px rgba(251,238,208,.5),8px 8px 16px rgba(241,185,65,.5);}.neomorphSmall{box-shadow:-6px -6px 12px rgba(251,238,208,.5),6px 6px 12px rgba(241,185,65,.5);}.neomorphXSmall{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5);}.neomorphBottom{filter:drop-shadow(8px 8px 14px #f1b941);}.neomorphInset{box-shadow:inset 8px 8px 16px rgba(241,185,65,.5),inset -8px -8px 16px rgba(251,238,208,.5);}.neomorphInsetSmall{box-shadow:inset 6px 6px 12px rgba(241,185,65,.5),inset -6px -6px 12px rgba(251,238,208,.5);}.neomorphInsetXSmall{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5);}.neoBtn{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5);background:none !important;border:none !important;transition:all .2s linear;-webkit-backface-visibility:hidden;backface-visibility:hidden;}.neoBtn:focus{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5) !important;}.neoBtn:hover{box-shadow:-6px -6px 12px rgba(251,238,208,.5),6px 6px 12px rgba(241,185,65,.5);background:none !important;border:none !important;transform:scale(1.1);}.neoBtnSmall{box-shadow:-2px -2px 4px rgba(251,238,208,.5),2px 2px 4px rgba(241,185,65,.5);background:none !important;border:none !important;transition:all .2s linear;-webkit-backface-visibility:hidden;backface-visibility:hidden;}.neoBtnSmall:focus{box-shadow:-2px -2px 4px rgba(251,238,208,.5),2px 2px 4px rgba(241,185,65,.5) !important;}.neoBtnSmall:hover{box-shadow:-4px -4px 8px rgba(251,238,208,.5),4px 4px 8px rgba(241,185,65,.5);background:none !important;border:none !important;transform:scale(1.1);}.neoBtnSmallPlain{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5);background:none !important;border:none !important;}.neoFile{box-shadow:0 0 0 rgba(251,238,208,.5),0 0 0 rgba(241,185,65,.5) !important;transition:all .2s linear;-webkit-backface-visibility:hidden !important;backface-visibility:hidden !important;background:#f6d287 !important;}.neoFile:hover{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5) !important;}.neoFile.isSelected{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5) !important;}.neoFile.is-active,.neoFile.active{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5) !important;color:#181515 !important;}.neoInput{box-shadow:inset 2px 2px 4px rgba(241,185,65,.5),inset -2px -2px 4px rgba(251,238,208,.5) !important;background:#f6d287 !important;border:none !important;}.neoInput:focus{border:none !important;}.neoSelect>select{box-shadow:inset 2px 2px 4px rgba(241,185,65,.5),inset -2px -2px 4px rgba(251,238,208,.5) !important;background:#f6d287 !important;border:none !important;}.neoSelect>select:focus{border:none !important;}.gradientBackground{background:linear-gradient(to right bottom,#f7d794,#f5cd79);}.borderR{border-radius:14px;}.borderRSmall{border-radius:7px !important;}.borderRBig{border-radius:28px;}.bg{background:#f6d287;}.sameMarginBottom{margin-bottom:1rem !important;}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.fullwidth{width:100%;}@font-face{font-family:'Ubuntu';src:url(/fonts/ubuntu-light-webfont.woff2) format("woff2");font-weight:300;font-style:normal;}@font-face{font-family:'Ubuntu-Mono';src:url(/fonts/ubuntumono-regular-webfont.woff2) format("woff2");font-style:normal;}html{font-family:Ubuntu,sans-serif;}.menu-list li a{font-family:Ubuntu-Mono,'Noto Mono';}#editor{position:absolute;top:0;right:0;bottom:0;left:0;}.select:not(.is-multiple):not(.is-loading)::after{border-color:#f1b941;}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#be860e;}.ace-solarized-light{background:#f6d287;}.ace-solarized-light .ace_gutter{background:#f5cd79;}.ace-solarized-light .ace_gutter-active-line{border-radius:50px 0 0 50px;}.ace-solarized-light .ace_marker-layer .ace_active-line{border-radius:0 50px 50px 0;}.modal-content{border-radius:28px;}.modal-card-head,.modal-card-foot{background:#f6d287;}.modal-card-head{border:none;border-radius:0;}.modal-card-boLine truncated
|
||||
#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;}html{scrollbar-color:#f1b941 transparent;scrollbar-width:thin;scrollbar-arrow-color:#fbeed0;scrollbar-base-color:#f6d287;scrollbar-darkshadow-color:#f1b941;overflow-x:auto;overflow-y:auto;}*{scrollbar-width:inherit;}.isHidden{display:none;}@media only screen and (max-width:37.5em){.isHiddenMobile{display:none;}}.petiteCaps{font-variant:petite-caps;}.flexCenter{display:flex;align-content:center;align-items:center;}.noBottomMargin{margin-bottom:0 !important;}.isNoWrap{white-space:nowrap;}.isFinger{cursor:pointer;}.isNoFinger{cursor:none;}.neomorph{box-shadow:-8px -8px 16px rgba(251,238,208,.5),8px 8px 16px rgba(241,185,65,.5);}.neomorphSmall{box-shadow:-6px -6px 12px rgba(251,238,208,.5),6px 6px 12px rgba(241,185,65,.5);}.neomorphXSmall{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5);}.neomorphBottom{filter:drop-shadow(8px 8px 14px #f1b941);}.neomorphInset{box-shadow:inset 8px 8px 16px rgba(241,185,65,.5),inset -8px -8px 16px rgba(251,238,208,.5);}.neomorphInsetSmall{box-shadow:inset 6px 6px 12px rgba(241,185,65,.5),inset -6px -6px 12px rgba(251,238,208,.5);}.neomorphInsetXSmall{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5);}.neoBtn{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5);background:none !important;border:none !important;transition:all .2s linear;-webkit-backface-visibility:hidden;backface-visibility:hidden;}.neoBtn:focus{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5) !important;}.neoBtn:hover{box-shadow:-6px -6px 12px rgba(251,238,208,.5),6px 6px 12px rgba(241,185,65,.5);background:none !important;border:none !important;transform:scale(1.1);}.neoBtnSmall{box-shadow:-2px -2px 4px rgba(251,238,208,.5),2px 2px 4px rgba(241,185,65,.5);background:none !important;border:none !important;transition:all .2s linear;-webkit-backface-visibility:hidden;backface-visibility:hidden;}.neoBtnSmall:focus{box-shadow:-2px -2px 4px rgba(251,238,208,.5),2px 2px 4px rgba(241,185,65,.5) !important;}.neoBtnSmall:hover{box-shadow:-4px -4px 8px rgba(251,238,208,.5),4px 4px 8px rgba(241,185,65,.5);background:none !important;border:none !important;transform:scale(1.1);}.neoBtnSmallInsetPlain{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5);background:none !important;border:none !important;}.neoBtnSmallPlain{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5);background:none !important;border:none !important;}.neoFile{box-shadow:0 0 0 rgba(251,238,208,.5),0 0 0 rgba(241,185,65,.5) !important;transition:all .2s linear;-webkit-backface-visibility:hidden !important;backface-visibility:hidden !important;background:#f6d287 !important;}.neoFile:hover{box-shadow:-3px -3px 6px rgba(251,238,208,.5),3px 3px 6px rgba(241,185,65,.5) !important;}.neoFile.isSelected{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5) !important;}.neoFile.is-active,.neoFile.active{box-shadow:inset 3px 3px 6px rgba(241,185,65,.5),inset -3px -3px 6px rgba(251,238,208,.5) !important;color:#181515 !important;}.neoInput{box-shadow:inset 2px 2px 4px rgba(241,185,65,.5),inset -2px -2px 4px rgba(251,238,208,.5) !important;background:#f6d287 !important;border:none !important;}.neoInput:focus{border:none !important;}.neoSelect>select{box-shadow:inset 2px 2px 4px rgba(241,185,65,.5),inset -2px -2px 4px rgba(251,238,208,.5) !important;background:#f6d287 !important;border:none !important;}.neoSelect>select:focus{border:none !important;}.gradientBackground{background:linear-gradient(to right bottom,#f7d794,#f5cd79);}.borderR{border-radius:14px;}.borderRSmall{border-radius:7px !important;}.borderRBig{border-radius:28px;}.bg{background:#f6d287;}.sameMarginBottom{margin-bottom:1rem !important;}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.fullwidth{width:100%;}@font-face{font-family:'Ubuntu';src:url(/fonts/ubuntu-light-webfont.woff2) format("woff2");font-weight:300;font-style:normal;}@font-face{font-family:'Ubuntu-Mono';src:url(/fonts/ubuntumono-regular-webfont.woff2) format("woff2");font-style:normal;}html{font-family:Ubuntu,sans-serif;}.menu-list li a{font-family:Ubuntu-Mono,'Noto Mono';}#editor{position:absolute;top:0;right:0;bottom:0;left:0;}.select:not(.is-multiple):not(.is-loading)::after{border-color:#f1b941;}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#be860e;}.ace-solarized-light{background:#f6d287;}.ace-solarized-light .ace_gutter{background:#f5cd79;}.ace-solarized-light .ace_gutter-active-line{border-radius:50px 0 0 50px;}.ace-solarized-light .ace_marker-layer .ace_aLine truncated
|
||||
Reference in new issue
Block a user