корзина кеш

This commit is contained in:
Alisa
2026-06-07 17:43:45 +03:00
parent 170bea76d5
commit 76bf5d8191
8 changed files with 530 additions and 15 deletions
+95
View File
@@ -1661,6 +1661,25 @@ a:hover {
font-weight: 700;
}
.subtle-button {
appearance: none;
flex: 0 0 auto;
border: 1px solid rgba(198, 57, 45, 0.24);
border-radius: 8px;
padding: 8px 12px;
font: inherit;
font-size: 14px;
font-weight: 900;
color: var(--brand-red);
background: #fff7f4;
cursor: pointer;
}
.subtle-button:hover {
border-color: rgba(198, 57, 45, 0.44);
background: #fff0eb;
}
.muted {
margin: 0;
font-size: 15px;
@@ -2536,6 +2555,14 @@ body[data-payment-mode="cash"] .price-tier-popover:hover {
padding: 20px;
}
.cart-heading-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center;
justify-content: flex-end;
}
.cart-summary {
position: sticky;
top: 182px;
@@ -2546,6 +2573,17 @@ body[data-payment-mode="cash"] .price-tier-popover:hover {
color: var(--muted);
}
.cart-sync-note {
margin: 0 0 14px;
border: 1px solid rgba(198, 57, 45, 0.18);
border-radius: 8px;
padding: 11px 13px;
color: var(--brand-green);
font-size: 14px;
font-weight: 800;
background: #fffaf1;
}
.cart-items {
display: grid;
gap: 10px;
@@ -2563,6 +2601,22 @@ body[data-payment-mode="cash"] .price-tier-popover:hover {
background: #f8faf5;
}
.cart-row.is-unavailable {
border-color: rgba(93, 102, 89, 0.22);
background: #eef0eb;
opacity: 0.84;
}
.cart-row.has-price-drop {
border-color: rgba(31, 122, 69, 0.34);
background: #f3fbf1;
}
.cart-row.has-package-change {
border-color: rgba(196, 117, 36, 0.34);
background: #fffaf0;
}
.cart-row-image {
overflow: hidden;
display: grid;
@@ -2579,6 +2633,11 @@ body[data-payment-mode="cash"] .price-tier-popover:hover {
object-fit: cover;
}
.cart-row.is-unavailable .cart-row-image img {
filter: grayscale(1);
opacity: 0.62;
}
.cart-row-main h2 {
margin: 0 0 4px;
font-size: 16px;
@@ -2590,6 +2649,33 @@ body[data-payment-mode="cash"] .price-tier-popover:hover {
color: var(--muted);
}
.cart-row-price-drop {
color: #1f7a45;
font-weight: 950;
border-bottom: 1px dotted currentColor;
cursor: help;
}
.cart-row-warning,
.cart-row-package-change {
margin: 6px 0 0;
font-size: 13px;
font-weight: 900;
}
.cart-row-warning {
color: var(--brand-red);
}
.cart-row-package-change {
grid-column: 2 / -1;
border-radius: 8px;
padding: 7px 10px;
color: #7b471a;
background: rgba(196, 117, 36, 0.12);
cursor: help;
}
.cart-row-controls {
display: grid;
grid-template-columns: 32px 32px 32px;
@@ -2610,6 +2696,11 @@ body[data-payment-mode="cash"] .price-tier-popover:hover {
cursor: pointer;
}
.cart-row-controls button:disabled {
cursor: not-allowed;
opacity: 0.48;
}
.cart-row-controls strong {
text-align: center;
}
@@ -4364,6 +4455,10 @@ body[data-payment-mode="invoice"] .invoice-benefit-banner {
justify-self: start;
}
.cart-row-package-change {
grid-column: 1 / -1;
}
.cart-payment-options,
.cart-delivery-options {
display: grid;
+2
View File
@@ -3,6 +3,7 @@
declare(strict_types=1);
use App\Controllers\CatalogController;
use App\Controllers\CartController;
use App\Controllers\HomeController;
use App\Controllers\PageController;
use App\Controllers\PriceRequestController;
@@ -110,6 +111,7 @@ $catalogSearchHandler = static function (?string $rawQuery = null): void {
$router->get('/', static fn () => (new HomeController())->index());
$router->post('/price-request', static fn () => (new PriceRequestController())->store());
$router->post('/api/cart/sync', static fn () => (new CartController())->sync());
$router->get('/search', static fn () => $catalogSearchHandler());
$router->get('/search/{query}', static fn (string $query) => $catalogSearchHandler($query));
$router->get('/catalog', static fn () => trim((string) ($_GET['q'] ?? '')) !== '' ? $catalogSearchHandler() : (new CatalogController())->index());