feat(admin): P5 — Recipes, Reservations, Happy Hour, Packages, Consent, Doctors, Follow-up

- C2: Ingredient/recipe management (Café) — 8 demo items with stock status
- R3: Reservation management (Restaurant) — booking table with 5 demo entries
- K3: Happy Hour config (Karaoke) — time slots, discounts, day picker, combos
- S4: Service packages (Spa) — 3 package cards with pricing/savings
- B5: Consent forms (Beauty) — 4 template cards with field counts
- B6: Doctor management (Beauty) — 4 specialist cards with credentials
- B7: Follow-up scheduler (Beauty) — re-exam table with status tracking
This commit is contained in:
Ho Ngoc Hai
2026-03-01 05:01:57 +07:00
parent 81e357d226
commit 8ec9e2a45a
2 changed files with 279 additions and 0 deletions

View File

@@ -1073,6 +1073,271 @@
</div>
break;
// ═══ C2: RECIPES / NGUYÊN LIỆU (Café) ═══
case "recipes":
<div class="admin-panel">
<div class="admin-panel__header" style="display:flex;justify-content:space-between;align-items:center;">
<h3 class="admin-panel__title">🧪 Công thức & Nguyên liệu</h3>
<button class="admin-btn-primary" style="font-size:12px;padding:6px 14px;"><i data-lucide="plus" style="width:14px;height:14px;margin-right:4px;"></i>Thêm nguyên liệu</button>
</div>
<div class="admin-panel__body" style="padding:0;">
<table class="admin-table" style="width:100%;"><thead><tr>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Nguyên liệu</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Loại</th>
<th style="padding:12px 16px;text-align:right;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Tồn kho</th>
<th style="padding:12px 16px;text-align:right;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Giá/đơn vị</th>
<th style="padding:12px 16px;text-align:center;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Trạng thái</th>
</tr></thead><tbody>
@foreach (var (name, cat, stock, price, status, color) in new[] {
("Cà phê Arabica", "Hạt", "12.5 kg", "450,000₫/kg", "Đủ", "#22C55E"),
("Cà phê Robusta", "Hạt", "8.0 kg", "320,000₫/kg", "Đủ", "#22C55E"),
("Sữa tươi", "Sữa", "25 lít", "42,000₫/lít", "Đủ", "#22C55E"),
("Syrup Caramel", "Syrup", "3 chai", "85,000₫/chai", "Sắp hết", "#F59E0B"),
("Bột Matcha", "Bột", "1.2 kg", "680,000₫/kg", "Sắp hết", "#F59E0B"),
("Đường trắng", "Gia vị", "15 kg", "22,000₫/kg", "Đủ", "#22C55E"),
("Trà Ô Long", "Trà", "2.0 kg", "550,000₫/kg", "Đủ", "#22C55E"),
("Đá viên", "Khác", "50 kg", "15,000₫/kg", "Đủ", "#22C55E") })
{
<tr style="border-top:1px solid var(--admin-border-subtle);">
<td style="padding:12px 16px;font-weight:600;">@name</td>
<td style="padding:12px 16px;"><span style="font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(139,92,246,0.15);color:#A78BFA;">@cat</span></td>
<td style="padding:12px 16px;text-align:right;font-weight:600;">@stock</td>
<td style="padding:12px 16px;text-align:right;font-size:13px;color:var(--admin-orange-primary);">@price</td>
<td style="padding:12px 16px;text-align:center;"><span style="font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(@(color == "#22C55E" ? "34,197,94" : "245,158,11"),0.15);color:@color;">@status</span></td>
</tr>
}
</tbody></table>
</div>
</div>
break;
// ═══ R3: RESERVATIONS / ĐẶT BÀN (Nhà hàng) ═══
case "reservations":
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:16px;">
<div class="admin-stat-card"><div class="admin-stat-card__icon" style="background:rgba(59,130,246,0.1);"><i data-lucide="calendar-check" style="color:#3B82F6;"></i></div><div class="admin-stat-card__content"><span class="admin-stat-card__value">5</span><span class="admin-stat-card__label">Hôm nay</span></div></div>
<div class="admin-stat-card"><div class="admin-stat-card__icon" style="background:rgba(34,197,94,0.1);"><i data-lucide="check-circle" style="color:#22C55E;"></i></div><div class="admin-stat-card__content"><span class="admin-stat-card__value">3</span><span class="admin-stat-card__label">Đã xác nhận</span></div></div>
<div class="admin-stat-card"><div class="admin-stat-card__icon" style="background:rgba(245,158,11,0.1);"><i data-lucide="clock" style="color:#F59E0B;"></i></div><div class="admin-stat-card__content"><span class="admin-stat-card__value">2</span><span class="admin-stat-card__label">Chờ duyệt</span></div></div>
</div>
<div class="admin-panel">
<div class="admin-panel__header" style="display:flex;justify-content:space-between;align-items:center;">
<h3 class="admin-panel__title">📅 Danh sách đặt bàn</h3>
<button class="admin-btn-primary" style="font-size:12px;padding:6px 14px;"><i data-lucide="plus" style="width:14px;height:14px;margin-right:4px;"></i>Tạo đặt bàn</button>
</div>
<div class="admin-panel__body" style="padding:0;">
<table class="admin-table" style="width:100%;"><thead><tr>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Khách</th>
<th style="padding:12px 16px;text-align:center;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Số người</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Thời gian</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Bàn</th>
<th style="padding:12px 16px;text-align:center;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Trạng thái</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Ghi chú</th>
</tr></thead><tbody>
@foreach (var (guest, ppl, time, table, status, note, color) in new[] {
("Nguyễn Văn A", "4", "18:00", "Bàn 5", "Xác nhận", "Sinh nhật", "#22C55E"),
("Trần Thị B", "2", "19:00", "Bàn 2", "Xác nhận", "", "#22C55E"),
("Lê Minh C", "8", "19:30", "VIP 1", "Chờ duyệt", "Tiệc công ty", "#F59E0B"),
("Phạm Dương D", "6", "20:00", "Bàn 7", "Xác nhận", "Kỷ niệm", "#22C55E"),
("Hoàng E", "3", "20:30", "Bàn 3", "Chờ duyệt", "", "#F59E0B") })
{
<tr style="border-top:1px solid var(--admin-border-subtle);">
<td style="padding:12px 16px;font-weight:600;">@guest</td>
<td style="padding:12px 16px;text-align:center;font-weight:600;">@ppl</td>
<td style="padding:12px 16px;color:var(--admin-orange-primary);font-weight:600;">@time</td>
<td style="padding:12px 16px;">@table</td>
<td style="padding:12px 16px;text-align:center;"><span style="font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(@(color == "#22C55E" ? "34,197,94" : "245,158,11"),0.15);color:@color;">@status</span></td>
<td style="padding:12px 16px;font-size:12px;color:var(--admin-text-tertiary);">@note</td>
</tr>
}
</tbody></table>
</div>
</div>
break;
// ═══ K3: HAPPY HOUR (Karaoke) ═══
case "happy-hour":
<div class="admin-panel">
<div class="admin-panel__header"><h3 class="admin-panel__title">⏰ Cấu hình Happy Hour</h3></div>
<div class="admin-panel__body">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;">
<div><label style="font-size:12px;font-weight:600;display:block;margin-bottom:4px;">Giờ bắt đầu</label><input type="time" value="14:00" style="width:100%;padding:10px 14px;border-radius:8px;background:var(--admin-bg-elevated);border:1px solid var(--admin-border-subtle);font-size:14px;color:var(--admin-text-primary);" /></div>
<div><label style="font-size:12px;font-weight:600;display:block;margin-bottom:4px;">Giờ kết thúc</label><input type="time" value="17:00" style="width:100%;padding:10px 14px;border-radius:8px;background:var(--admin-bg-elevated);border:1px solid var(--admin-border-subtle);font-size:14px;color:var(--admin-text-primary);" /></div>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;">
<div><label style="font-size:12px;font-weight:600;display:block;margin-bottom:4px;">Giảm giá phòng (%)</label><input type="number" value="30" min="0" max="100" style="width:100%;padding:10px 14px;border-radius:8px;background:var(--admin-bg-elevated);border:1px solid var(--admin-border-subtle);font-size:14px;color:var(--admin-text-primary);" /></div>
<div><label style="font-size:12px;font-weight:600;display:block;margin-bottom:4px;">Giảm giá đồ uống (%)</label><input type="number" value="20" min="0" max="100" style="width:100%;padding:10px 14px;border-radius:8px;background:var(--admin-bg-elevated);border:1px solid var(--admin-border-subtle);font-size:14px;color:var(--admin-text-primary);" /></div>
</div>
<div style="margin-bottom:16px;"><label style="font-size:12px;font-weight:600;display:block;margin-bottom:4px;">Ngày áp dụng</label>
<div style="display:flex;gap:8px;flex-wrap:wrap;">
@foreach (var day in new[] { "T2", "T3", "T4", "T5", "T6", "T7", "CN" })
{
var isActive = day == "T2" || day == "T3" || day == "T4" || day == "T5";
<button style="padding:6px 14px;border-radius:8px;border:1px solid @(isActive ? "var(--admin-orange-primary)" : "var(--admin-border-subtle)");background:@(isActive ? "rgba(255,92,0,0.15)" : "transparent");color:@(isActive ? "var(--admin-orange-primary)" : "var(--admin-text-tertiary)");font-size:12px;font-weight:600;cursor:pointer;">@day</button>
}
</div>
</div>
<button class="admin-btn-primary" style="padding:10px 24px;"><i data-lucide="save" style="width:14px;height:14px;margin-right:6px;"></i>Lưu cấu hình</button>
</div>
</div>
<div class="admin-panel" style="margin-top:16px;">
<div class="admin-panel__header"><h3 class="admin-panel__title">🎉 Combo Happy Hour</h3></div>
<div class="admin-panel__body">
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;">
@foreach (var (combo, items, oldPrice, newPrice) in new[] {
("Combo Đôi", "2 giờ phòng + 2 bia", "350,000₫", "245,000₫"),
("Combo Nhóm", "3 giờ phòng + 5 đồ uống", "750,000₫", "525,000₫"),
("Combo VIP", "2 giờ VIP + trái cây + 4 bia", "980,000₫", "686,000₫") })
{
<div style="border:1px solid var(--admin-border-subtle);border-radius:10px;padding:16px;">
<div style="font-weight:700;font-size:14px;margin-bottom:4px;">@combo</div>
<div style="font-size:12px;color:var(--admin-text-tertiary);margin-bottom:8px;">@items</div>
<div style="display:flex;gap:8px;align-items:center;">
<span style="text-decoration:line-through;font-size:12px;color:var(--admin-text-tertiary);">@oldPrice</span>
<span style="font-weight:700;color:var(--admin-orange-primary);">@newPrice</span>
</div>
</div>
}
</div>
</div>
</div>
break;
// ═══ S4: SERVICE PACKAGES / GÓI DỊCH VỤ (Spa) ═══
case "packages":
<div class="admin-panel">
<div class="admin-panel__header" style="display:flex;justify-content:space-between;align-items:center;">
<h3 class="admin-panel__title">🎁 Gói dịch vụ</h3>
<button class="admin-btn-primary" style="font-size:12px;padding:6px 14px;"><i data-lucide="plus" style="width:14px;height:14px;margin-right:4px;"></i>Tạo gói mới</button>
</div>
<div class="admin-panel__body">
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;">
@foreach (var (pkg, sessions, services, price, savings) in new[] {
("Gói Thư Giãn", "5 buổi", "Massage body + Xông hơi", "2,500,000₫", "Tiết kiệm 500,000₫"),
("Gói VIP", "10 buổi", "Massage + Facial + Xông hơi + Chăm sóc da", "6,800,000₫", "Tiết kiệm 2,200,000₫"),
("Gói Cặp Đôi", "4 buổi", "2 người — Massage + Xông hơi", "3,600,000₫", "Tiết kiệm 800,000₫") })
{
<div style="border:1px solid var(--admin-border-subtle);border-radius:12px;overflow:hidden;">
<div style="padding:16px;background:linear-gradient(135deg, rgba(255,92,0,0.08), rgba(139,92,246,0.05));">
<div style="font-weight:700;font-size:16px;margin-bottom:4px;">@pkg</div>
<div style="font-size:12px;color:var(--admin-text-tertiary);">@sessions</div>
</div>
<div style="padding:16px;">
<div style="font-size:13px;margin-bottom:12px;color:var(--admin-text-secondary);">@services</div>
<div style="display:flex;justify-content:space-between;align-items:center;">
<span style="font-weight:700;font-size:18px;color:var(--admin-orange-primary);">@price</span>
<span style="font-size:11px;padding:3px 8px;border-radius:4px;background:rgba(34,197,94,0.15);color:#22C55E;font-weight:600;">@savings</span>
</div>
</div>
</div>
}
</div>
</div>
</div>
break;
// ═══ B5: CONSENT FORM / CAM KẾT KH (Thẩm mỹ) ═══
case "consent":
<div class="admin-panel">
<div class="admin-panel__header" style="display:flex;justify-content:space-between;align-items:center;">
<h3 class="admin-panel__title">📝 Mẫu cam kết khách hàng</h3>
<button class="admin-btn-primary" style="font-size:12px;padding:6px 14px;"><i data-lucide="plus" style="width:14px;height:14px;margin-right:4px;"></i>Tạo mẫu mới</button>
</div>
<div class="admin-panel__body">
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;">
@foreach (var (title, desc, icon, fields) in new[] {
("Cam kết Phẫu thuật", "Biểu mẫu đồng ý trước phẫu thuật thẩm mỹ", "syringe", "12 trường"),
("Cam kết Tiêm Filler", "Xác nhận rủi ro và đồng ý tiêm filler", "droplets", "8 trường"),
("Cam kết Laser", "Biểu mẫu đồng ý điều trị laser da", "zap", "10 trường"),
("Cam kết Chung", "Mẫu cam kết dịch vụ thẩm mỹ tổng quát", "file-text", "6 trường") })
{
<div style="border:1px solid var(--admin-border-subtle);border-radius:12px;padding:20px;cursor:pointer;transition:border-color 0.2s;" onmouseover="this.style.borderColor='var(--admin-orange-primary)'" onmouseout="this.style.borderColor='var(--admin-border-subtle)'">
<div style="display:flex;align-items:center;gap:12px;margin-bottom:12px;">
<div style="width:40px;height:40px;border-radius:10px;background:rgba(236,72,153,0.1);display:flex;align-items:center;justify-content:center;"><i data-lucide="@icon" style="width:20px;height:20px;color:#EC4899;"></i></div>
<div><div style="font-weight:700;font-size:14px;">@title</div><div style="font-size:11px;color:var(--admin-text-tertiary);">@fields</div></div>
</div>
<div style="font-size:13px;color:var(--admin-text-secondary);">@desc</div>
<div style="display:flex;gap:8px;margin-top:12px;">
<button style="padding:4px 10px;border-radius:6px;border:1px solid var(--admin-border-subtle);background:transparent;color:var(--admin-text-secondary);font-size:11px;cursor:pointer;"><i data-lucide="eye" style="width:10px;height:10px;margin-right:4px;"></i>Xem</button>
<button style="padding:4px 10px;border-radius:6px;border:1px solid var(--admin-border-subtle);background:transparent;color:var(--admin-text-secondary);font-size:11px;cursor:pointer;"><i data-lucide="edit" style="width:10px;height:10px;margin-right:4px;"></i>Sửa</button>
</div>
</div>
}
</div>
</div>
</div>
break;
// ═══ B6: DOCTORS / BÁC SĨ (Thẩm mỹ) ═══
case "doctors":
<div class="admin-panel">
<div class="admin-panel__header" style="display:flex;justify-content:space-between;align-items:center;">
<h3 class="admin-panel__title">🩺 Bác sĩ & Chuyên gia</h3>
<button class="admin-btn-primary" style="font-size:12px;padding:6px 14px;"><i data-lucide="plus" style="width:14px;height:14px;margin-right:4px;"></i>Thêm bác sĩ</button>
</div>
<div class="admin-panel__body">
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;">
@foreach (var (name, spec, cert, exp, color) in new[] {
("BS. Nguyễn Văn A", "Phẫu thuật thẩm mỹ", "Chứng chỉ BVTM", "15 năm", "#3B82F6"),
("BS. Trần Thị B", "Da liễu", "Thạc sĩ Y khoa", "10 năm", "#8B5CF6"),
("BS. Lê Minh C", "Nội tiết", "Ph.D. Nội tiết học", "12 năm", "#EC4899"),
("KTV. Phạm D", "Chăm sóc da", "Chứng chỉ Quốc tế CIDESCO", "8 năm", "#22C55E") })
{
<div style="border:1px solid var(--admin-border-subtle);border-radius:12px;padding:20px;">
<div style="display:flex;align-items:center;gap:12px;margin-bottom:12px;">
<div style="width:48px;height:48px;border-radius:14px;background:@($"{color}22");display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;color:@color;">@name[4]</div>
<div><div style="font-weight:700;font-size:14px;">@name</div><div style="font-size:12px;color:@color;">@spec</div></div>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px;">
<span style="font-size:10px;padding:2px 8px;border-radius:4px;background:rgba(139,92,246,0.1);color:#A78BFA;">@cert</span>
<span style="font-size:10px;padding:2px 8px;border-radius:4px;background:rgba(34,197,94,0.1);color:#22C55E;">@exp</span>
</div>
<div style="display:flex;gap:6px;">
<button style="flex:1;padding:6px 0;border-radius:6px;border:1px solid var(--admin-border-subtle);background:transparent;color:var(--admin-text-secondary);font-size:11px;cursor:pointer;">Lịch làm</button>
<button style="flex:1;padding:6px 0;border-radius:6px;border:1px solid var(--admin-border-subtle);background:transparent;color:var(--admin-text-secondary);font-size:11px;cursor:pointer;">Hồ sơ</button>
</div>
</div>
}
</div>
</div>
</div>
break;
// ═══ B7: FOLLOW-UP / TÁI KHÁM (Thẩm mỹ) ═══
case "followup":
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:16px;">
<div class="admin-stat-card"><div class="admin-stat-card__icon" style="background:rgba(236,72,153,0.1);"><i data-lucide="calendar-heart" style="color:#EC4899;"></i></div><div class="admin-stat-card__content"><span class="admin-stat-card__value">8</span><span class="admin-stat-card__label">Tái khám tháng này</span></div></div>
<div class="admin-stat-card"><div class="admin-stat-card__icon" style="background:rgba(245,158,11,0.1);"><i data-lucide="alert-triangle" style="color:#F59E0B;"></i></div><div class="admin-stat-card__content"><span class="admin-stat-card__value">2</span><span class="admin-stat-card__label">Sắp đến hạn</span></div></div>
<div class="admin-stat-card"><div class="admin-stat-card__icon" style="background:rgba(34,197,94,0.1);"><i data-lucide="check-circle" style="color:#22C55E;"></i></div><div class="admin-stat-card__content"><span class="admin-stat-card__value">6</span><span class="admin-stat-card__label">Đã hoàn thành</span></div></div>
</div>
<div class="admin-panel">
<div class="admin-panel__header"><h3 class="admin-panel__title">📅 Lịch tái khám</h3></div>
<div class="admin-panel__body" style="padding:0;">
<table class="admin-table" style="width:100%;"><thead><tr>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Khách hàng</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Dịch vụ đã làm</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Ngày tái khám</th>
<th style="padding:12px 16px;text-align:left;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Bác sĩ</th>
<th style="padding:12px 16px;text-align:center;font-size:12px;text-transform:uppercase;color:var(--admin-text-tertiary);">Trạng thái</th>
</tr></thead><tbody>
@foreach (var (patient, service, date, doctor, status, color) in new[] {
("Nguyễn Thị Hương", "Nâng mũi sụn", "05/03/2026", "BS. Nguyễn A", "Sắp đến", "#F59E0B"),
("Trần Văn Nam", "Cấy mỡ tự thân", "07/03/2026", "BS. Trần B", "Sắp đến", "#F59E0B"),
("Lê Thu Trang", "Trị nám laser", "01/03/2026", "BS. Lê C", "Hôm nay", "#EF4444"),
("Phạm Minh Tuấn", "Filler môi", "28/02/2026", "BS. Nguyễn A", "Hoàn thành", "#22C55E"),
("Hoàng Lan", "Botox trán", "25/02/2026", "BS. Trần B", "Hoàn thành", "#22C55E") })
{
<tr style="border-top:1px solid var(--admin-border-subtle);">
<td style="padding:12px 16px;font-weight:600;">@patient</td>
<td style="padding:12px 16px;font-size:13px;">@service</td>
<td style="padding:12px 16px;font-weight:600;color:var(--admin-orange-primary);">@date</td>
<td style="padding:12px 16px;font-size:13px;">@doctor</td>
<td style="padding:12px 16px;text-align:center;"><span style="font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(@(color == "#22C55E" ? "34,197,94" : color == "#F59E0B" ? "245,158,11" : "239,68,68"),0.15);color:@color;">@status</span></td>
</tr>
}
</tbody></table>
</div>
</div>
break;
// ═══ UNKNOWN SECTIONS ═══
default:
<div class="admin-panel">
@@ -1282,6 +1547,13 @@
case "settings": _sectionTitle = "Thiết lập"; _sectionIcon = "settings"; _sectionDescription = "Cài đặt cửa hàng."; break;
case "reports": _sectionTitle = "Báo cáo"; _sectionIcon = "bar-chart-2"; _sectionDescription = "Doanh thu, sản phẩm bán chạy."; break;
case "schedule": _sectionTitle = "Lịch làm việc"; _sectionIcon = "calendar-clock"; _sectionDescription = "Lịch ca làm việc nhân viên."; break;
case "recipes": _sectionTitle = "Nguyên liệu & Công thức"; _sectionIcon = "flask-conical"; _sectionDescription = "Quản lý nguyên liệu pha chế."; break;
case "reservations": _sectionTitle = "Đặt bàn"; _sectionIcon = "calendar-check"; _sectionDescription = "Quản lý đặt bàn trước."; break;
case "happy-hour": _sectionTitle = "Happy Hour"; _sectionIcon = "clock"; _sectionDescription = "Cấu hình khung giờ giảm giá."; break;
case "packages": _sectionTitle = "Gói dịch vụ"; _sectionIcon = "gift"; _sectionDescription = "Quản lý gói combo dịch vụ."; break;
case "consent": _sectionTitle = "Cam kết KH"; _sectionIcon = "file-check"; _sectionDescription = "Biểu mẫu đồng ý khách hàng."; break;
case "doctors": _sectionTitle = "Bác sĩ / CK"; _sectionIcon = "stethoscope"; _sectionDescription = "Quản lý bác sĩ và chuyên gia."; break;
case "followup": _sectionTitle = "Tái khám"; _sectionIcon = "calendar-heart"; _sectionDescription = "Lịch tái khám sau điều trị."; break;
default: _sectionTitle = Section ?? "Trang"; _sectionIcon = "layout-dashboard"; _sectionDescription = "Trang đang phát triển."; break;
}
}

View File

@@ -33,6 +33,7 @@ public static class ShopSidebarConfig
new("Tổng quan", "layout-dashboard", "overview"),
new("POS Bán hàng", "monitor", "pos"),
new("Menu & Đồ uống", "coffee", "menu"),
new("Nguyên liệu", "flask-conical", "recipes"),
new("Tồn kho", "warehouse", "inventory"),
new("Tài chính", "trending-up", "finance"),
new("Nhân sự", "users", "staff"),
@@ -47,6 +48,7 @@ public static class ShopSidebarConfig
new("POS Bán hàng", "monitor", "pos"),
new("Menu & Món ăn", "utensils", "menu"),
new("Bàn / Table", "grid-3x3", "tables"),
new("Đặt bàn", "calendar-check", "reservations"),
new("Bếp (Kitchen)", "flame", "kitchen"),
new("Tồn kho", "warehouse", "inventory"),
new("Tài chính", "trending-up", "finance"),
@@ -62,6 +64,7 @@ public static class ShopSidebarConfig
new("POS Bán hàng", "monitor", "pos"),
new("Phòng", "door-open", "rooms"),
new("Menu / Bar", "wine", "menu"),
new("Happy Hour", "clock", "happy-hour"),
new("Tồn kho", "warehouse", "inventory"),
new("Tài chính", "trending-up", "finance"),
new("Nhân sự", "users", "staff"),
@@ -76,6 +79,7 @@ public static class ShopSidebarConfig
new("POS Bán hàng", "monitor", "pos"),
new("Lịch hẹn", "calendar", "appointments"),
new("Dịch vụ", "sparkles", "services"),
new("Gói dịch vụ", "gift", "packages"),
new("Tài nguyên", "door-open", "resources"),
new("Sản phẩm", "package", "products"),
new("Tài chính", "trending-up", "finance"),
@@ -93,6 +97,9 @@ public static class ShopSidebarConfig
new("Lịch hẹn", "calendar", "appointments"),
new("Dịch vụ", "sparkles", "services"),
new("Liệu trình", "clipboard-list", "treatments"),
new("Cam kết KH", "file-check", "consent"),
new("Bác sĩ / CK", "stethoscope", "doctors"),
new("Tái khám", "calendar-heart", "followup"),
new("Tài nguyên", "door-open", "resources"),
new("Sản phẩm", "package", "products"),
new("Tài chính", "trending-up", "finance"),