Initial Commit

This commit is contained in:
2026-05-29 14:17:46 -04:00
commit b7d0676d5b
498 changed files with 30308 additions and 0 deletions
@@ -0,0 +1,61 @@
<div class="alertContainer @Type.ToLower()">
@if (Title != null)
{
<div class="alertTitle">
@Title
</div>
}
@if (Message != null)
{
<div>
@Message
</div>
}
</div>
<style>
.alertContainer {
border: 4px solid;
border-radius: 4px;
padding: 16px;
display: flex;
flex-direction: column;
justify-items: stretch;
width: 100%;
}
.alertContainer.@SeverityType.Warning.ToLower() {
background-color: var(--severity-warning-color);
border-color: var(--severity-warning-border-color);
}
.alertContainer.@SeverityType.Error.ToLower() {
background-color: var(--severity-error-color);
border-color: var(--severity-error-border-color);
}
.alertContainer.@SeverityType.Information.ToLower() {
background-color: var(--severity-information-color);
border-color: var(--severity-information-border-color);
}
.alertContainer.@SeverityType.Success.ToLower() {
background-color: var(--severity-success-color);
border-color: var(--severity-success-border-color);
}
.alertTitle {
font-weight: 800;
}
</style>
@code {
[Parameter] public RenderFragment? Title { get; set; }
[Parameter] public RenderFragment? Message { get; set; }
[Parameter] public string Type { get; set; } = SeverityType.Warning;
}
@@ -0,0 +1,46 @@
<div class="loadingContainer">
<div style="flex-grow: 1"></div>
<div class="loadingText">
Loading...
</div>
<div style="flex-grow: 3"></div>
</div>
<style>
@@keyframes loadingKeyframes {
0% {
font-size: 1.0rem
}
50% {
font-size: 1.4rem
}
100% {
font-size: 1.0rem
}
}
.loadingContainer {
width: 100%;
height: 100%;
display: flex;
flex-grow: 1;
justify-content: center;
background-color: black;
border-radius: 4px;
flex-direction: column;
}
.loadingText {
margin-left: auto;
margin-right: auto;
animation-name: loadingKeyframes;
animation-duration: 6s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
</style>
@code {
}
@@ -0,0 +1,100 @@
@inject IToastService toastService
@implements IDisposable
@if (Toast == null)
{
<div>Add toast object...</div>
}
else
{
<div onclick="@Dismiss" style="opacity: @Opacity()" class="toastContainer @Toast.SeverityType.ToLower()">
<div class="toastTitle">
@Toast.Title
</div>
<div>
@Toast.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 ToastModel? Toast { get; set; }
private readonly float removalTime = 1300;
private readonly float fadeoutTime = 1200;
private float Opacity()
{
if (Toast!.Age < fadeoutTime)
{
return 1;
}
return 1.0f - (Toast.Age - fadeoutTime) / (removalTime - fadeoutTime);
}
protected override void OnInitialized()
{
base.OnInitialized();
toastService.Subscribe(OnUpdate);
}
void Dismiss()
{
toastService.RemoveToast(Toast!);
}
void IDisposable.Dispose()
{
toastService.Unsubscribe(OnUpdate);
}
void OnUpdate()
{
if (Toast!.Age > removalTime)
{
toastService.RemoveToast(Toast);
}
}
}