Removed vulnerabilities

This commit is contained in:
2026-07-18 10:25:41 +02:00
parent 1efe1ff21e
commit c9a5d3a79c
10 changed files with 2139 additions and 1268 deletions
File diff suppressed because it is too large Load Diff
+11 -8
View File
@@ -101,20 +101,23 @@ public partial class Home : ComponentBase
protected override async Task OnInitializedAsync()
{
if (CartService.ShoppingCart.Items.Count == 0)
await CartService.LoadCartFromStorageAsync();
//if (CartService.ShoppingCart.Items.Count == 0)
// await CartService.LoadCartFromStorageAsync();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender == false && HydrationService.CartHydrated == false)
{
if(!CartService.ShoppingCart.CustomerId.HasValue)
await HydrationService.EnsureCustomerExistsAsync(CancellationToken);
}
//if (firstRender == false && HydrationService.CartHydrated == false)
//{
// if(!CartService.ShoppingCart.CustomerId.HasValue)
// await HydrationService.EnsureCustomerExistsAsync(CancellationToken);
//}
}
protected override async Task OnParametersSetAsync() => await LoadCatalogDataAsync();
protected override async Task OnParametersSetAsync()
{
//await LoadCatalogDataAsync();
}
private async Task LoadCatalogDataAsync()
{
+61 -161
View File
@@ -1,177 +1,77 @@
/* Expanding Search Input Controls */
.search-input-container {
max-width: 0;
opacity: 0;
overflow: hidden;
transition: max-width 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s ease;
/* --- Centering Container --- */
.home-portal-container {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.search-input-container.is-active {
max-width: 280px;
opacity: 1;
/* --- Invisible Wrapper --- */
.artistic-portal {
display: flex;
flex-direction: column;
align-items: center;
gap: 1rem;
/* Make the whole block interactive */
cursor: pointer;
transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.artistic-portal:hover {
transform: translateY(-5px) scale(1.02);
}
.custom-search-field {
font-size: 0.8rem;
height: 32px;
box-shadow: none !important;
/* --- The Illustration --- */
.portal-illustration {
width: 100%;
max-width: 450px; /* Scales nicely on larger screens */
height: auto;
/* Adds a beautiful glass-like shadow behind the vector lines */
filter: drop-shadow(0 15px 25px rgba(0, 0, 0, 0.3));
transition: filter 0.4s ease;
}
/* Structural Layout Typography */
.branding-logo {
font-size: 1.1rem;
letter-spacing: -0.5px;
.artistic-portal:hover .portal-illustration {
filter: drop-shadow(0 25px 35px rgba(0, 0, 0, 0.4)) drop-shadow(0 0 15px rgba(255, 255, 255, 0.1));
}
.text-hero-wrapper {
margin-top: 5rem;
margin-bottom: 3.5rem;
/* --- Ambient Animations inside the SVG --- */
.float-slow {
animation: floatVertical 6s ease-in-out infinite;
transform-origin: center;
}
.master-headline {
letter-spacing: -1.5px;
font-weight: 400;
line-height: 1.15;
.float-medium {
animation: floatVertical 4s ease-in-out infinite reverse;
transform-origin: center;
}
.sub-headline {
max-width: 520px;
font-size: 0.95rem;
@keyframes floatVertical {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-12px);
}
}
/* --- The Text --- */
.read-text {
color: #f8f9fa;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 2rem;
font-weight: 300;
line-height: 1.6;
letter-spacing: 0.35em;
margin-left: 0.35em; /* Compensates for the extra tracking on the right side */
/* Soft glow */
text-shadow: 0 4px 15px rgba(248, 249, 250, 0.2);
transition: all 0.4s ease;
}
/* Filtering Dropdown Drawer Settings */
.filter-dropdown-panel {
border-radius: 12px;
.artistic-portal:hover .read-text {
color: #ffffff;
letter-spacing: 0.4em;
text-shadow: 0 4px 20px rgba(248, 249, 250, 0.5);
}
.panel-section-heading {
letter-spacing: 0.5px;
font-size: 0.7rem;
}
.reset-link-btn {
font-size: 0.7rem;
}
/* Custom Minimal Separator Rule Layout */
.custom-milled-line {
height: 35px;
margin-top: 5px;
margin-bottom: 25px;
z-index: 0;
pointer-events: none;
}
.center-bloom-shadow {
bottom: 15px;
width: 55%;
height: 50px;
background: radial-gradient(ellipse at bottom, rgba(20, 20, 20, 0.07) 0%, rgba(40, 40, 40, 0.02) 60%, rgba(255, 255, 255, 0) 100%);
filter: blur(10px);
}
.core-horizontal-rule {
bottom: 15px;
height: 1px;
background: linear-gradient(90deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.15) 50%, rgba(0,0,0,0) 100%);
}
/* View Engine Layout Presentation Variants: Grid Cards */
.book-grid-card {
background-color: #F1F1F1;
border-radius: 12px;
min-height: 380px;
}
.badge-new-arrival {
background-color: #E63946;
font-size: 0.75rem;
}
.book-spine-fallback {
width: 130px;
height: 185px;
font-size: 0.65rem;
letter-spacing: 1px;
border-radius: 2px;
}
.product-card-title {
font-size: 0.95rem;
font-weight: 500;
}
/* View Engine Layout Presentation Variants: List Rows */
.list-row-item {
border-bottom: 1px solid rgba(0,0,0,0.06);
transition: background-color 0.2s ease;
}
.list-row-item:hover {
background-color: rgba(0,0,0,0.01);
}
.structural-list-left {
flex: 2;
}
.list-item-title {
font-size: 0.95rem;
min-width: 260px;
}
.list-item-author {
min-width: 160px;
}
.list-item-tag {
font-size: 0.65rem;
}
.list-new-badge {
font-size: 0.65rem;
}
.list-item-price {
font-size: 0.9rem;
min-width: 80px;
text-align: right;
}
/* Enable native smooth scrolling page-wide */
html {
scroll-behavior: smooth;
}
/* Back to Top Icon Layout Presentation */
.back-to-top-btn {
position: fixed !important;
bottom: 32px;
right: 32px;
width: 42px;
height: 42px;
border-radius: 50% !important;
text-decoration: none !important;
/* Dual-tone contrast visibility profile */
background-color: #ffffff !important;
color: #1a1a1a !important;
border: 2px solid #1a1a1a !important;
box-shadow: 0 0 0 2px #ffffff, 0 4px 12px rgba(0, 0, 0, 0.15) !important;
z-index: 2147483647 !important;
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.back-to-top-btn:hover {
transform: translateY(-4px);
background-color: #1a1a1a !important;
color: #ffffff !important;
border-color: #ffffff !important;
box-shadow: 0 0 0 2px #1a1a1a, 0 6px 16px rgba(0, 0, 0, 0.25) !important;
}
/* Direct the smooth scroll action straight to the layout viewport boundary */
#top-target {
scroll-margin-top: 100vh;
}