Initial commit: NexusArchitect Professional Workstation Overhaul
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
<button class="nexus-btn @Class" @onclick="OnClick" disabled="@Disabled" @attributes="AdditionalAttributes">
|
||||
@ChildContent
|
||||
</button>
|
||||
|
||||
@code {
|
||||
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||
[Parameter] public string Class { get; set; } = string.Empty;
|
||||
[Parameter] public EventCallback<Microsoft.AspNetCore.Components.Web.MouseEventArgs> OnClick { get; set; }
|
||||
[Parameter] public bool Disabled { get; set; }
|
||||
[Parameter(CaptureUnmatchedValues = true)] public Dictionary<string, object>? AdditionalAttributes { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
.nexus-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 44px;
|
||||
min-height: 44px;
|
||||
padding: 0.5rem 1rem;
|
||||
background-color: var(--nexus-card);
|
||||
color: var(--nexus-neon);
|
||||
border: 1px solid var(--nexus-neon);
|
||||
font-family: var(--nexus-font-sans);
|
||||
font-weight: 500;
|
||||
font-size: 1rem;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
box-shadow: 0 0 5px rgba(0, 255, 153, 0.1);
|
||||
}
|
||||
|
||||
.nexus-btn:hover:not(:disabled) {
|
||||
background-color: rgba(0, 255, 153, 0.1);
|
||||
box-shadow: 0 0 15px rgba(0, 255, 153, 0.3);
|
||||
}
|
||||
|
||||
.nexus-btn:active:not(:disabled) {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.nexus-btn:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
border-color: #555;
|
||||
color: #555;
|
||||
box-shadow: none;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<svg class="nexus-icon @Class" viewBox="0 0 24 24" fill="currentColor" width="@Size" height="@Size" @attributes="AdditionalAttributes">
|
||||
@switch (Name.ToLowerInvariant())
|
||||
{
|
||||
case "robot":
|
||||
<path d="M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h5a2 2 0 0 1 2 2v2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2v2a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2a2 2 0 0 1-2-2v-2a2 2 0 0 1 2-2V9c0-1.1.9-2 2-2h5V5.73c-.6-.34-1-.99-1-1.73a2 2 0 0 1 2-2zM8 11v4h8v-4H8zm-2 0H4v4h2v-4zm14 0h-2v4h2v-4z" />
|
||||
break;
|
||||
case "play":
|
||||
<path d="M8 5v14l11-7z" />
|
||||
break;
|
||||
case "check":
|
||||
<path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" />
|
||||
break;
|
||||
case "search":
|
||||
<circle cx="11" cy="11" r="8" /><path d="m21 21-4.3-4.3" />
|
||||
break;
|
||||
case "message-square":
|
||||
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
|
||||
break;
|
||||
case "settings":
|
||||
<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" /><circle cx="12" cy="12" r="3" />
|
||||
break;
|
||||
case "bookmark":
|
||||
<path d="m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z" />
|
||||
break;
|
||||
case "target":
|
||||
<circle cx="12" cy="12" r="10" /><circle cx="12" cy="12" r="6" /><circle cx="12" cy="12" r="2" />
|
||||
break;
|
||||
default:
|
||||
<!-- Fallback circle -->
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
break;
|
||||
}
|
||||
</svg>
|
||||
|
||||
@code {
|
||||
[Parameter] public string Name { get; set; } = string.Empty;
|
||||
[Parameter] public string Size { get; set; } = "24";
|
||||
[Parameter] public string Class { get; set; } = string.Empty;
|
||||
[Parameter(CaptureUnmatchedValues = true)] public Dictionary<string, object>? AdditionalAttributes { get; set; }
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,10 @@
|
||||
.nexus-icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
transition: fill 0.2s ease, filter 0.2s ease;
|
||||
}
|
||||
|
||||
.neon-glow {
|
||||
fill: var(--nexus-neon);
|
||||
filter: drop-shadow(0 0 4px var(--nexus-neon));
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<div class="nexus-typography @VariantCssClass @Class" @attributes="AdditionalAttributes">
|
||||
@ChildContent
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter] public RenderFragment? ChildContent { get; set; }
|
||||
[Parameter] public string Class { get; set; } = string.Empty;
|
||||
[Parameter] public TypographyVariant Variant { get; set; } = TypographyVariant.UI;
|
||||
[Parameter(CaptureUnmatchedValues = true)] public Dictionary<string, object>? AdditionalAttributes { get; set; }
|
||||
|
||||
private string VariantCssClass => Variant switch
|
||||
{
|
||||
TypographyVariant.Heading => "nexus-heading",
|
||||
TypographyVariant.Ebook => "nexus-ebook",
|
||||
TypographyVariant.UI => "nexus-ui",
|
||||
_ => "nexus-ui"
|
||||
};
|
||||
|
||||
public enum TypographyVariant
|
||||
{
|
||||
Heading,
|
||||
Ebook,
|
||||
UI
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
.nexus-typography {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.nexus-heading {
|
||||
font-family: var(--nexus-font-sans);
|
||||
font-size: 2rem;
|
||||
font-weight: 600;
|
||||
color: white;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.nexus-ebook {
|
||||
font-family: var(--nexus-font-serif);
|
||||
font-size: 1.125rem;
|
||||
line-height: 1.65;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 1.5rem;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
|
||||
.nexus-ui {
|
||||
font-family: var(--nexus-font-sans);
|
||||
font-size: 1rem;
|
||||
color: #cccccc;
|
||||
}
|
||||
Reference in New Issue
Block a user