File size: 2,619 Bytes
4bae792
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { useSelector } from "react-redux";
import {
  FiUser,
  FiBell,
  FiAperture,
  FiLock,
  FiHelpCircle,
} from "react-icons/fi";

function SettingsMenu() {
  const { isDark } = useSelector((state) => state.theme);

  const iconMap = {
    "👤": FiUser,
    "🔔": FiBell,
    "🎨": FiAperture,
    "🔒": FiLock,
    "❓": FiHelpCircle,
  };

  const menuItems = [
    { icon: "👤", title: "Tài khoản", desc: "Thông tin cá nhân", active: true },
    { icon: "🔔", title: "Thông báo", desc: "Cài đặt thông báo" },
    { icon: "🎨", title: "Giao diện", desc: "Dark/Light mode" },
    { icon: "🔒", title: "Bảo mật", desc: "Đổi mật khẩu" },
    { icon: "❓", title: "Trợ giúp", desc: "Hướng dẫn sử dụng" },
  ];

  return (
    <div
      className="w-60 min-w-60 flex flex-col h-screen border-r"
      style={{
        background: "var(--bg-surface-secondary)",
        borderColor: "var(--border-primary)",
      }}
    >
      <div
        className="p-4 border-b"
        style={{ borderColor: "var(--border-primary)" }}
      >
        <div
          className="text-base font-semibold"
          style={{ color: "var(--text-primary)" }}
        >
          Cài đặt
        </div>
      </div>
      <div className="flex-1 overflow-y-auto p-3 space-y-2">
        {menuItems.map((item) => {
          const IconComponent = iconMap[item.icon];
          return (
            <div
              key={item.title}
              className="p-3 rounded-lg cursor-pointer flex items-start gap-3"
              style={{
                background: item.active
                  ? "var(--primary-active)"
                  : "transparent",
                color: item.active ? "var(--primary)" : "var(--text-primary)",
              }}
              onMouseEnter={(e) => {
                if (!item.active)
                  e.currentTarget.style.background = "var(--hover-primary)";
              }}
              onMouseLeave={(e) => {
                if (!item.active)
                  e.currentTarget.style.background = "transparent";
              }}
            >
              <IconComponent size={18} className="mt-0.5 flex-shrink-0" />
              <div>
                <div className="text-sm font-medium">{item.title}</div>
                <div
                  className="text-xs mt-1"
                  style={{ color: "var(--text-secondary)" }}
                >
                  {item.desc}
                </div>
              </div>
            </div>
          );
        })}
      </div>
    </div>
  );
}

export default SettingsMenu;