57 Commits

Author SHA1 Message Date
6d486f49 a339b67380 Version update test 2025-11-15 14:52:05 -05:00
6d486f49 fe1a583da9 Fixed bugs 2025-11-07 18:22:21 -05:00
6d486f49 8ce9084ffb Some stub map placeholder for future content 2025-11-07 12:04:11 -05:00
6d486f49 86580a9f5d WIP Tooltip code 2025-11-05 15:11:55 -05:00
6d486f49 3696f474e9 Direct database link feature 2025-11-04 16:56:43 -05:00
Jonathan b63d8330f7 Fixing harass calculator link 2025-08-10 18:35:36 -04:00
Jonathan ad7aabd9e0 Adding MIA footer, don't recall why it was missing 2025-06-22 22:53:23 -04:00
Jonathan 7680fae30b Removing variable service 2025-06-22 22:49:59 -04:00
Jonathan 9e9b25ae6f Removing pointless WebsiteService.cs 2025-06-22 22:46:45 -04:00
Jonathan cf3f6e647b Web page data refactor 2025-06-22 22:38:59 -04:00
Jonathan c0ea4a094e Splitting large data file for less cumbersome editing and IDE lag 2025-06-22 20:48:33 -04:00
Jonathan 1bc78306b8 Temp is depleted logic 2025-06-22 18:46:51 -04:00
Jonathan 826717c47f Harvest points can now be depleted 2025-06-21 21:10:06 -04:00
Jonathan a5964a68f8 Clean up 2025-06-21 21:09:32 -04:00
Jonathan 424fdd248a Cleanup 2025-06-21 21:09:32 -04:00
Jonathan 7ca2f82ad7 Other rider suggestions 2025-06-21 21:09:32 -04:00
Jonathan fd20f8ca7d Start of considering depleted values for Raw Ether surges and bases 2025-06-21 21:09:31 -04:00
Jonathan 5d4f141580 Removing broken link until fixed 2025-06-15 21:33:58 -04:00
Jonathan 2baa295e1f More data updates to playtest patch 2025-06-15 21:31:32 -04:00
Jonathan b8d2210cc5 Rider cleanup suggestions in calculator 2025-06-14 12:18:44 -04:00
Jonathan 8b5d5a05e4 Metadata fix on Armor Types note date 2025-06-13 18:45:04 -04:00
Jonathan 02d6e2f5e9 Additional legacy data cleanup 2025-06-13 18:44:25 -04:00
Jonathan 22d245972c Data cleanup 2025-06-13 18:43:24 -04:00
Jonathan c95ee06449 Removing all the meta agile and git stuff 2025-06-13 18:39:11 -04:00
Jonathan df5c5480d8 Removing SQL Convert project 2025-06-13 18:27:11 -04:00
Jonathan e641189c9d Removing SQL 2025-06-13 18:26:33 -04:00
Jonathan 071d2f5e35 More data fixes and added a bunch of disclaimers 2025-06-12 00:06:39 -04:00
Jonathan ff4941d38c More data, and minor updates to Build Calculator for June 2025 Playtest 2025-06-11 22:31:42 -04:00
Jonathan 4b2fe6d551 More data plus example flavour text UI 2025-06-11 20:41:31 -04:00
Jonathan b02232855d More information 2025-06-11 11:51:57 -04:00
Jonathan f5e8984ab8 More info 2025-06-10 18:27:34 -04:00
Jonathan 2ac56f9672 Atzlan data. Very WIP 2025-06-10 16:49:49 -04:00
Jonathan e464b9ecab Updated Masked Hunter Data 2025-06-10 10:39:49 -04:00
Jonathan 720a99991f Adding an out of date warning on patch text. 2025-05-02 21:47:56 -04:00
Jonathan 80f44c3931 0.0.6.10415a 2025-05-02 21:32:02 -04:00
Jonathan db48f05686 Patch 0.0.6.10322a 2025-05-02 21:29:37 -04:00
Jonathan e90621c2fd Updating to patch 0.0.6.10294a 2025-05-02 21:25:31 -04:00
Jonathan 2246847145 Clean up code formatting and enhance data immutability
Standardized spacing and removed extraneous white space across multiple files for better readability. Updated several data grids to use `readonly` for `_data` collections, improving immutability and code clarity.
2025-05-02 20:52:15 -04:00
Jonathan 3d10256b9f Updating game patch version to correct patch 2025-05-02 20:49:04 -04:00
Jonathan 1f71062691 Fixing nav name of data tables 2025-04-27 22:22:08 -04:00
Jonathan 831512a64b Add columns and pager to WeaponTable and update tool info
Added "Targets" and "Has Splash" columns as well as a pager for better data navigation in the WeaponTable. Enhanced the tool description to clarify its purpose for comparing and sorting data effectively.
2025-04-27 22:21:34 -04:00
Jonathan 8f203b2ba1 Adding data table page to navigation UI 2025-04-27 22:13:04 -04:00
Jonathan d320476084 Add tabbed DataTables with new Production, Vitality, and Movement tables 2025-04-27 22:07:52 -04:00
Jonathan e28f74b354 Refactor DataTables and cleanup redundant code
Refactored `WeaponTable` grid to use a typed parameter and improve readability. Removed outdated or unnecessary sample comments, consolidated duplicate code, and reorganized theme-related components in `PageLayout`. Simplified initialization logic and improved formatting consistency.
2025-04-27 21:45:28 -04:00
Jonathan 764192891c Add DPS calculations and columns to WeaponTable
Introduced new methods in `EntityWeaponModel` to calculate DPS for normal, light, medium, and heavy damage types. Updated `WeaponTable.razor` to display these new DPS values as additional columns for better weapon performance insights. Also fixed missing initialization of the base `Damage` property in test data.
2025-04-27 20:57:01 -04:00
Jonathan b653a00238 Add sorting, filtering, and new columns to WeaponTable
Enhanced the `MudDataGrid` in `WeaponTable` by enabling multiple sorting and filtering while adding new "Faction" and "Immortal" columns. Extended `EntityModel` and `DATA` to support faction and immortal data for the table. Added "Neutral" faction and new entity "Pyre Miner" to the data model.
2025-04-27 20:47:09 -04:00
Jonathan 25776b3b00 Adding Parent Connection for Parts 2025-04-27 20:05:18 -04:00
Jonathan cacbe6979e Start of data comparison tables 2025-04-27 19:42:47 -04:00
Jonathan e820457176 Updating Mudblazor Version 2025-04-27 19:34:50 -04:00
Jonathan 38ff4e3e89 Publish profiles 2025-03-25 00:16:26 -04:00
Jonathan 65ab4bcf05 Upgrading .net version to 8 2025-03-24 23:25:54 -04:00
Jonathan 0bb95ee9a6 Updating calculator link 2025-03-17 16:21:28 -04:00
JonathanMcCaffrey f084aedb0b Merge pull request #61 from JonathanMcCaffrey/develop
Develop
2022-09-03 15:44:25 -04:00
JonathanMcCaffrey 079ced6af7 Merge branch 'temp' into develop 2022-09-03 15:37:46 -04:00
JonathanMcCaffrey 730bff71ef Updating building health 2022-09-03 15:37:33 -04:00
JonathanMcCaffrey 01d8b383e1 Merge pull request #60 from JonathanMcCaffrey/temp
Temp
2022-09-03 15:07:14 -04:00
JonathanMcCaffrey 83ee8c3ae4 New patch data 2022-09-03 15:06:16 -04:00
373 changed files with 127779 additions and 7947 deletions
+16
View File
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
<StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0" />
</ItemGroup>
</Project>
+19
View File
@@ -0,0 +1,19 @@
@page "/counter"
@rendermode InteractiveWebAssembly
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
+5
View File
@@ -0,0 +1,5 @@
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
await builder.Build().RunAsync();
+9
View File
@@ -0,0 +1,9 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Client.Client
@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
+15
View File
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Client.Client\Client.Client.csproj" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.0" />
</ItemGroup>
</Project>
+22
View File
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<ResourcePreloader />
<link rel="stylesheet" href="@Assets["lib/bootstrap/dist/css/bootstrap.min.css"]" />
<link rel="stylesheet" href="@Assets["app.css"]" />
<link rel="stylesheet" href="@Assets["Client.styles.css"]" />
<ImportMap />
<link rel="icon" type="image/png" href="favicon.png" />
<HeadOutlet />
</head>
<body>
<Routes />
<script src="@Assets["_framework/blazor.web.js"]"></script>
</body>
</html>
@@ -0,0 +1,23 @@
@inherits LayoutComponentBase
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<div class="top-row px-4">
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</main>
</div>
<div id="blazor-error-ui" data-nosnippet>
An unhandled error has occurred.
<a href="." class="reload">Reload</a>
<span class="dismiss">🗙</span>
</div>
@@ -0,0 +1,98 @@
.page {
position: relative;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row ::deep a, .top-row ::deep .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
text-decoration: underline;
}
.top-row ::deep a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row {
justify-content: space-between;
}
.top-row ::deep a, .top-row ::deep .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page {
flex-direction: row;
}
.sidebar {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth ::deep a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
#blazor-error-ui {
color-scheme: light only;
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
box-sizing: border-box;
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;
}
@@ -0,0 +1,30 @@
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">Client</a>
</div>
</div>
<input type="checkbox" title="Navigation menu" class="navbar-toggler" />
<div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
<nav class="nav flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="weather">
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
</NavLink>
</div>
</nav>
</div>
@@ -0,0 +1,105 @@
.navbar-toggler {
appearance: none;
cursor: pointer;
width: 3.5rem;
height: 2.5rem;
color: white;
position: absolute;
top: 0.5rem;
right: 1rem;
border: 1px solid rgba(255, 255, 255, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}
.navbar-toggler:checked {
background-color: rgba(255, 255, 255, 0.5);
}
.top-row {
min-height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand {
font-size: 1.1rem;
}
.bi {
display: inline-block;
position: relative;
width: 1.25rem;
height: 1.25rem;
margin-right: 0.75rem;
top: -1px;
background-size: cover;
}
.bi-house-door-fill-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}
.bi-plus-square-fill-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}
.bi-list-nested-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}
.nav-item {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type {
padding-top: 1rem;
}
.nav-item:last-of-type {
padding-bottom: 1rem;
}
.nav-item ::deep .nav-link {
color: #d7d7d7;
background: none;
border: none;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
width: 100%;
}
.nav-item ::deep a.active {
background-color: rgba(255,255,255,0.37);
color: white;
}
.nav-item ::deep .nav-link:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
.nav-scrollable {
display: none;
}
.navbar-toggler:checked ~ .nav-scrollable {
display: block;
}
@media (min-width: 641px) {
.navbar-toggler {
display: none;
}
.nav-scrollable {
/* Never collapse the sidebar for wide screens */
display: block;
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}
@@ -0,0 +1,36 @@
@page "/Error"
@using System.Diagnostics
<PageTitle>Error</PageTitle>
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@code{
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
private string? RequestId { get; set; }
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
protected override void OnInitialized() =>
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
}
@@ -0,0 +1,7 @@
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.
@@ -0,0 +1,5 @@
@page "/not-found"
@layout MainLayout
<h3>Not Found</h3>
<p>Sorry, the content you are looking for does not exist.</p>
@@ -0,0 +1,64 @@
@page "/weather"
@attribute [StreamRendering]
<PageTitle>Weather</PageTitle>
<h1>Weather</h1>
<p>This component demonstrates showing data.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th aria-label="Temperature in Celsius">Temp. (C)</th>
<th aria-label="Temperature in Fahrenheit">Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
}
@code {
private WeatherForecast[]? forecasts;
protected override async Task OnInitializedAsync()
{
// Simulate asynchronous loading to demonstrate streaming rendering
await Task.Delay(500);
var startDate = DateOnly.FromDateTime(DateTime.Now);
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = startDate.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = summaries[Random.Shared.Next(summaries.Length)]
}).ToArray();
}
private class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
}
+6
View File
@@ -0,0 +1,6 @@
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }" NotFoundPage="typeof(Pages.NotFound)">
<Found Context="routeData">
<RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
</Router>
+12
View File
@@ -0,0 +1,12 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Client
@using Client.Client
@using Client.Components
@using Client.Components.Layout
+32
View File
@@ -0,0 +1,32 @@
using Client.Client.Pages;
using Client.Components;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
} else
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents<App>()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(Client.Client._Imports).Assembly);
app.Run();
@@ -0,0 +1,25 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "http://localhost:5029",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:7182;http://localhost:5029",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
@@ -1,17 +1,9 @@
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');
html, body { html, body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
} }
h1:focus {
outline: none;
}
a, .btn-link { a, .btn-link {
color: #0071c1; color: #006bb7;
} }
.btn-primary { .btn-primary {
@@ -20,41 +12,30 @@ a, .btn-link {
border-color: #1861ac; border-color: #1861ac;
} }
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}
.content { .content {
padding-top: 1.1rem; padding-top: 1.1rem;
} }
h1:focus {
outline: none;
}
.valid.modified:not([type=checkbox]) { .valid.modified:not([type=checkbox]) {
outline: 1px solid #26b050; outline: 1px solid #26b050;
} }
.invalid { .invalid {
outline: 1px solid red; outline: 1px solid #e50000;
} }
.validation-message { .validation-message {
color: red; color: #e50000;
} }
#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 { .blazor-error-boundary {
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
padding: 1rem 1rem 1rem 3.7rem; padding: 1rem 1rem 1rem 3.7rem;
@@ -65,35 +46,15 @@ a, .btn-link {
content: "An error has occurred." content: "An error has occurred."
} }
.loading-progress { .darker-border-checkbox.form-check-input {
position: relative; border-color: #929292;
display: block;
width: 8rem;
height: 8rem;
margin: 20vh auto 1rem auto;
} }
.loading-progress circle { .form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
fill: none; color: var(--bs-secondary-color);
stroke: #e0e0e0; text-align: end;
stroke-width: 0.6rem;
transform-origin: 50% 50%;
transform: rotate(-90deg);
}
.loading-progress circle:last-child {
stroke: #1b6ec2;
stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
transition: stroke-dasharray 0.05s ease-in-out;
}
.loading-progress-text {
position: absolute;
text-align: center;
font-weight: bold;
inset: calc(20vh + 3.25rem) 0 auto 0.2rem;
} }
.loading-progress-text:after { .form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
content: var(--blazor-load-percentage-text, "Loading"); text-align: start;
} }

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,597 @@
/*!
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,594 @@
/*!
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+10 -9
View File
@@ -1,9 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk.Razor"> <Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<LangVersion>14</LangVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
@@ -15,24 +16,24 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<SupportedPlatform Include="browser" /> <SupportedPlatform Include="browser"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Markdig" Version="0.28.1" /> <PackageReference Include="Markdig" Version="0.28.1"/>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="6.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.14"/>
<PackageReference Include="Microsoft.Extensions.Localization" Version="7.0.0-preview.7.22376.6" /> <PackageReference Include="Microsoft.Extensions.Localization" Version="8.0.14"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Inputs\" /> <Folder Include="Inputs\"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Model\Model.csproj" /> <ProjectReference Include="..\Model\Model.csproj"/>
<ProjectReference Include="..\Services\Services.csproj" /> <ProjectReference Include="..\Services\Services.csproj"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Remove="Inputs\" /> <None Remove="Inputs\"/>
</ItemGroup> </ItemGroup>
</Project> </Project>
+5 -6
View File
@@ -13,15 +13,14 @@
overflow-x: scroll; overflow-x: scroll;
} }
.code::-webkit-scrollbar { .code::-webkit-scrollbar {
height: 0; height: 0;
background: transparent; background: transparent;
} }
</style> </style>
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
} }
+6 -8
View File
@@ -22,7 +22,7 @@
} }
.devOnlyTitle { .devOnlyTitle {
background-color: rgba(20,20,20,0.75); background-color: rgba(20, 20, 20, 0.75);
padding: 10px; padding: 10px;
color: orange; color: orange;
font-weight: bolder; font-weight: bolder;
@@ -30,14 +30,14 @@
} }
.devOnlyContent { .devOnlyContent {
background-color: rgba(20,20,20,0.75); background-color: rgba(20, 20, 20, 0.75);
width: 100%; width: 100%;
padding: 10px; padding: 10px;
} }
.devOnlyTitleContainer { .devOnlyTitleContainer {
background: repeating-linear-gradient( 45deg, blue, blue 50px, orange 51px, orange 100px); background: repeating-linear-gradient(45deg, blue, blue 50px, orange 51px, orange 100px);
margin-right: auto; margin-right: auto;
padding: 10px; padding: 10px;
border-left: 6px dashed orange; border-left: 6px dashed orange;
@@ -48,7 +48,7 @@
.devOnlyContentContainer { .devOnlyContentContainer {
border: 6px dashed orange; border: 6px dashed orange;
background: repeating-linear-gradient( 45deg, blue, blue 50px, orange 51px, orange 100px); background: repeating-linear-gradient(45deg, blue, blue 50px, orange 51px, orange 100px);
box-shadow: 5px 5px 5px blue; box-shadow: 5px 5px 5px blue;
padding: 20px; padding: 20px;
} }
@@ -58,11 +58,9 @@
@code { @code {
[Inject] [Inject] NavigationManager NavigationManager { get; set; } = default!;
NavigationManager NavigationManager { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
bool isOnDev; bool isOnDev;
@@ -69,10 +69,8 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
[Parameter] [Parameter] public string Title { get; set; } = default!;
public string Title { get; set; } = default!;
} }
@@ -32,10 +32,10 @@
z-index: 2147483647; z-index: 2147483647;
background-color: var(--info-secondary); background-color: var(--info-secondary);
border: 1px solid var(--info-secondary-border); border: 1px solid var(--info-secondary-border);
border-radius: 2px; border-radius: 2px;
box-shadow: 0 3px 8px rgba(0,0,0,0.5); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.5);
} }
@@ -55,13 +55,10 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
[Parameter] [Parameter] public string InfoText { get; set; } = default!;
public string InfoText { get; set; } = default!;
[Parameter] [Parameter] public int? Margin { get; set; }
public int? Margin { get; set; }
} }
+7 -12
View File
@@ -70,13 +70,13 @@
.makingOfContainer summary { .makingOfContainer summary {
font-weight: bold; font-weight: bold;
padding: 12px; padding: 12px;
background-color: rgba(0,0,0, 0.1); background-color: rgba(0, 0, 0, 0.1);
} }
.shownCode { .shownCode {
visibility: hidden; visibility: hidden;
padding: 12px; padding: 12px;
background-color: rgba(0,0,0, 0.1); background-color: rgba(0, 0, 0, 0.1);
} }
.makingOfContainer details[open] .shownCode { .makingOfContainer details[open] .shownCode {
@@ -97,20 +97,15 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment Title { get; set; } = default!;
public RenderFragment Title { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment Description { get; set; } = default!;
public RenderFragment Description { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment Example { get; set; } = default!;
public RenderFragment Example { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment Usage { get; set; } = default!;
public RenderFragment Usage { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment Code { get; set; } = default!;
public RenderFragment Code { get; set; } = default!;
} }
@@ -9,24 +9,22 @@
<style> <style>
.makingOfSection { .makingOfSection {
width: 100%; width: 100%;
background-color: rgba(0,0,0, 0.1); background-color: rgba(0, 0, 0, 0.1);
padding: 25px; padding: 25px;
border-radius: 8px; border-radius: 8px;
border: 2px black dashed; border: 2px black dashed;
} }
.makingOfSection > summary { .makingOfSection > summary {
font-size: 3.4em; font-size: 3.4em;
} }
</style> </style>
@code { @code {
[Parameter] [Parameter] public string Title { get; set; } = default!;
public string Title { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
} }
+1 -2
View File
@@ -15,7 +15,6 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
} }
+2 -4
View File
@@ -18,10 +18,8 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
[Parameter] [Parameter] public string Title { get; set; } = default!;
public string Title { get; set; } = default!;
} }
+3 -6
View File
@@ -52,13 +52,10 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? Title { get; set; }
public RenderFragment? Title { get; set; }
[Parameter] [Parameter] public RenderFragment? Message { get; set; }
public RenderFragment? Message { get; set; }
[Parameter] [Parameter] public string Type { get; set; } = SeverityType.Warning;
public string Type { get; set; } = SeverityType.Warning;
} }
+4 -5
View File
@@ -19,7 +19,7 @@ else
} }
<style> <style>
.toastContainer { .toastContainer {
border: 4px solid; border: 4px solid;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
@@ -58,11 +58,10 @@ else
@code { @code {
[Parameter] [Parameter] public ToastModel? Toast { get; set; }
public ToastModel? Toast { get; set; } = default!;
private float removalTime = 1300; private readonly float removalTime = 1300;
private float fadeoutTime = 1200; private readonly float fadeoutTime = 1200;
private float Opacity() private float Opacity()
{ {
@@ -0,0 +1,79 @@
@inject ITooltipService TooltipService
@implements IDisposable
@if (Tooltip == null)
{
<div>Add tooltip object...</div>
}
else
{
<div onclick="@Dismiss" class="tooltipContainer">
<div class="tooltip">
@Tooltip.Message
</div>
</div>
}
<style>
.toastContainer {
border: 4px solid;
border-radius: 4px;
padding: 16px;
display: flex;
flex-direction: column;
justify-items: stretch;
width: 250px;
cursor: pointer;
}
.@SeverityType.Warning.ToLower() {
background-color: var(--severity-warning-color);
border-color: var(--severity-warning-border-color);
}
.@SeverityType.Error.ToLower() {
background-color: var(--severity-error-color);
border-color: var(--severity-error-border-color);
}
.@SeverityType.Information.ToLower() {
background-color: var(--severity-information-color);
border-color: var(--severity-information-border-color);
}
.@SeverityType.Success.ToLower() {
background-color: var(--severity-success-color);
border-color: var(--severity-success-border-color);
}
.toastTitle {
font-weight: 800;
}
</style>
@code {
[Parameter] public TooltipModel? Tooltip { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
TooltipService.Subscribe(OnUpdate);
}
void Dismiss()
{
TooltipService.RemoveTooltip(Tooltip!);
}
void IDisposable.Dispose()
{
TooltipService.Unsubscribe(OnUpdate);
}
void OnUpdate()
{
}
}
+5 -10
View File
@@ -51,20 +51,15 @@
@code { @code {
[Parameter] [Parameter] public string Label { get; set; } = "";
public string Label { get; set; } = "";
[Parameter] [Parameter] public string Info { get; set; } = "";
public string Info { get; set; } = "";
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
[Parameter] [Parameter] public bool ReadOnly { get; set; }
public bool ReadOnly { get; set; }
[Parameter] [Parameter] public bool Value { get; set; }
public bool Value { get; set; }
private string labelId = ""; private string labelId = "";
+7 -12
View File
@@ -35,23 +35,18 @@
</style> </style>
@code { @code {
//TODO Clean up //TODO Clean up
[Parameter] [Parameter] public string Label { get; set; } = default!;
public string Label { get; set; } = default!;
[Parameter] [Parameter] public string Info { get; set; } = default!;
public string Info { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment? Display { get; set; }
public RenderFragment? Display { get; set; }
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
[Parameter] [Parameter] public bool? ReadOnly { get; set; }
public bool? ReadOnly { get; set; }
[Parameter] [Parameter] public string? Value { get; set; }
public string? Value { get; set; }
} }
@@ -2,11 +2,11 @@
<div class="escapeCodeContainer"> <div class="escapeCodeContainer">
<textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;" <textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;"
rows="8" rows="8"
@onchange="OnChange" /> @onchange="OnChange"/>
<textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;" <textarea style="background-color: #2C2E33; width: 100%; border:3px solid #A8ADB9; border-radius:1px; padding: 8px;"
rows="8" rows="8"
@bind="Output" /> @bind="Output"/>
</div> </div>
<style> <style>
+5 -10
View File
@@ -73,20 +73,15 @@
@code { @code {
[Parameter] [Parameter] public string Label { get; set; } = "";
public string Label { get; set; } = "";
[Parameter] [Parameter] public string Info { get; set; } = "";
public string Info { get; set; } = "";
[Parameter] [Parameter] public EventCallback<AnswerEventArgs> OnChange { get; set; }
public EventCallback<AnswerEventArgs> OnChange { get; set; } = default!;
[Parameter] [Parameter] public MemoryQuestionModel MemoryQuestion { get; set; } = default!;
public MemoryQuestionModel MemoryQuestion { get; set; } = default!;
[Parameter] [Parameter] public bool IsSubmitted { get; set; }
public bool IsSubmitted { get; set; }
private string? guess = ""; private string? guess = "";
+1 -2
View File
@@ -6,7 +6,6 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? ChildContent { get; set; }
public RenderFragment? ChildContent { get; set; }
} }
+1 -2
View File
@@ -4,7 +4,6 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? ChildContent { get; set; }
public RenderFragment? ChildContent { get; set; }
} }
+1 -2
View File
@@ -4,7 +4,6 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? ChildContent { get; set; }
public RenderFragment? ChildContent { get; set; }
} }
+8 -16
View File
@@ -38,17 +38,13 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? FormLabelComponent { get; set; }
public RenderFragment? FormLabelComponent { get; set; }
[Parameter] [Parameter] public string Id { get; set; } = default!;
public string Id { get; set; } = default!;
[Parameter] [Parameter] public RenderFragment? FormInfoComponent { get; set; }
public RenderFragment? FormInfoComponent { get; set; }
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
void OnInputChanged(ChangeEventArgs changeEventArgs) void OnInputChanged(ChangeEventArgs changeEventArgs)
{ {
@@ -73,16 +69,12 @@
} }
} }
[Parameter] [Parameter] public bool ReadOnly { get; set; }
public bool ReadOnly { get; set; } = false;
[Parameter] [Parameter] public int Value { get; set; }
public int Value { get; set; } = 0;
[Parameter] [Parameter] public int Min { get; set; }
public int Min { get; set; } = 0;
[Parameter] [Parameter] public int Max { get; set; } = 2048;
public int Max { get; set; } = 2048;
} }
+4 -8
View File
@@ -17,16 +17,12 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? FormLabelComponent { get; set; }
public RenderFragment? FormLabelComponent { get; set; }
[Parameter] [Parameter] public RenderFragment? FormInfoComponent { get; set; }
public RenderFragment? FormInfoComponent { get; set; }
[Parameter] [Parameter] public RenderFragment? ChildContent { get; set; }
public RenderFragment? ChildContent { get; set; }
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
} }
+10 -19
View File
@@ -11,7 +11,7 @@
type="text" type="text"
rows="@Rows" rows="@Rows"
value="@Value" value="@Value"
@onchange="OnChange" /> @onchange="OnChange"/>
</div> </div>
@if (Info != "") @if (Info != "")
{ {
@@ -56,32 +56,23 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? FormLabelComponent { get; set; }
public RenderFragment? FormLabelComponent { get; set; }
[Parameter] [Parameter] public RenderFragment? FormInfoComponent { get; set; }
public RenderFragment? FormInfoComponent { get; set; }
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
[Parameter] [Parameter] public bool? ReadOnly { get; set; }
public bool? ReadOnly { get; set; }
[Parameter] [Parameter] public string? Value { get; set; }
public string? Value { get; set; }
[Parameter] [Parameter] public int Rows { get; set; } = 4;
public int Rows { get; set; } = 4;
[Parameter] [Parameter] public string Label { get; set; } = "";
public string Label { get; set; } = "";
[Parameter] [Parameter] public string Info { get; set; } = "";
public string Info { get; set; } = "";
[Parameter] [Parameter] public string Placeholder { get; set; } = "";
public string Placeholder { get; set; } = "";
private string labelId = ""; private string labelId = "";
+9 -18
View File
@@ -52,34 +52,25 @@
@code { @code {
[Parameter] [Parameter] public string Id { get; set; } = "";
public string Id { get; set; } = "";
[Parameter] [Parameter] public string Label { get; set; } = "";
public string Label { get; set; } = "";
[Parameter] [Parameter] public string Info { get; set; } = "";
public string Info { get; set; } = "";
[Parameter] [Parameter] public string Placeholder { get; set; } = "";
public string Placeholder { get; set; } = "";
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnInput { get; set; }
public EventCallback<ChangeEventArgs> OnInput { get; set; }
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
[Parameter] [Parameter] public EventCallback OnFocus { get; set; }
public EventCallback OnFocus { get; set; }
[Parameter] [Parameter] public bool ReadOnly { get; set; }
public bool ReadOnly { get; set; }
[Parameter] [Parameter] public string Value { get; set; } = "";
public string Value { get; set; } = "";
private string labelId = ""; private string labelId = "";
+39 -44
View File
@@ -46,72 +46,67 @@
} }
.switch { .switch {
position: relative; position: relative;
width: 60px; width: 60px;
height: 34px; height: 34px;
display: flex; display: flex;
align-items: center; align-items: center;
top: 4px; top: 4px;
} }
.switch input { .switch input {
opacity: 0; opacity: 0;
} }
.slider { .slider {
position: absolute; position: absolute;
cursor: pointer; cursor: pointer;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
background-color: var(--paper-border); background-color: var(--paper-border);
-webkit-transition: .4s; -webkit-transition: .4s;
transition: .4s; transition: .4s;
border-radius: 34px; border-radius: 34px;
} }
.slider:before { .slider:before {
position: absolute; position: absolute;
content: ""; content: "";
height: 26px; height: 26px;
width: 26px; width: 26px;
left: 4px; left: 4px;
bottom: 4px; bottom: 4px;
background-color: white; background-color: white;
-webkit-transition: .4s; -webkit-transition: .4s;
transition: .4s; transition: .4s;
border-radius: 50%; border-radius: 50%;
} }
.checked + .slider { .checked + .slider {
background-color: #7838df; background-color: #7838df;
} }
.checked + .slider:before { .checked + .slider:before {
-webkit-transform: translateX(26px); -webkit-transform: translateX(26px);
-ms-transform: translateX(26px); -ms-transform: translateX(26px);
transform: translateX(26px); transform: translateX(26px);
} }
</style> </style>
@code { @code {
[Parameter] [Parameter] public string Label { get; set; } = "";
public string Label { get; set; } = "";
[Parameter] [Parameter] public string Info { get; set; } = "";
public string Info { get; set; } = "";
[Parameter] [Parameter] public EventCallback<ChangeEventArgs> OnChange { get; set; }
public EventCallback<ChangeEventArgs> OnChange { get; set; }
[Parameter] [Parameter] public bool ReadOnly { get; set; }
public bool ReadOnly { get; set; }
[Parameter] [Parameter] public bool Value { get; set; }
public bool Value { get; set; }
private string labelId = ""; private string labelId = "";
+2 -4
View File
@@ -37,10 +37,8 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment? InfoQuestionComponent { get; set; }
public RenderFragment? InfoQuestionComponent { get; set; }
[Parameter] [Parameter] public RenderFragment? InfoAnswerComponent { get; set; }
public RenderFragment? InfoAnswerComponent { get; set; }
} }
+13 -16
View File
@@ -19,31 +19,28 @@
background-color: var(--secondary); background-color: var(--secondary);
} }
.@MyButtonType.Primary.ToString().ToLower():hover { .@MyButtonType.Primary.ToString().ToLower():hover {
background-color: var(--primary-hover); background-color: var(--primary-hover);
border-color: var(--primary-border-hover); border-color: var(--primary-border-hover);
color: white; color: white;
} }
.@MyButtonType.Secondary.ToString().ToLower():hover { .@MyButtonType.Secondary.ToString().ToLower():hover {
background-color: var(--secondary-hover); background-color: var(--secondary-hover);
border-color: var(--secondary-border-hover); border-color: var(--secondary-border-hover);
color: white; color: white;
} }
</style> </style>
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
[Parameter] [Parameter] public EventCallback<EventArgs> OnClick { get; set; }
public EventCallback<EventArgs> OnClick { get; set; } = default!;
[Parameter] [Parameter] public MyButtonType MyButtonType { get; set; }
public MyButtonType MyButtonType { get; set; } = default!;
private void ButtonClicked(EventArgs eventArgs) private void ButtonClicked(EventArgs eventArgs)
{ {
+47 -48
View File
@@ -7,76 +7,75 @@
{ {
styleClass = "selected"; styleClass = "selected";
} }
<button @onclick="@(e => OnChangeChoice(choice))" class="groupChoiceButton @styleClass">@choice</button> <button @onclick="@(e => OnChangeChoice(choice))" class="groupChoiceButton @styleClass">@choice</button>
} }
</div> </div>
</div> </div>
<style> <style>
.groupButtonContainerContainer { .groupButtonContainerContainer {
margin: auto; margin: auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;
justify-items: flex-start; justify-items: flex-start;
} }
.groupButtonContainer {
display: flex;
background-color: var(--background);
gap: 2px;
margin-right: auto;
border-radius: 8px;
}
.groupChoiceButton { .groupButtonContainer {
background-color: var(--primary); display: flex;
color: white; background-color: var(--background);
padding: 12px; gap: 2px;
border: 1px solid var(--primary); margin-right: auto;
} border-radius: 8px;
}
.groupChoiceButton:hover { .groupChoiceButton {
background-color: var(--primary-hover); background-color: var(--primary);
border-color: var(--primary-border-hover); color: white;
} padding: 12px;
border: 1px solid var(--primary);
}
.selected { .groupChoiceButton:hover {
background-color: var(--secondary); background-color: var(--primary-hover);
color: white; border-color: var(--primary-border-hover);
font-style: normal; }
font-weight: bold;
}
.selected:hover { .selected {
background-color: var(--secondary-hover); background-color: var(--secondary);
border-color: var(--secondary-border-hover); color: white;
} font-style: normal;
font-weight: bold;
}
.selected:hover {
background-color: var(--secondary-hover);
border-color: var(--secondary-border-hover);
}
.groupButtonContainer .groupChoiceButton:first-child { .groupButtonContainer .groupChoiceButton:first-child {
border-top-left-radius: 8px; border-top-left-radius: 8px;
border-bottom-left-radius: 8px; border-bottom-left-radius: 8px;
} }
.groupButtonContainer .groupChoiceButton:last-child { .groupButtonContainer .groupChoiceButton:last-child {
border-top-right-radius: 8px; border-top-right-radius: 8px;
border-bottom-right-radius: 8px; border-bottom-right-radius: 8px;
} }
</style> </style>
@code { @code {
[Parameter] [Parameter] public string Choice { get; set; } = default!;
public string Choice { get; set; } = default!;
[Parameter] [Parameter] public List<string> Choices { get; set; } = default!;
public List<string> Choices { get; set; } = default!;
[Parameter] [Parameter] public EventCallback<string> OnClick { get; set; }
public EventCallback<string> OnClick { get; set; }
protected override void OnInitialized() protected override void OnInitialized()
+1 -2
View File
@@ -23,7 +23,6 @@
@code { @code {
[Parameter] [Parameter] public string Href { get; set; } = "";
public string Href { get; set; } = "";
} }
+1 -2
View File
@@ -23,7 +23,6 @@
@code { @code {
[Parameter] [Parameter] public string Href { get; set; } = "";
public string Href { get; set; } = "";
} }
+2 -3
View File
@@ -14,10 +14,9 @@ else
@code { @code {
[Parameter] [Parameter] public string EntityId { get; set; } = default!;
public string EntityId { get; set; } = default!;
private EntityModel Entity => DATA.Get()[EntityId]; private EntityModel Entity => EntityData.Get()[EntityId];
void EntityLabelClicked() void EntityLabelClicked()
{ {
+2 -4
View File
@@ -24,12 +24,10 @@
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
[Parameter] [Parameter] public string Href { get; set; } = "";
public string Href { get; set; } = "";
} }
@@ -30,26 +30,24 @@
padding: 5px; padding: 5px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.searchHotkey { .searchHotkey {
padding: 4px; padding: 4px;
background-color: rgba(255,255,255,0.05); background-color: rgba(255, 255, 255, 0.05);
border: 2px solid rgba(255,255,255,0.25); border: 2px solid rgba(255, 255, 255, 0.25);
border-radius: 4px; border-radius: 4px;
} }
</style> </style>
@code { @code {
[Parameter] [Parameter] public RenderFragment ChildContent { get; set; } = default!;
public RenderFragment ChildContent { get; set; } = default!;
[Parameter] [Parameter] public string Id { get; set; } = default!;
public string Id { get; set; } = default!;
private string _userAgent = ""; private string _userAgent = "";

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