From 460e8a4ac1f40b5dcdc650c267dcec5b193312c4 Mon Sep 17 00:00:00 2001
From: Thanh Quy - wolf <524H0124@student.tdtu.edu.vn>
Date: Mon, 13 Apr 2026 20:41:24 +0700
Subject: [PATCH] fix: Resolve merge conflicts and clean up imports in multiple
components
---
app/(main)/login/page.tsx | 8 --
app/(main)/page.tsx | 11 --
app/(main)/payment/page.tsx | 8 --
app/(main)/register/page.tsx | 13 ---
app/(manager)/manager/analytics/page.tsx | 126 -----------------------
app/(manager)/manager/page.tsx | 77 --------------
6 files changed, 243 deletions(-)
diff --git a/app/(main)/login/page.tsx b/app/(main)/login/page.tsx
index 9322440..b801294 100644
--- a/app/(main)/login/page.tsx
+++ b/app/(main)/login/page.tsx
@@ -1,9 +1,5 @@
"use client";
-<<<<<<< HEAD
-=======
-import LoginForm from "@/components/organisms/forms/LoginForm";
->>>>>>> main
import { SHOP_INFO } from "@/lib/constants";
import LoginForm from "@/components/organisms/forms/LoginForm";
import Image from "next/image";
@@ -32,11 +28,7 @@ export default function LoginPage() {
Đăng nhập vào hệ thống
-<<<<<<< HEAD
-=======
-
->>>>>>> main
{/* Login Form */}
diff --git a/app/(main)/page.tsx b/app/(main)/page.tsx
index 7f75db5..705cfbc 100644
--- a/app/(main)/page.tsx
+++ b/app/(main)/page.tsx
@@ -1,15 +1,8 @@
"use client";
-<<<<<<< HEAD
import { CategorySidebar } from "@/components/organisms/navigation";
import { ProductGrid } from "@/components/organisms/product-grid";
import { SearchBar } from "@/components/molecules/search-bar";
-=======
-import { SearchBar } from "@/components/molecules/search-bar";
-import { CategorySidebar } from "@/components/organisms/navigation";
-import { ProductGrid } from "@/components/organisms/product-grid";
-import { MENU_CATEGORIES } from "@/lib/constants";
->>>>>>> main
import { useMenu } from "@/lib/menu-context";
import { MENU_CATEGORIES } from "@/lib/constants";
import { useEffect, useState } from "react";
@@ -79,14 +72,10 @@ export default function Home() {
{/* ── Product grid (organism handles mobile category menu + grid) ── */}
-<<<<<<< HEAD
-=======
-
->>>>>>> main
);
diff --git a/app/(main)/payment/page.tsx b/app/(main)/payment/page.tsx
index 193e66a..f9377f4 100644
--- a/app/(main)/payment/page.tsx
+++ b/app/(main)/payment/page.tsx
@@ -75,11 +75,7 @@ export default function PaymentPage() {
decreaseQty(item.id)}
-<<<<<<< HEAD
className="inline-flex items-center justify-center h-8 w-8 rounded-lg border border-(--color-border) hover:bg-(--color-border-light)"
-=======
- className="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-(--color-border) hover:bg-(--color-border-light)"
->>>>>>> main
aria-label={`Giảm số lượng ${item.name}`}
>
-
@@ -96,11 +92,7 @@ export default function PaymentPage() {
/>
increaseQty(item.id)}
-<<<<<<< HEAD
className="inline-flex items-center justify-center h-8 w-8 rounded-lg border border-(--color-border) hover:bg-(--color-border-light)"
-=======
- className="inline-flex h-8 w-8 items-center justify-center rounded-lg border border-(--color-border) hover:bg-(--color-border-light)"
->>>>>>> main
aria-label={`Tăng số lượng ${item.name}`}
>
+
diff --git a/app/(main)/register/page.tsx b/app/(main)/register/page.tsx
index f815fbb..2325249 100644
--- a/app/(main)/register/page.tsx
+++ b/app/(main)/register/page.tsx
@@ -7,7 +7,6 @@ import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { FormEvent, useState } from "react";
-import Button from "@/components/atoms/buttons/Button";
// Static OTP for demo (in production, this would be sent via SMS)
const DEMO_OTP = "123456";
@@ -162,16 +161,12 @@ export default function RegisterPage() {
{/* Buttons */}
{/* Submit Button */}
-<<<<<<< HEAD
-
-=======
->>>>>>> main
Tiếp tục
@@ -237,30 +232,22 @@ export default function RegisterPage() {
{/* Buttons */}
{/* Submit Button */}
-<<<<<<< HEAD
-
-=======
->>>>>>> main
Hoàn tất đăng ký
{/* Back Button */}
-<<<<<<< HEAD
-
-=======
->>>>>>> main
Thay đổi số điện thoại
diff --git a/app/(manager)/manager/analytics/page.tsx b/app/(manager)/manager/analytics/page.tsx
index 09b32d4..c0d738e 100644
--- a/app/(manager)/manager/analytics/page.tsx
+++ b/app/(manager)/manager/analytics/page.tsx
@@ -8,15 +8,11 @@ import {
SummaryCard,
} from "@/components/organisms/analytics";
import type { PieSlice } from "@/components/organisms/analytics";
-<<<<<<< HEAD
-import { calcChange, formatCurrency, formatCurrencyFull } from "@/lib/analytics-utils";
-=======
import {
calcChange,
formatCurrency,
formatCurrencyFull,
} from "@/lib/analytics-utils";
->>>>>>> main
import {
MENU_CATEGORIES,
MOCK_PRODUCT_SALES,
@@ -39,10 +35,6 @@ const PERIOD_LABELS: Record = {
};
const CATEGORY_COLORS = [
-<<<<<<< HEAD
- "#6F4E37", "#C8973A", "#A0785A", "#8B6914", "#D4A96A",
- "#4A3728", "#F0D9A8", "#A08060", "#3D2B1F",
-=======
"#6F4E37",
"#C8973A",
"#A0785A",
@@ -52,7 +44,6 @@ const CATEGORY_COLORS = [
"#F0D9A8",
"#A08060",
"#3D2B1F",
->>>>>>> main
];
const REVENUE_MAP: Record = {
@@ -67,13 +58,8 @@ type ChartType = (typeof CHART_TYPES)[number];
const CHART_META: Record = {
line: { icon: "fa-chart-line", label: "Line" },
-<<<<<<< HEAD
- bar: { icon: "fa-chart-bar", label: "Bar" },
- pie: { icon: "fa-chart-pie", label: "Pie" },
-=======
bar: { icon: "fa-chart-bar", label: "Bar" },
pie: { icon: "fa-chart-pie", label: "Pie" },
->>>>>>> main
};
// ─── Category filter select ───────────────────────────────────────────────────
@@ -99,13 +85,9 @@ function CategorySelect({
>
Tất cả
{categories.map((c) => (
-<<<<<<< HEAD
- {c.name}
-=======
{c.name}
->>>>>>> main
))}
@@ -124,47 +106,28 @@ export default function AnalyticsPage() {
// Split into halves for bar comparison
const half = Math.floor(revenueData.length / 2);
-<<<<<<< HEAD
- const barCurrent = revenueData.slice(half);
-=======
const barCurrent = revenueData.slice(half);
->>>>>>> main
const barPrevious = revenueData.slice(0, half).slice(0, barCurrent.length);
// Filtered product sales
const filteredSales = useMemo(
-<<<<<<< HEAD
- () => categoryFilter === "all"
- ? MOCK_PRODUCT_SALES
- : MOCK_PRODUCT_SALES.filter((p) => p.category === categoryFilter),
-=======
() =>
categoryFilter === "all"
? MOCK_PRODUCT_SALES
: MOCK_PRODUCT_SALES.filter((p) => p.category === categoryFilter),
->>>>>>> main
[categoryFilter],
);
// Summary stats
const totalRevenue = revenueData.reduce((s, d) => s + d.revenue, 0);
-<<<<<<< HEAD
- const totalOrders = revenueData.reduce((s, d) => s + d.orders, 0);
- const totalProfit = filteredSales.reduce((s, d) => s + d.profit, 0);
-=======
const totalOrders = revenueData.reduce((s, d) => s + d.orders, 0);
const totalProfit = filteredSales.reduce((s, d) => s + d.profit, 0);
->>>>>>> main
const avgOrderValue = totalOrders > 0 ? totalRevenue / totalOrders : 0;
// Period-over-period comparisons
const curRevenue = barCurrent.reduce((s, d) => s + d.revenue, 0);
const prevRevenue = barPrevious.reduce((s, d) => s + d.revenue, 0);
-<<<<<<< HEAD
- const curOrders = barCurrent.reduce((s, d) => s + d.orders, 0);
-=======
const curOrders = barCurrent.reduce((s, d) => s + d.orders, 0);
->>>>>>> main
const prevOrders = barPrevious.reduce((s, d) => s + d.orders, 0);
const revComp = calcChange(curRevenue, prevRevenue);
const ordComp = calcChange(curOrders, prevOrders);
@@ -193,13 +156,6 @@ export default function AnalyticsPage() {
// Totals for summary row
const filteredRevenue = filteredSales.reduce((s, d) => s + d.revenue, 0);
-<<<<<<< HEAD
- const filteredProfit = filteredSales.reduce((s, d) => s + d.profit, 0);
- const filteredUnits = filteredSales.reduce((s, d) => s + d.unitsSold, 0);
- const avgMargin = filteredSales.length > 0
- ? filteredSales.reduce((s, d) => s + d.profitMargin, 0) / filteredSales.length
- : 0;
-=======
const filteredProfit = filteredSales.reduce((s, d) => s + d.profit, 0);
const filteredUnits = filteredSales.reduce((s, d) => s + d.unitsSold, 0);
const avgMargin =
@@ -207,7 +163,6 @@ export default function AnalyticsPage() {
? filteredSales.reduce((s, d) => s + d.profitMargin, 0) /
filteredSales.length
: 0;
->>>>>>> main
return (
@@ -228,13 +183,9 @@ export default function AnalyticsPage() {
Thống kê & Phân tích tài chính
-<<<<<<< HEAD
-
Financial Analytics Dashboard
-=======
Financial Analytics Dashboard
->>>>>>> main
@@ -259,17 +210,12 @@ export default function AnalyticsPage() {
onChange={(e) => setPeriod(e.target.value as AnalyticsPeriod)}
className="text-foreground block rounded-lg border border-(--color-border) bg-(--color-bg-card) px-2 py-1.5 text-xs sm:hidden"
>
-<<<<<<< HEAD
- {(Object.entries(PERIOD_LABELS) as [AnalyticsPeriod, string][]).map(([k, v]) => (
- {v}
-=======
{(
Object.entries(PERIOD_LABELS) as [AnalyticsPeriod, string][]
).map(([k, v]) => (
{v}
->>>>>>> main
))}
@@ -283,20 +229,6 @@ export default function AnalyticsPage() {
Tổng quan
-<<<<<<< HEAD
-
-
-
-
-=======
->>>>>>> main
@@ -356,13 +287,9 @@ export default function AnalyticsPage() {
}`}
>
-<<<<<<< HEAD
- {CHART_META[t].label}
-=======
{CHART_META[t].label}
->>>>>>> main
))}
@@ -370,22 +297,14 @@ export default function AnalyticsPage() {
{activeChart === "line" && (
<>
-<<<<<<< HEAD
- Doanh thu theo thời gian — {PERIOD_LABELS[period]}
-=======
Doanh thu theo thời gian — {PERIOD_LABELS[period]}
->>>>>>> main
>
)}
{activeChart === "bar" && (
<>
-<<<<<<< HEAD
- So sánh doanh thu nửa đầu và nửa sau kỳ hiện tại
-
-=======
So sánh doanh thu nửa đầu và nửa sau kỳ hiện tại
@@ -394,18 +313,13 @@ export default function AnalyticsPage() {
previous={barPrevious}
height={220}
/>
->>>>>>> main
>
)}
{activeChart === "pie" && (
<>
-<<<<<<< HEAD
- Tỷ trọng doanh thu theo danh mục sản phẩm
-=======
Tỷ trọng doanh thu theo danh mục sản phẩm
->>>>>>> main
>
)}
@@ -418,14 +332,10 @@ export default function AnalyticsPage() {
Top sản phẩm bán chạy
-<<<<<<< HEAD
-
-=======
->>>>>>> main
{top5.map((p, i) => {
@@ -437,17 +347,6 @@ export default function AnalyticsPage() {
{i + 1}
-<<<<<<< HEAD
- {p.name}
-
-
- {p.unitsSold} ly
- {formatCurrency(p.revenue)}
-
-
-
-
-=======
{p.name}
@@ -466,7 +365,6 @@ export default function AnalyticsPage() {
className="h-full rounded-full bg-(--color-primary) transition-all duration-500"
style={{ width: `${pct}%` }}
/>
->>>>>>> main
);
@@ -481,12 +379,6 @@ export default function AnalyticsPage() {
Phân tích chi tiết sản phẩm
-<<<<<<< HEAD
-
-
-
- Click vào tiêu đề cột để sắp xếp. Hiển thị {filteredSales.length} sản phẩm.
-=======
Click vào tiêu đề cột để sắp xếp. Hiển thị {filteredSales.length}{" "}
sản phẩm.
->>>>>>> main
{/* Summary row */}
-<<<<<<< HEAD
- Tổng doanh thu:
- {formatCurrencyFull(filteredRevenue)}
-
-
- Tổng lợi nhuận:
- {formatCurrencyFull(filteredProfit)}
-
-
- Tổng sản lượng:
- {filteredUnits.toLocaleString()} ly
-
-
- Biên LN trung bình:
- {avgMargin.toFixed(1)}%
-=======
Tổng doanh thu:{" "}
@@ -549,7 +424,6 @@ export default function AnalyticsPage() {
{avgMargin.toFixed(1)}%
->>>>>>> main
diff --git a/app/(manager)/manager/page.tsx b/app/(manager)/manager/page.tsx
index 90afeb2..1f6b7f5 100644
--- a/app/(manager)/manager/page.tsx
+++ b/app/(manager)/manager/page.tsx
@@ -8,19 +8,11 @@ import {
import { useAuth } from "@/lib/auth-context";
import { useManager } from "@/lib/manager-context";
import Link from "next/link";
-<<<<<<< HEAD
-import { useState } from "react";
-=======
->>>>>>> main
export default function ManagerPage() {
const { user, logout } = useAuth();
const { activeTab, setActiveTab, products, combos, categories } =
useManager();
-<<<<<<< HEAD
- const [mobileNavOpen, setMobileNavOpen] = useState(false);
-=======
->>>>>>> main
const tabs = [
{
@@ -98,7 +90,6 @@ export default function ManagerPage() {
Mới
-<<<<<<< HEAD
-=======
->>>>>>> main
@@ -163,71 +152,6 @@ export default function ManagerPage() {
-<<<<<<< HEAD
- {/* Mobile dropdown navigation */}
-
-
setMobileNavOpen((prev) => !prev)}
- className="flex cursor-pointer items-center gap-2 rounded-xl border border-(--color-border-light) bg-white px-3 py-2 text-xs font-medium text-(--color-text-secondary) transition hover:bg-gray-50"
- >
-
- Tác vụ
-
-
-
- {mobileNavOpen && (
-
- {tabs.map((tab) => (
- {
- setActiveTab(tab.id);
- setMobileNavOpen(false);
- }}
- className={`mb-1 flex w-full cursor-pointer items-center gap-2 rounded-lg border-none px-3 py-2 text-left text-xs font-medium transition ${
- activeTab === tab.id
- ? "bg-(--color-primary) text-white"
- : "bg-transparent text-(--color-text-secondary) hover:bg-gray-50"
- }`}
- >
-
- {tab.label}
-
- {tab.count}
-
-
- ))}
-
- setMobileNavOpen(false)}
- className="mb-1 flex items-center gap-2 rounded-lg px-3 py-2 text-xs font-medium text-(--color-primary) no-underline transition hover:bg-(--color-accent-light)/70"
- >
-
- Tài chính
-
-
- setMobileNavOpen(false)}
- className="flex items-center gap-2 rounded-lg px-3 py-2 text-xs font-medium text-(--color-primary) no-underline transition hover:bg-(--color-accent-light)/70"
- >
-
- Ca làm
-
-
- )}
-=======
{/* Mobile tabs */}
{tabs.map((tab) => (
@@ -251,7 +175,6 @@ export default function ManagerPage() {
Tài chính
->>>>>>> main
{/* Desktop actions */}