Implemented main home design and cart viewer

This commit is contained in:
Khwezi Mngoma
2026-05-23 15:37:44 +02:00
parent d8cb68e8bf
commit 5e839dca03
8 changed files with 1000 additions and 139 deletions
@@ -1,98 +1,84 @@
.page {
position: relative;
display: flex;
flex-direction: column;
/* --- Midrand Books Sliding Cart Extensions --- */
/* Dimmed backdrop background blur styling */
.cart-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.25);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
z-index: 1040;
opacity: 0;
pointer-events: none;
transition: opacity 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
main {
flex: 1;
.cart-overlay.is-visible {
opacity: 1;
pointer-events: auto;
}
/* Slide-out Sidebar Panel layout specification */
.cart-drawer {
position: fixed;
top: 0;
right: -420px;
width: 100%;
max-width: 400px;
height: 100vh;
z-index: 1050;
pointer-events: none; /* Block layout actions while hidden off-screen */
transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.cart-drawer.is-open {
transform: translateX(-420px);
pointer-events: auto; /* Allow complete drawer clicks once slid forward */
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
/* FIXED: Prevent badge rendering from stealing button-down mouse highlights */
.cart-badge {
position: absolute;
top: 2px;
right: 2px;
background-color: #1A1A1A;
color: #FFF;
font-size: 0.62rem;
font-weight: 700;
border-radius: 50%;
width: 15px;
height: 15px;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
}
.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;
}
/* Micro typography utility sizes */
.xx-small {
font-size: 0.68rem;
}
@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;
}
/* Clean dashed divider lines for item items listing styling */
.border-bottom-dashed {
border-bottom: 1px dashed rgba(0, 0, 0, 0.12);
}
#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;
/* Custom quantity container inline metrics layout structure */
.quantity-picker {
padding: 2px 4px;
}
#blazor-error-ui .dismiss {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
.quantity-picker button {
font-size: 0.85rem;
font-weight: 600;
line-height: 1;
}
.quantity-picker button:hover {
background-color: rgba(0,0,0,0.05);
border-radius: 50%;
}