Welcome back, Demo Restaurant
+Here's what's happening with your meals today.
+diff --git a/admin/css/admin.css b/admin/css/admin.css index 7753537..8eb2827 100644 --- a/admin/css/admin.css +++ b/admin/css/admin.css @@ -972,3 +972,219 @@ img { max-width: 100%; height: auto; } max-width: 80rem; } } + +/* ========================================== + DASHBOARD-SPECIFIC STYLES + ========================================== */ + +.dashboard-grid { + display: grid; + grid-template-columns: 1fr; + gap: var(--gf-space-6); +} + +@media (min-width: 1024px) { + .dashboard-grid { + grid-template-columns: 1.2fr 0.8fr; + } +} + +/* Top Meals List */ +.top-meals-list { + display: flex; + flex-direction: column; +} + +.top-meal-item { + display: flex; + align-items: center; + gap: var(--gf-space-3); + padding: var(--gf-space-3) 0; + border-bottom: 1px solid var(--gf-neutral-100); +} + +.top-meal-item:last-child { border-bottom: none; } + +.top-meal-rank { + width: 1.75rem; + height: 1.75rem; + border-radius: var(--gf-radius-full); + background: var(--gf-neutral-100); + color: var(--gf-neutral-600); + font-size: var(--gf-text-sm); + font-weight: var(--gf-weight-semibold); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.top-meal-item:first-child .top-meal-rank { + background: var(--gf-primary-bg); + color: var(--gf-primary); +} + +.top-meal-info { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; +} + +.top-meal-info strong { + font-size: var(--gf-text-sm); + font-weight: var(--gf-weight-semibold); + color: var(--gf-neutral-800); +} + +/* ========================================== + MEALS PAGE STYLES + ========================================== */ + +.meals-toolbar { + display: flex; + flex-direction: column; + gap: var(--gf-space-3); + margin-bottom: var(--gf-space-6); +} + +@media (min-width: 640px) { + .meals-toolbar { + flex-direction: row; + align-items: center; + justify-content: space-between; + } +} + +.meals-grid { + display: grid; + grid-template-columns: 1fr; + gap: var(--gf-space-4); +} + +@media (min-width: 640px) { + .meals-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .meals-grid { + grid-template-columns: repeat(3, 1fr); + } +} + +.meal-card { + background: var(--gf-bg); + border-radius: var(--gf-radius-lg); + box-shadow: var(--gf-shadow-card); + border: 1px solid var(--gf-neutral-200); + overflow: hidden; + transition: box-shadow var(--gf-duration-normal) var(--gf-ease), transform var(--gf-duration-normal) var(--gf-ease); +} + +.meal-card:hover { + box-shadow: 0 4px 12px rgba(0,0,0,0.12); + transform: translateY(-2px); +} + +.meal-card-img { + width: 100%; + height: 10rem; + object-fit: cover; + background: var(--gf-neutral-100); + display: block; +} + +.meal-card-img-placeholder { + width: 100%; + height: 10rem; + background: var(--gf-neutral-100); + display: flex; + align-items: center; + justify-content: center; + font-size: 2.5rem; + color: var(--gf-neutral-300); +} + +.meal-card-body { + padding: var(--gf-space-4); +} + +.meal-card-title { + font-family: var(--gf-font-heading); + font-size: var(--gf-text-base); + font-weight: var(--gf-weight-semibold); + color: var(--gf-neutral-900); + margin-bottom: var(--gf-space-1); +} + +.meal-card-meta { + display: flex; + align-items: center; + gap: var(--gf-space-3); + font-size: var(--gf-text-xs); + color: var(--gf-neutral-500); + margin-bottom: var(--gf-space-3); +} + +.meal-card-desc { + font-size: var(--gf-text-sm); + color: var(--gf-neutral-600); + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + margin-bottom: var(--gf-space-3); +} + +.meal-card-footer { + display: flex; + align-items: center; + justify-content: space-between; + padding-top: var(--gf-space-3); + border-top: 1px solid var(--gf-neutral-100); +} + +.meal-card-footer .actions { + display: flex; + gap: var(--gf-space-2); +} + +/* Modal form image preview */ +.img-preview-wrapper { + width: 100%; + height: 8rem; + border: 2px dashed var(--gf-neutral-300); + border-radius: var(--gf-radius-md); + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + cursor: pointer; + transition: border-color var(--gf-duration-fast); + background: var(--gf-neutral-50); + position: relative; +} + +.img-preview-wrapper:hover { + border-color: var(--gf-primary); +} + +.img-preview-wrapper img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.img-preview-wrapper .upload-label { + text-align: center; + color: var(--gf-neutral-400); + font-size: var(--gf-text-sm); +} + +.img-preview-wrapper .upload-label span { + display: block; + font-size: 1.5rem; + margin-bottom: var(--gf-space-1); +} diff --git a/admin/dashboard.html b/admin/dashboard.html new file mode 100644 index 0000000..0f5f01d --- /dev/null +++ b/admin/dashboard.html @@ -0,0 +1,315 @@ + + +
+ + +Here's what's happening with your meals today.
+Add, edit, and manage your restaurant's meal listings.
+Track and manage incoming meal orders from trades.
+See how your meals are being traded on Grubflip.
+