gov-layout 1.2.26 → 1.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/useDarkMode.ts","../src/sidebar/SidebarHeader.tsx","../src/icons/GovIcons.tsx","../src/sidebar/SidebarMenu.tsx","../src/sidebar/SidebarUserProfile.tsx","../src/sidebar/StaffSidebar.tsx","../src/header/UserHeader.tsx","../src/header/UserSidebar.tsx","../src/bottombar/BottomBar.tsx","../src/settings/SettingsContext.tsx","../src/settings/ThemeSettings.tsx","../src/settings/FontSizeSettings.tsx","../src/settings/SettingsPanel.tsx","../src/icons/index.ts"],"names":["jsxs","jsx","useState","HelpCircleIcon","GearIcon","Fragment","BellIcon","useEffect","LogoutIcon","ProfileIcon"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport { useState, useEffect } from 'react';\n\n/**\n * Hook ตรวจสอบ dark mode จาก class \"dark\" บน <html>\n * ใช้ MutationObserver เพื่อ react ทันทีเมื่อ theme เปลี่ยน\n */\nexport function useDarkMode(): boolean {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n const root = document.documentElement;\n const check = () => setIsDark(root.classList.contains('dark'));\n check();\n\n const observer = new MutationObserver(check);\n observer.observe(root, { attributes: true, attributeFilter: ['class'] });\n return () => observer.disconnect();\n }, []);\n\n return isDark;\n}\n","'use client';\r\n\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\n\r\ninterface SidebarHeaderProps {\r\n orgLogo?: string;\r\n orgName: string;\r\n orgSubtitle?: string;\r\n collapsed?: boolean;\r\n}\r\n\r\nexport default function SidebarHeader({ orgLogo, orgName, orgSubtitle, collapsed }: SidebarHeaderProps) {\r\n const isDark = useDarkMode();\r\n\r\n if (collapsed) {\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '20px 8px',\r\n }}>\r\n {orgLogo ? (\r\n <img\r\n src={orgLogo}\r\n alt={orgName}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n ) : (\r\n <div style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '14px',\r\n }}>\r\n {orgName.charAt(0)}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '24px 20px',\r\n }}>\r\n {orgLogo && (\r\n <img\r\n src={orgLogo}\r\n alt={orgName}\r\n style={{\r\n width: '48px',\r\n height: '48px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n flexShrink: 0,\r\n }}\r\n />\r\n )}\r\n <div style={{ minWidth: 0 }}>\r\n <p style={{\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n lineHeight: '22px',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-color-brand-text-dark, #05010e)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}>\r\n {orgName}\r\n </p>\r\n {orgSubtitle && (\r\n <p style={{\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}>\r\n {orgSubtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","'use client';\n\nimport React from 'react';\n\nexport interface IconProps {\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst defaultProps = (size: number = 20) => ({\n width: size,\n height: size,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n});\n\n// ─── Navigation / หน้าหลัก ───\n\nexport function HomeIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9 22 9 12 15 12 15 22\" />\n </svg>\n );\n}\n\nexport function SearchIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n );\n}\n\nexport function BellIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n );\n}\n\n// ─── งานบริการ / หมวดหมู่ ───\n\nexport function FolderIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n\nexport function ClipboardIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\" />\n </svg>\n );\n}\n\nexport function FileTextIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </svg>\n );\n}\n\nexport function CalendarIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n );\n}\n\n// ─── ผู้ใช้ / สมาชิก ───\n\nexport function UserIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n );\n}\n\nexport function UsersIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n );\n}\n\n// ─── ตั้งค่า / ระบบ ───\n\nexport function GearIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n );\n}\n\nexport function WrenchIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\" />\n </svg>\n );\n}\n\nexport function ShieldIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n );\n}\n\nexport function HelpCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\n// ─── รายงาน / สถิติ ───\n\nexport function BarChartIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"10\" />\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"4\" />\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"16\" />\n </svg>\n );\n}\n\nexport function HistoryIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polyline points=\"1 4 1 10 7 10\" />\n <path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\" />\n </svg>\n );\n}\n\nexport function DatabaseIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </svg>\n );\n}\n\n// ─── องค์กร / สถานที่ ───\n\nexport function BuildingIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"9\" y1=\"22\" x2=\"9\" y2=\"18\" />\n <line x1=\"15\" y1=\"22\" x2=\"15\" y2=\"18\" />\n <line x1=\"9\" y1=\"6\" x2=\"9.01\" y2=\"6\" />\n <line x1=\"15\" y1=\"6\" x2=\"15.01\" y2=\"6\" />\n <line x1=\"9\" y1=\"10\" x2=\"9.01\" y2=\"10\" />\n <line x1=\"15\" y1=\"10\" x2=\"15.01\" y2=\"10\" />\n <line x1=\"9\" y1=\"14\" x2=\"9.01\" y2=\"14\" />\n <line x1=\"15\" y1=\"14\" x2=\"15.01\" y2=\"14\" />\n </svg>\n );\n}\n\nexport function MapPinIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" />\n </svg>\n );\n}\n\n// ─── การติดต่อ ───\n\nexport function PhoneIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n );\n}\n\nexport function MailIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </svg>\n );\n}\n\n// ─── สถานะ / Action ───\n\nexport function CheckCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n );\n}\n\nexport function AlertTriangleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nexport function XCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nexport function PlusCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\" />\n <line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\" />\n </svg>\n );\n}\n\nexport function LogOutIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n );\n}\n\n// ─── ไฟล์ / ข้อมูล ───\n\nexport function DownloadIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n );\n}\n\nexport function UploadIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n );\n}\n\nexport function PrinterIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polyline points=\"6 9 6 2 18 2 18 9\" />\n <path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" />\n <rect x=\"6\" y=\"14\" width=\"12\" height=\"8\" />\n </svg>\n );\n}\n\n// ─── Misc ───\n\nexport function StarIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n );\n}\n\nexport function HeartIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\" />\n </svg>\n );\n}\n\nexport function EyeIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nexport function EditIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n );\n}\n\nexport function TrashIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polyline points=\"3 6 5 6 21 6\" />\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n <line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\" />\n <line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\" />\n </svg>\n );\n}\n","'use client';\r\n\r\nimport React, { useState, useId } from 'react';\r\nimport type { MenuItem } from './types';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\nimport {\r\n HomeIcon, FolderIcon, UserIcon, UsersIcon, GearIcon, HelpCircleIcon,\r\n FileTextIcon, ClipboardIcon, CalendarIcon, BarChartIcon, ShieldIcon,\r\n HistoryIcon, DatabaseIcon, BellIcon, SearchIcon, BuildingIcon,\r\n MapPinIcon, PhoneIcon, MailIcon, WrenchIcon, StarIcon, EditIcon,\r\n TrashIcon, EyeIcon, DownloadIcon, UploadIcon, PrinterIcon,\r\n LogOutIcon, CheckCircleIcon, PlusCircleIcon,\r\n} from '../icons/GovIcons';\r\n\r\n// SSR-safe CSS.escape — Node.js ไม่มี CSS global\r\nconst safeCssEscape = (value: string): string => {\r\n if (typeof CSS !== 'undefined' && CSS.escape) {\r\n return CSS.escape(value);\r\n }\r\n // Simple fallback: replace non-alphanumeric chars with underscore\r\n return value.replace(/[^a-zA-Z0-9_-]/g, '_');\r\n};\r\n\r\n// ─── Auto-assign icon ตาม id ───\r\nconst ICON_MAP: Record<string, React.ComponentType> = {\r\n home: HomeIcon, dashboard: HomeIcon,\r\n services: FolderIcon, service: FolderIcon, folder: FolderIcon, category: FolderIcon,\r\n users: UsersIcon, members: UsersIcon, user: UserIcon, profile: UserIcon, staff: UserIcon,\r\n settings: GearIcon, setting: GearIcon, config: GearIcon,\r\n help: HelpCircleIcon, support: HelpCircleIcon, faq: HelpCircleIcon,\r\n reports: BarChartIcon, report: BarChartIcon, stats: BarChartIcon, chart: BarChartIcon, analytics: BarChartIcon,\r\n roles: ShieldIcon, permissions: ShieldIcon, security: ShieldIcon,\r\n logs: HistoryIcon, history: HistoryIcon, activity: HistoryIcon, audit: HistoryIcon,\r\n backup: DatabaseIcon, database: DatabaseIcon, data: DatabaseIcon,\r\n documents: FileTextIcon, document: FileTextIcon, docs: FileTextIcon, files: FileTextIcon, file: FileTextIcon,\r\n forms: ClipboardIcon, form: ClipboardIcon, request: ClipboardIcon, requests: ClipboardIcon,\r\n calendar: CalendarIcon, schedule: CalendarIcon, appointment: CalendarIcon,\r\n notifications: BellIcon, notification: BellIcon, alerts: BellIcon,\r\n search: SearchIcon,\r\n organization: BuildingIcon, org: BuildingIcon, department: BuildingIcon, agency: BuildingIcon,\r\n location: MapPinIcon, map: MapPinIcon, address: MapPinIcon,\r\n phone: PhoneIcon, contact: PhoneIcon, call: PhoneIcon,\r\n email: MailIcon, mail: MailIcon, message: MailIcon, messages: MailIcon,\r\n tools: WrenchIcon, maintenance: WrenchIcon,\r\n favorites: StarIcon, bookmark: StarIcon,\r\n edit: EditIcon, manage: EditIcon,\r\n delete: TrashIcon, trash: TrashIcon,\r\n view: EyeIcon, preview: EyeIcon, detail: EyeIcon,\r\n download: DownloadIcon, export: DownloadIcon,\r\n upload: UploadIcon, import: UploadIcon,\r\n print: PrinterIcon, printer: PrinterIcon,\r\n logout: LogOutIcon, signout: LogOutIcon,\r\n approve: CheckCircleIcon, approved: CheckCircleIcon,\r\n add: PlusCircleIcon, create: PlusCircleIcon, new: PlusCircleIcon,\r\n};\r\n\r\nfunction DefaultIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction getAutoIcon(id: string): React.ReactNode {\r\n const IconComp = ICON_MAP[id.toLowerCase()];\r\n if (IconComp) return <IconComp />;\r\n return <DefaultIcon />;\r\n}\r\n\r\ninterface SidebarMenuProps {\r\n menuItems: MenuItem[];\r\n onItemClick: (path: string) => void;\r\n currentPath?: string;\r\n collapsed?: boolean;\r\n onExpandRequest?: () => void;\r\n}\r\n\r\nfunction ChevronDownIcon({ isOpen }: { isOpen: boolean }) {\r\n return (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n style={{\r\n transition: 'transform 0.2s ease',\r\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction MenuItemComponent({\r\n item,\r\n onItemClick,\r\n currentPath,\r\n depth = 0,\r\n collapsed = false,\r\n onExpandRequest,\r\n}: {\r\n item: MenuItem;\r\n onItemClick: (path: string) => void;\r\n currentPath?: string;\r\n depth?: number;\r\n collapsed?: boolean;\r\n onExpandRequest?: () => void;\r\n}) {\r\n const isDark = useDarkMode();\r\n const hasChildren = item.children && item.children.length > 0;\r\n const isActive = item.path ? currentPath === item.path : false;\r\n const resolvedIcon = item.icon || getAutoIcon(item.id);\r\n const isChildActive = hasChildren\r\n ? item.children!.some((child) => child.path === currentPath)\r\n : false;\r\n\r\n // Auto-expand if child is active, but allow user to override\r\n const [userToggled, setUserToggled] = useState(false);\r\n const [isOpen, setIsOpen] = useState(isChildActive);\r\n const expanded = userToggled ? isOpen : (isOpen || isChildActive);\r\n const btnId = useId();\r\n\r\n const handleClick = () => {\r\n if (hasChildren) {\r\n if (collapsed) {\r\n // Sidebar ย่ออยู่ — สั่งกาง sidebar + กาง children ด้วย\r\n setUserToggled(true);\r\n setIsOpen(true);\r\n onExpandRequest?.();\r\n } else {\r\n setUserToggled(true);\r\n setIsOpen(!expanded);\r\n }\r\n } else if (item.path) {\r\n onItemClick(item.path);\r\n }\r\n };\r\n\r\n const activeColor = 'var(--color-alias-color-brand-primary, #1e7d55)';\r\n const hoverBg = isDark ? '#334155' : 'var(--color-foundations-fuji-pallet-light, #ebedf5)';\r\n\r\n // Collapsed mode: icon only\r\n if (collapsed && depth === 0) {\r\n return (\r\n <li>\r\n <style>{`@media(hover:hover){.sidebar-btn-${safeCssEscape(btnId)}:not([data-active='true']):hover{background-color:${hoverBg}!important}}`}</style>\r\n <button\r\n className={`sidebar-btn-${safeCssEscape(btnId)}`}\r\n data-active={isActive || isChildActive}\r\n onClick={handleClick}\r\n title={item.title}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '12px 0',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: isActive || isChildActive\r\n ? `color-mix(in srgb, ${activeColor} 10%, transparent)`\r\n : 'transparent',\r\n color: isActive || isChildActive\r\n ? activeColor\r\n : isDark ? '#ffffff' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.15s ease',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n <span style={{\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}>\r\n {resolvedIcon}\r\n </span>\r\n </button>\r\n {item.dividerAfter && (\r\n <hr style={{\r\n border: 'none',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n margin: '8px 4px',\r\n }} />\r\n )}\r\n </li>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <li>\r\n <style>{`@media(hover:hover){.sidebar-btn-${safeCssEscape(btnId)}:not([data-active='true']):hover{background-color:${hoverBg}!important}}`}</style>\r\n <button\r\n className={`sidebar-btn-${safeCssEscape(btnId)}`}\r\n data-active={isActive}\r\n onClick={handleClick}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: depth > 0 ? '10px 16px 10px 52px' : '12px 16px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: isActive ? `color-mix(in srgb, ${activeColor} 10%, transparent)` : 'transparent',\r\n color: isActive\r\n ? activeColor\r\n : isDark ? '#ffffff' : 'var(--color-alias-text-colors-primary, #060d26)',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.15s ease',\r\n textAlign: 'left',\r\n fontSize: '15px',\r\n fontWeight: isActive ? 600 : 400,\r\n lineHeight: '22px',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n <span style={{\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n color: isActive\r\n ? activeColor\r\n : isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n }}>\r\n {resolvedIcon}\r\n </span>\r\n <span style={{ flex: 1 }}>{item.title}</span>\r\n {hasChildren && <ChevronDownIcon isOpen={expanded} />}\r\n </button>\r\n </li>\r\n {hasChildren && expanded && (\r\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\r\n {item.children!.map((child) => (\r\n <MenuItemComponent\r\n key={child.id}\r\n item={child}\r\n onItemClick={onItemClick}\r\n currentPath={currentPath}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </ul>\r\n )}\r\n {item.dividerAfter && (\r\n <li>\r\n <hr style={{\r\n border: 'none',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n margin: '8px 0',\r\n }} />\r\n </li>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nexport default function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed, onExpandRequest }: SidebarMenuProps) {\r\n return (\r\n <nav style={{\r\n padding: collapsed ? '8px 8px' : '8px 12px',\r\n }}>\r\n <ul style={{\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '2px',\r\n }}>\r\n {menuItems.map((item) => (\r\n <MenuItemComponent\r\n key={item.id}\r\n item={item}\r\n onItemClick={onItemClick}\r\n currentPath={currentPath}\r\n collapsed={collapsed}\r\n onExpandRequest={onExpandRequest}\r\n />\r\n ))}\r\n </ul>\r\n </nav>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport type { User } from './types';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\n\r\ninterface SidebarUserProfileProps {\r\n user: User | null;\r\n roleLabel: string;\r\n onLogout: () => void;\r\n collapsed?: boolean;\r\n /** Callback เมื่อกดโปรไฟล์ผู้ใช้ */\r\n onProfile?: () => void;\r\n}\r\n\r\nfunction LogoutIcon() {\r\n return (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\r\n <polyline points=\"16 17 21 12 16 7\" />\r\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ProfileIcon() {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport default function SidebarUserProfile({\r\n user,\r\n roleLabel,\r\n onLogout,\r\n collapsed,\r\n onProfile,\r\n}: SidebarUserProfileProps) {\r\n const isDark = useDarkMode();\r\n\r\n if (!user) return null;\r\n\r\n const getFullName = () => {\r\n if (user.firstName && user.lastName) {\r\n return `${user.firstName} ${user.lastName}`;\r\n }\r\n return user.firstName || user.lastName || 'ผู้ใช้';\r\n };\r\n\r\n const getInitial = () => {\r\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\r\n };\r\n\r\n // Collapsed: avatar + logout icon only\r\n if (collapsed) {\r\n return (\r\n <div style={{\r\n padding: '12px 8px',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: '12px',\r\n }}>\r\n {/* Avatar — clickable if onProfile is provided */}\r\n <div\r\n onClick={onProfile}\r\n title={onProfile ? 'ดูโปรไฟล์' : getFullName()}\r\n style={{ cursor: onProfile ? 'pointer' : 'default' }}\r\n >\r\n {user.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={getFullName()}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '14px',\r\n }}\r\n >\r\n {getInitial()}\r\n </div>\r\n )}\r\n </div>\r\n {/* Profile button */}\r\n {onProfile && (\r\n <button\r\n onClick={onProfile}\r\n title=\"โปรไฟล์ของฉัน\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#334155' : 'var(--color-alias-color-brand-surface, #faf9e5)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: isDark ? '#8be9a0' : 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n >\r\n <ProfileIcon />\r\n </button>\r\n )}\r\n <button\r\n onClick={onLogout}\r\n title=\"ออกจากระบบ\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: 'var(--color-alias-semantic-critical, #f21515)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n >\r\n <LogoutIcon />\r\n </button>\r\n </div>\r\n );\r\n }\r\n\r\n // Expanded\r\n return (\r\n <div\r\n style={{\r\n padding: '16px 20px',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n }}\r\n >\r\n {/* Avatar + Name — clickable if onProfile is provided */}\r\n <div\r\n onClick={onProfile}\r\n onMouseEnter={(e) => {\r\n if (onProfile) e.currentTarget.style.opacity = '0.8';\r\n }}\r\n onMouseLeave={(e) => {\r\n if (onProfile) e.currentTarget.style.opacity = '1';\r\n }}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n flex: 1,\r\n minWidth: 0,\r\n cursor: onProfile ? 'pointer' : 'default',\r\n transition: 'opacity 0.15s ease',\r\n }}\r\n >\r\n {user.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={getFullName()}\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n flexShrink: 0,\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n flexShrink: 0,\r\n }}\r\n >\r\n {getInitial()}\r\n </div>\r\n )}\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n <p style={{\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-text-colors-primary, #060d26)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}>\r\n {getFullName()}\r\n </p>\r\n <p style={{\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n margin: 0,\r\n }}>\r\n {roleLabel}\r\n </p>\r\n </div>\r\n </div>\r\n {/* Profile button */}\r\n {onProfile && (\r\n <button\r\n onClick={onProfile}\r\n title=\"โปรไฟล์ของฉัน\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#334155' : 'var(--color-alias-color-brand-surface, #faf9e5)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: isDark ? '#8be9a0' : 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <ProfileIcon />\r\n </button>\r\n )}\r\n <button\r\n onClick={onLogout}\r\n title=\"ออกจากระบบ\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\r\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: 'var(--color-alias-semantic-critical, #f21515)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <LogoutIcon />\r\n </button>\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useState } from 'react';\r\nimport SidebarHeader from './SidebarHeader';\r\nimport SidebarMenu from './SidebarMenu';\r\nimport SidebarUserProfile from './SidebarUserProfile';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\nimport type { StaffSidebarProps, MenuItem } from './types';\r\n\r\nfunction ToggleIcon({ isOpen }: { isOpen: boolean }) {\r\n return (\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n style={{\r\n transition: 'transform 0.2s ease',\r\n transform: isOpen ? 'rotate(0deg)' : 'rotate(180deg)',\r\n }}\r\n >\r\n <path d=\"M15 18l-6-6 6-6\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction HelpCircleIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction GearIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\r\n </svg>\r\n );\r\n}\r\n\r\n// Default bottom menu — ตั้งค่าระบบ + ช่วยเหลือ\r\nconst DEFAULT_BOTTOM_MENU: MenuItem[] = [\r\n { id: 'settings', title: 'ตั้งค่าระบบ', icon: <GearIcon />, path: '/settings' },\r\n { id: 'help', title: 'ช่วยเหลือ', icon: <HelpCircleIcon />, path: '/help' },\r\n];\r\n\r\nexport default function StaffSidebar({\r\n orgLogo,\r\n orgName,\r\n orgSubtitle,\r\n menuItems,\r\n bottomMenuItems,\r\n user,\r\n roleLabel,\r\n onNavigate,\r\n onLogout,\r\n onProfile,\r\n currentPath,\r\n width = '280px',\r\n className,\r\n collapsible = false,\r\n isOpen: controlledIsOpen,\r\n onToggle,\r\n onExpandRequest,\r\n}: StaffSidebarProps) {\r\n const isDark = useDarkMode();\r\n const [internalOpen, setInternalOpen] = useState(true);\r\n const sidebarOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalOpen;\r\n const collapsed = collapsible && !sidebarOpen;\r\n const collapsedWidth = '64px';\r\n const currentWidth = collapsed ? collapsedWidth : width;\r\n\r\n // ใช้ default ถ้าไม่ได้ส่ง bottomMenuItems มา\r\n const resolvedBottomMenu = bottomMenuItems !== undefined ? bottomMenuItems : DEFAULT_BOTTOM_MENU;\r\n\r\n const handleToggle = () => {\r\n if (onToggle) {\r\n onToggle();\r\n } else {\r\n setInternalOpen(!internalOpen);\r\n }\r\n };\r\n\r\n // เมื่อกดเมนูที่มี children ขณะ sidebar ย่อ\r\n const handleExpandRequest = () => {\r\n if (onExpandRequest) {\r\n onExpandRequest();\r\n } else {\r\n // ถ้าไม่ได้ส่ง onExpandRequest มา ให้กาง sidebar เลย\r\n if (onToggle) {\r\n onToggle();\r\n } else {\r\n setInternalOpen(true);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <aside\r\n className={className}\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n height: '100vh',\r\n width: currentWidth,\r\n background: isDark ? '#1e293b' : '#fff',\r\n borderRight: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n zIndex: 50,\r\n overflow: 'hidden',\r\n transition: 'width 0.3s ease',\r\n color: isDark ? '#ffffff' : undefined,\r\n }}\r\n >\r\n {/* Organization Header */}\r\n <SidebarHeader\r\n orgLogo={orgLogo}\r\n orgName={orgName}\r\n orgSubtitle={orgSubtitle}\r\n collapsed={collapsed}\r\n />\r\n\r\n {/* Main Menu — scrollable area */}\r\n <div style={{ flex: 1, overflowY: 'auto', minHeight: 0 }}>\r\n <SidebarMenu\r\n menuItems={menuItems}\r\n onItemClick={onNavigate}\r\n currentPath={currentPath}\r\n collapsed={collapsed}\r\n onExpandRequest={handleExpandRequest}\r\n />\r\n </div>\r\n\r\n {/* Bottom section — pinned at bottom */}\r\n <div style={{ flexShrink: 0 }}>\r\n {/* Bottom Menu (ตั้งค่าระบบ + ช่วยเหลือ) */}\r\n {resolvedBottomMenu && resolvedBottomMenu.length > 0 && (\r\n <>\r\n <hr style={{\r\n border: 'none',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n margin: '4px 12px',\r\n }} />\r\n <SidebarMenu\r\n menuItems={resolvedBottomMenu}\r\n onItemClick={onNavigate}\r\n currentPath={currentPath}\r\n collapsed={collapsed}\r\n onExpandRequest={handleExpandRequest}\r\n />\r\n </>\r\n )}\r\n\r\n {/* User Profile */}\r\n <SidebarUserProfile\r\n user={user}\r\n roleLabel={roleLabel}\r\n onLogout={onLogout}\r\n onProfile={onProfile}\r\n collapsed={collapsed}\r\n />\r\n </div>\r\n </aside>\r\n\r\n {/* Toggle Button — top edge */}\r\n {collapsible && (\r\n <>\r\n <style>{`@media(hover:hover){.sidebar-toggle-btn:hover{background-color:${isDark ? '#374151' : '#f3f4f6'}!important}}`}</style>\r\n <button\r\n className=\"sidebar-toggle-btn\"\r\n onClick={handleToggle}\r\n title={sidebarOpen ? 'ย่อ Sidebar' : 'ขยาย Sidebar'}\r\n style={{\r\n position: 'fixed',\r\n top: '10%',\r\n left: currentWidth,\r\n zIndex: 51,\r\n width: '24px',\r\n height: '40px',\r\n borderRadius: '0 6px 6px 0',\r\n border: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n borderLeft: 'none',\r\n background: isDark ? '#1e293b' : '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxShadow: isDark ? '2px 0 8px rgba(0,0,0,0.3)' : '2px 0 8px rgba(0,0,0,0.06)',\r\n transition: 'left 0.3s ease',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n <ToggleIcon isOpen={sidebarOpen} />\r\n </button>\r\n </>\r\n )}\r\n </>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useState, useRef, useEffect } from 'react';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\n\r\nexport type NotificationCategory = 'action' | 'general';\r\n\r\nexport interface NotificationItem {\r\n id: string | number;\r\n title: string;\r\n description: string;\r\n date: string;\r\n type: 'info' | 'success' | 'warning' | 'error' | 'reminder';\r\n isRead: boolean;\r\n /** หมวดหมู่การแจ้งเตือน: 'action' = ต้องดำเนินการ, 'general' = แจ้งเตือนทั่วไป */\r\n category?: NotificationCategory;\r\n}\r\n\r\ntype NotifFilterTab = 'all' | 'action' | 'general';\r\n\r\ninterface UserHeaderProps {\r\n user?: {\r\n firstName?: string;\r\n lastName?: string;\r\n pictureUrl?: string;\r\n /** เช่น 'ผู้สูงอายุ', 'เจ้าหน้าที่' */\r\n subtitle?: string;\r\n };\r\n notifications?: NotificationItem[];\r\n onToggleSidebar?: () => void;\r\n /** Custom bell icon */\r\n notificationBell?: React.ReactNode;\r\n onMarkAllRead?: () => void;\r\n\r\n /** Callback เมื่อกดการแจ้งเตือนแต่ละรายการ */\r\n onNotificationClick?: (notification: NotificationItem) => void;\r\n /** Callback เมื่อกดโปรไฟล์ผู้ใช้ */\r\n onProfile?: () => void;\r\n className?: string;\r\n}\r\n\r\nfunction BellIcon() {\r\n return (\r\n <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\">\r\n <path\r\n d=\"M21.2321 13.4463L19.3618 6.71712C18.8136 4.74574 17.6222 3.01418 15.9769 1.79767C14.3316 0.581165 12.3269 -0.0504751 10.2814 0.00315377C8.23593 0.0567826 6.26708 0.792603 4.6878 2.09365C3.10852 3.3947 2.00945 5.18632 1.5653 7.18371L0.11728 13.6954C-0.0426654 14.4149 -0.0389674 15.1611 0.128101 15.879C0.29517 16.5969 0.621344 17.2681 1.08254 17.8431C1.54374 18.418 2.12818 18.8821 2.79272 19.2009C3.45727 19.5198 4.18494 19.6853 4.92202 19.6853H6.01861C6.24454 20.7979 6.84817 21.7982 7.72723 22.5167C8.60629 23.2352 9.70671 23.6277 10.842 23.6277C11.9774 23.6277 13.0778 23.2352 13.9569 22.5167C14.8359 21.7982 15.4396 20.7979 15.6655 19.6853H16.4904C17.2492 19.6853 17.9977 19.5099 18.6774 19.1728C19.3572 18.8357 19.9498 18.346 20.409 17.742C20.8682 17.1379 21.1815 16.4359 21.3245 15.6907C21.4674 14.9455 21.4352 14.1774 21.2321 13.4463ZM10.842 21.654C10.2334 21.6515 9.64049 21.461 9.1443 21.1086C8.6481 20.7562 8.27291 20.2591 8.07005 19.6853H13.614C13.4112 20.2591 13.036 20.7562 12.5398 21.1086C12.0436 21.461 11.4506 21.6515 10.842 21.654ZM18.8411 16.55C18.5668 16.9139 18.2114 17.2088 17.8032 17.4113C17.3949 17.6138 16.9451 17.7183 16.4894 17.7165H4.92202C4.47982 17.7164 4.04328 17.6171 3.64463 17.4257C3.24598 17.2344 2.89539 16.9559 2.61874 16.611C2.34208 16.266 2.14643 15.8633 2.04622 15.4326C1.94602 15.0019 1.94381 14.5542 2.03977 14.1226L3.4868 7.60994C3.83561 6.04105 4.69886 4.63379 5.93932 3.61186C7.17978 2.58992 8.72625 2.01197 10.3329 1.96988C11.9395 1.92779 13.5142 2.42398 14.8064 3.37956C16.0987 4.33515 17.0344 5.69528 17.4649 7.24376L19.3352 13.9729C19.4588 14.4114 19.4785 14.8725 19.3927 15.3199C19.3069 15.7672 19.1181 16.1884 18.8411 16.55Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction HamburgerIcon() {\r\n return (\r\n <svg width=\"24\" height=\"18\" viewBox=\"0 0 27 18\" fill=\"none\">\r\n <path\r\n d=\"M1.1875 17.8426C0.851042 17.8426 0.569077 17.7287 0.341604 17.501C0.113868 17.2735 0 16.9914 0 16.6547C0 16.3182 0.113868 16.0363 0.341604 15.8088C0.569077 15.5816 0.851042 15.468 1.1875 15.468H25.7292C26.0656 15.468 26.3476 15.5817 26.5751 15.8092C26.8028 16.0369 26.9167 16.3192 26.9167 16.6559C26.9167 16.9923 26.8028 17.2743 26.5751 17.5018C26.3476 17.729 26.0656 17.8426 25.7292 17.8426H1.1875ZM1.1875 10.1088C0.851042 10.1088 0.569077 9.99492 0.341604 9.76719C0.113868 9.53945 0 9.25735 0 8.9209C0 8.58417 0.113868 8.30221 0.341604 8.075C0.569077 7.84753 0.851042 7.73379 1.1875 7.73379H25.7292C26.0656 7.73379 26.3476 7.84766 26.5751 8.0754C26.8028 8.30313 26.9167 8.58523 26.9167 8.92169C26.9167 9.25841 26.8028 9.54037 26.5751 9.76758C26.3476 9.99506 26.0656 10.1088 25.7292 10.1088H1.1875ZM1.1875 2.3746C0.851042 2.3746 0.569077 2.26087 0.341604 2.0334C0.113868 1.80566 0 1.52343 0 1.18671C0 0.850249 0.113868 0.568284 0.341604 0.340812C0.569077 0.113604 0.851042 0 1.1875 0H25.7292C26.0656 0 26.3476 0.113868 26.5751 0.341604C26.8028 0.569077 26.9167 0.851174 26.9167 1.1879C26.9167 1.52435 26.8028 1.80632 26.5751 2.03379C26.3476 2.261 26.0656 2.3746 25.7292 2.3746H1.1875Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction getNotifBg(type: NotificationItem['type']) {\r\n const map: Record<string, string> = {\r\n success: '#dcfce7',\r\n warning: '#fef9c3',\r\n error: '#fee2e2',\r\n reminder: '#f3e8ff',\r\n info: '#dbeafe',\r\n };\r\n return map[type] || map.info;\r\n}\r\n\r\nfunction getNotifIcon(type: NotificationItem['type']) {\r\n const map: Record<string, string> = {\r\n success: '✓',\r\n warning: '!',\r\n error: '✕',\r\n reminder: '⏰',\r\n info: 'i',\r\n };\r\n return map[type] || map.info;\r\n}\r\n\r\nexport default function UserHeader({\r\n user,\r\n notifications = [],\r\n onToggleSidebar,\r\n notificationBell,\r\n onMarkAllRead,\r\n\r\n onNotificationClick,\r\n onProfile,\r\n className,\r\n}: UserHeaderProps) {\r\n const displayName =\r\n `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || 'ผู้ใช้';\r\n const firstChar = user?.firstName?.charAt(0) || 'ผ';\r\n const [isNotifOpen, setIsNotifOpen] = useState(false);\r\n const [activeFilter, setActiveFilter] = useState<NotifFilterTab>('all');\r\n const notifRef = useRef<HTMLDivElement>(null);\r\n const isDark = useDarkMode();\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (notifRef.current && !notifRef.current.contains(e.target as Node)) {\r\n setIsNotifOpen(false);\r\n }\r\n };\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, []);\r\n\r\n const unreadCount = notifications.filter((n) => !n.isRead).length;\r\n\r\n // Filter counts\r\n const actionCount = notifications.filter((n) => n.category === 'action').length;\r\n const generalCount = notifications.filter((n) => !n.category || n.category === 'general').length;\r\n\r\n // Filtered notifications\r\n const filteredNotifications = notifications.filter((n) => {\r\n if (activeFilter === 'all') return true;\r\n if (activeFilter === 'action') return n.category === 'action';\r\n return !n.category || n.category === 'general';\r\n });\r\n\r\n return (\r\n <header\r\n className={className}\r\n style={{\r\n background: 'linear-gradient(to bottom left, #3AAE7D, #346D55)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 40,\r\n color: '#ffffff',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n padding: '14px 20px',\r\n }}\r\n >\r\n {/* Avatar & Name */}\r\n <div\r\n onClick={onProfile}\r\n onMouseEnter={(e) => {\r\n if (onProfile) e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.12)';\r\n }}\r\n onMouseLeave={(e) => {\r\n if (onProfile) e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n cursor: onProfile ? 'pointer' : 'default',\r\n padding: '4px 8px',\r\n borderRadius: '10px',\r\n transition: 'background-color 0.15s ease',\r\n flex: 1,\r\n minWidth: 0,\r\n overflow: 'hidden',\r\n }}\r\n >\r\n {user?.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={displayName}\r\n style={{\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n border: '2px solid rgba(255,255,255,0.7)',\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '50%',\r\n background: 'rgba(255,255,255,0.2)',\r\n border: '2px solid rgba(255,255,255,0.7)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\r\n }}\r\n >\r\n <span\r\n style={{ color: '#fff', fontSize: '18px', fontWeight: 600 }}\r\n >\r\n {firstChar}\r\n </span>\r\n </div>\r\n )}\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n <p\r\n style={{\r\n fontSize: '15px',\r\n fontWeight: 600,\r\n color: '#ffffff',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n สวัสดี,{' '}\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n }}\r\n >\r\n {displayName}\r\n </span>\r\n </p>\r\n {user?.subtitle && (\r\n <p\r\n style={{\r\n fontSize: '12px',\r\n color: 'rgba(255,255,255,0.75)',\r\n margin: '2px 0 0',\r\n fontWeight: 400,\r\n }}\r\n >\r\n {user.subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Right Side */}\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\r\n {/* Notification Bell */}\r\n <div style={{ position: 'relative' }} ref={notifRef}>\r\n {notificationBell || (\r\n <button\r\n onClick={() => setIsNotifOpen(!isNotifOpen)}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.15)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n padding: '10px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#ffffff',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n >\r\n <BellIcon />\r\n {unreadCount > 0 && (\r\n <span\r\n style={{\r\n position: 'absolute',\r\n top: '2px',\r\n right: '2px',\r\n minWidth: '16px',\r\n height: '16px',\r\n background: 'var(--color-alias-semantic-critical, #f21515)',\r\n borderRadius: '8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: unreadCount > 99 ? '7px' : '9px',\r\n fontWeight: 700,\r\n color: '#fff',\r\n padding: '0 3px',\r\n lineHeight: 1,\r\n }}\r\n >\r\n {unreadCount > 99 ? '99+' : unreadCount}\r\n </span>\r\n )}\r\n </button>\r\n )}\r\n\r\n {/* Notification Dropdown */}\r\n {isNotifOpen && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n right: 0,\r\n marginTop: '8px',\r\n width: '360px',\r\n background: isDark ? '#1e293b' : '#fff',\r\n borderRadius: '12px',\r\n boxShadow: isDark ? '0 10px 40px rgba(0,0,0,0.4)' : '0 10px 40px rgba(0,0,0,0.12)',\r\n zIndex: 999,\r\n overflow: 'hidden',\r\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\r\n }}\r\n >\r\n {/* Header */}\r\n <div\r\n style={{\r\n padding: '16px 16px 0',\r\n background: isDark ? '#1f2937' : '#fafafa',\r\n }}\r\n >\r\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '12px' }}>\r\n <span style={{ fontWeight: 600, fontSize: '14px', color: isDark ? '#ffffff' : '#111' }}>\r\n การแจ้งเตือน\r\n </span>\r\n {onMarkAllRead && (\r\n <button\r\n onClick={onMarkAllRead}\r\n style={{\r\n fontSize: '12px',\r\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n fontWeight: 500,\r\n }}\r\n >\r\n อ่านทั้งหมด\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Filter Tabs */}\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '6px',\r\n paddingBottom: '12px',\r\n borderBottom: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\r\n }}\r\n >\r\n {([\r\n { key: 'all' as NotifFilterTab, label: 'ทั้งหมด', count: notifications.length },\r\n { key: 'action' as NotifFilterTab, label: 'ต้องดำเนินการ', count: actionCount },\r\n { key: 'general' as NotifFilterTab, label: 'แจ้งเตือนทั่วไป', count: generalCount },\r\n ]).map((tab) => {\r\n const isActive = activeFilter === tab.key;\r\n return (\r\n <button\r\n key={tab.key}\r\n onClick={() => setActiveFilter(tab.key)}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '5px',\r\n padding: '5px 10px',\r\n fontSize: '12px',\r\n fontWeight: isActive ? 600 : 400,\r\n color: isActive\r\n ? (isDark ? '#ffffff' : '#1e7d55')\r\n : (isDark ? '#9ca3af' : '#6b7280'),\r\n background: isActive\r\n ? (isDark ? 'rgba(30,125,85,0.2)' : 'rgba(30,125,85,0.08)')\r\n : 'transparent',\r\n border: `1px solid ${isActive\r\n ? (isDark ? 'rgba(30,125,85,0.4)' : 'rgba(30,125,85,0.25)')\r\n : (isDark ? '#4b5563' : '#e5e7eb')}`,\r\n borderRadius: '16px',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n {tab.label}\r\n <span\r\n style={{\r\n minWidth: '18px',\r\n height: '18px',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '9px',\r\n fontSize: '10px',\r\n fontWeight: 700,\r\n lineHeight: 1,\r\n padding: '0 4px',\r\n background: isActive\r\n ? (isDark ? '#1e7d55' : '#1e7d55')\r\n : (isDark ? '#4b5563' : '#e5e7eb'),\r\n color: isActive ? '#ffffff' : (isDark ? '#d1d5db' : '#6b7280'),\r\n }}\r\n >\r\n {tab.count}\r\n </span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n {/* Items */}\r\n <div style={{ maxHeight: '60vh', overflowY: 'auto' }}>\r\n {filteredNotifications.length === 0 ? (\r\n <div\r\n style={{\r\n padding: '32px',\r\n textAlign: 'center',\r\n color: '#9ca3af',\r\n fontSize: '14px',\r\n }}\r\n >\r\n {activeFilter === 'all'\r\n ? '🔔 ไม่มีการแจ้งเตือนใหม่'\r\n : activeFilter === 'action'\r\n ? '✅ ไม่มีรายการที่ต้องดำเนินการ'\r\n : '📋 ไม่มีการแจ้งเตือนทั่วไป'}\r\n </div>\r\n ) : (\r\n filteredNotifications.map((item) => (\r\n <div\r\n onClick={() => onNotificationClick?.(item)}\r\n key={item.id}\r\n style={{\r\n padding: '12px 16px',\r\n borderBottom: `1px solid ${isDark ? '#2d3748' : '#f3f4f6'}`,\r\n cursor: 'pointer',\r\n background: !item.isRead ? (isDark ? 'rgba(59,130,246,0.15)' : 'rgba(219,234,254,0.3)') : 'transparent',\r\n position: 'relative',\r\n display: 'flex',\r\n gap: '12px',\r\n alignItems: 'flex-start',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#1f2937' : '#f9fafb';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = !item.isRead\r\n ? (isDark ? 'rgba(59,130,246,0.15)' : 'rgba(219,234,254,0.3)')\r\n : 'transparent';\r\n }}\r\n >\r\n {!item.isRead && (\r\n <span\r\n style={{\r\n position: 'absolute',\r\n top: '12px',\r\n right: '12px',\r\n width: '8px',\r\n height: '8px',\r\n background: '#ef4444',\r\n borderRadius: '50%',\r\n }}\r\n />\r\n )}\r\n <div\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n background: getNotifBg(item.type),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '13px',\r\n flexShrink: 0,\r\n marginTop: '2px',\r\n }}\r\n >\r\n {getNotifIcon(item.type)}\r\n </div>\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n {/* Category badge */}\r\n {item.category === 'action' && (\r\n <span\r\n style={{\r\n display: 'inline-block',\r\n fontSize: '10px',\r\n fontWeight: 600,\r\n color: '#b45309',\r\n background: '#fef3c7',\r\n padding: '1px 6px',\r\n borderRadius: '4px',\r\n marginBottom: '4px',\r\n }}\r\n >\r\n ต้องดำเนินการ\r\n </span>\r\n )}\r\n <p\r\n style={{\r\n fontSize: '13px',\r\n fontWeight: !item.isRead ? 600 : 500,\r\n color: isDark ? '#ffffff' : '#111',\r\n margin: '0 0 2px',\r\n }}\r\n >\r\n {item.title}\r\n </p>\r\n <p\r\n style={{\r\n fontSize: '12px',\r\n color: isDark ? '#9ca3af' : '#6b7280',\r\n margin: '0 0 4px',\r\n lineHeight: '18px',\r\n }}\r\n >\r\n {item.description}\r\n </p>\r\n <p\r\n style={{\r\n fontSize: '10px',\r\n color: isDark ? '#6b7280' : '#9ca3af',\r\n margin: 0,\r\n fontWeight: 500,\r\n }}\r\n >\r\n {item.date}\r\n </p>\r\n </div>\r\n </div>\r\n ))\r\n )}\r\n </div>\r\n\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Hamburger Button */}\r\n {onToggleSidebar && (\r\n <button\r\n onClick={onToggleSidebar}\r\n style={{\r\n padding: '10px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#ffffff',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.15)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n >\r\n <HamburgerIcon />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useEffect } from 'react';\r\nimport SidebarMenu from '../sidebar/SidebarMenu';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\nimport type { User, MenuItem } from '../sidebar/types';\r\n\r\ninterface UserSidebarProps {\r\n user: User | null;\r\n roleLabel: string;\r\n menuItems: MenuItem[];\r\n onNavigate: (path: string) => void;\r\n onLogout: () => void;\r\n isOpen: boolean;\r\n onClose: () => void;\r\n roleColor?: string;\r\n /** Callback เมื่อกดโปรไฟล์ผู้ใช้ */\r\n onProfile?: () => void;\r\n}\r\n\r\nfunction LogoutIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\r\n <polyline points=\"16 17 21 12 16 7\" />\r\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ProfileIcon() {\r\n return (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport default function UserSidebar({\r\n user,\r\n roleLabel,\r\n menuItems,\r\n onNavigate,\r\n onLogout,\r\n isOpen,\r\n onClose,\r\n roleColor = 'var(--color-alias-semantic-warning, orange)',\r\n onProfile,\r\n}: UserSidebarProps) {\r\n const isDark = useDarkMode();\r\n\r\n // Prevent body scroll when open\r\n useEffect(() => {\r\n if (isOpen) {\r\n document.body.style.overflow = 'hidden';\r\n } else {\r\n document.body.style.overflow = '';\r\n }\r\n return () => {\r\n document.body.style.overflow = '';\r\n };\r\n }, [isOpen]);\r\n\r\n const getFullName = () => {\r\n if (!user) return 'ผู้ใช้';\r\n if (user.firstName && user.lastName) return `${user.firstName} ${user.lastName}`;\r\n return user.firstName || user.lastName || 'ผู้ใช้';\r\n };\r\n\r\n const getInitial = () => {\r\n if (!user) return '?';\r\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\r\n };\r\n\r\n const handleMenuClick = (path: string) => {\r\n onNavigate(path);\r\n onClose();\r\n };\r\n\r\n const handleLogout = () => {\r\n onClose();\r\n onLogout();\r\n };\r\n\r\n return (\r\n <>\r\n {/* Overlay */}\r\n {isOpen && (\r\n <div\r\n onClick={onClose}\r\n style={{\r\n position: 'fixed',\r\n inset: 0,\r\n background: 'rgba(0,0,0,0.5)',\r\n zIndex: 45,\r\n transition: 'opacity 0.3s ease',\r\n }}\r\n />\r\n )}\r\n\r\n {/* Sidebar Panel */}\r\n <aside\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n width: '80vw',\r\n maxWidth: '320px',\r\n background: isDark ? '#1e293b' : '#fff',\r\n boxShadow: isDark ? '-4px 0 24px rgba(0,0,0,0.4)' : '-4px 0 24px rgba(0,0,0,0.12)',\r\n zIndex: 50,\r\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\r\n transition: 'transform 0.3s ease',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: isDark ? '#ffffff' : undefined,\r\n }}\r\n >\r\n {/* User Profile */}\r\n {user && (\r\n <div\r\n style={{\r\n padding: '20px',\r\n borderBottom: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '8px',\r\n }}\r\n >\r\n {user.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={getFullName()}\r\n style={{\r\n width: '56px',\r\n height: '56px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '56px',\r\n height: '56px',\r\n borderRadius: '50%',\r\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '20px',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\r\n }}\r\n >\r\n {getInitial()}\r\n </div>\r\n )}\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n <p\r\n style={{\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-text-colors-primary, #060d26)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n {getFullName()}\r\n </p>\r\n <p\r\n style={{\r\n fontSize: '13px',\r\n color: isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n margin: '2px 0 0',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '6px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n width: '8px',\r\n height: '8px',\r\n borderRadius: '50%',\r\n background: roleColor,\r\n display: 'inline-block',\r\n }}\r\n />\r\n {roleLabel}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Menu Items — with profile prepended when onProfile is provided */}\r\n <SidebarMenu\r\n menuItems={\r\n onProfile\r\n ? [{ id: '__profile__', title: 'โปรไฟล์', icon: <ProfileIcon />, path: '__profile__' }, ...menuItems]\r\n : menuItems\r\n }\r\n onItemClick={(path) => {\r\n if (path === '__profile__' && onProfile) {\r\n onProfile();\r\n onClose();\r\n } else {\r\n handleMenuClick(path);\r\n }\r\n }}\r\n />\r\n\r\n {/* Logout Button */}\r\n <div\r\n style={{\r\n padding: '20px',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n }}\r\n >\r\n <button\r\n onClick={handleLogout}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#3b1c1c' : '#fef2f2';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '16px',\r\n padding: '14px 16px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: 'var(--color-alias-semantic-critical, #f21515)',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.15s ease',\r\n fontSize: '15px',\r\n fontWeight: 500,\r\n }}\r\n >\r\n <LogoutIcon />\r\n <span>ออกจากระบบ</span>\r\n </button>\r\n </div>\r\n </aside>\r\n </>\r\n );\r\n}\r\n","'use client';\n\nimport { useDarkMode } from '../utils/useDarkMode';\n\nexport interface BottomBarProps {\n /** Content inside the bottom bar (pagination, buttons, etc.) */\n children: React.ReactNode;\n /** Left offset to account for sidebar width (default: '280px') */\n sidebarWidth?: string;\n /** Height of the bottom bar (default: '73px') */\n height?: string;\n /** Additional CSS class */\n className?: string;\n /** Custom inline styles */\n style?: React.CSSProperties;\n}\n\nexport default function BottomBar({\n children,\n sidebarWidth = '280px',\n height = '73px',\n className,\n style,\n}: BottomBarProps) {\n const isDark = useDarkMode();\n\n return (\n <div\n className={className}\n style={{\n position: 'fixed',\n bottom: 0,\n left: sidebarWidth,\n right: 0,\n height,\n background: isDark ? '#111827' : '#ffffff',\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '16px 24px',\n zIndex: 30,\n transition: 'left 0.3s ease',\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback } from 'react';\n\n// ---- Types ----\nexport type Theme = 'light' | 'dark';\nexport type FontSizeKey = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nexport interface FontSizeOption {\n key: FontSizeKey;\n label: string;\n scale: number;\n}\n\nexport const FONT_SIZE_OPTIONS: FontSizeOption[] = [\n { key: 'xsmall', label: 'เล็กมาก', scale: 0.8 },\n { key: 'small', label: 'เล็ก', scale: 0.9 },\n { key: 'medium', label: 'กลาง', scale: 1.0 },\n { key: 'large', label: 'ใหญ่', scale: 1.2 },\n { key: 'xlarge', label: 'ใหญ่มาก', scale: 1.4 },\n];\n\n// Base font sizes from gov-token-css design tokens (px)\nconst BASE_FONT_SIZES: Record<string, number> = {\n '--font-alias-mobile-body-fontsize': 16,\n '--font-alias-mobile-h1-fontsize': 28,\n '--font-alias-mobile-h2-fontsize': 24,\n '--font-alias-mobile-h3-fontsize': 20,\n '--font-alias-mobile-sub-fontsize': 14,\n '--font-alias-mobile-button-fontsize': 16,\n};\n\ninterface SettingsContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n fontSize: FontSizeKey;\n setFontSize: (size: FontSizeKey) => void;\n fontSizeOption: FontSizeOption;\n}\n\nconst SettingsContext = createContext<SettingsContextType | undefined>(undefined);\n\n// ---- Provider ----\nexport function SettingsProvider({\n children,\n defaultTheme = 'light',\n defaultFontSize = 'medium',\n themeStorageKey = 'app-theme',\n fontSizeStorageKey = 'app-font-size',\n}: {\n children: React.ReactNode;\n defaultTheme?: Theme;\n defaultFontSize?: FontSizeKey;\n themeStorageKey?: string;\n fontSizeStorageKey?: string;\n}) {\n const [theme, setThemeState] = useState<Theme>(defaultTheme);\n const [fontSize, setFontSizeState] = useState<FontSizeKey>(defaultFontSize);\n\n // Load from localStorage on mount\n useEffect(() => {\n try {\n const savedTheme = localStorage.getItem(themeStorageKey) as Theme | null;\n if (savedTheme === 'light' || savedTheme === 'dark') {\n setThemeState(savedTheme);\n }\n const savedFontSize = localStorage.getItem(fontSizeStorageKey) as FontSizeKey | null;\n if (savedFontSize && FONT_SIZE_OPTIONS.some((o) => o.key === savedFontSize)) {\n setFontSizeState(savedFontSize);\n }\n } catch {\n // localStorage not available\n }\n }, [themeStorageKey, fontSizeStorageKey]);\n\n // Apply theme\n useEffect(() => {\n const root = document.documentElement;\n if (theme === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n try {\n localStorage.setItem(themeStorageKey, theme);\n } catch {}\n }, [theme, themeStorageKey]);\n\n // Apply font size\n useEffect(() => {\n const option = FONT_SIZE_OPTIONS.find((o) => o.key === fontSize) || FONT_SIZE_OPTIONS[2];\n const root = document.documentElement;\n\n // Adjust design token CSS variables\n Object.entries(BASE_FONT_SIZES).forEach(([varName, baseValue]) => {\n root.style.setProperty(varName, `${baseValue * option.scale}px`);\n });\n\n // Adjust root font-size for rem-based sizing\n root.style.fontSize = `${16 * option.scale}px`;\n\n // Set global scale variable\n root.style.setProperty('--global-font-scale', option.scale.toString());\n\n // Scale body zoom for px-based inline styles\n document.body.style.zoom = option.scale.toString();\n\n try {\n localStorage.setItem(fontSizeStorageKey, fontSize);\n } catch {}\n }, [fontSize, fontSizeStorageKey]);\n\n const setTheme = useCallback((t: Theme) => {\n setThemeState(t);\n }, []);\n\n const toggleTheme = useCallback(() => {\n setThemeState((prev) => (prev === 'light' ? 'dark' : 'light'));\n }, []);\n\n const setFontSize = useCallback((s: FontSizeKey) => {\n setFontSizeState(s);\n }, []);\n\n const fontSizeOption = FONT_SIZE_OPTIONS.find((o) => o.key === fontSize) || FONT_SIZE_OPTIONS[2];\n\n return (\n <SettingsContext.Provider\n value={{ theme, setTheme, toggleTheme, fontSize, setFontSize, fontSizeOption }}\n >\n {children}\n </SettingsContext.Provider>\n );\n}\n\n// ---- Hook ----\nexport function useSettings(): SettingsContextType {\n const context = useContext(SettingsContext);\n if (!context) {\n throw new Error('useSettings must be used within <SettingsProvider>');\n }\n return context;\n}\n","'use client';\n\nimport { useSettings } from './SettingsContext';\nimport type { Theme } from './SettingsContext';\n\nfunction SunIcon() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"5\" /><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" /><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" /><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" /><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" /><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" /><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" /><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" /><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </svg>\n );\n}\n\nfunction MoonIcon() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n );\n}\n\ninterface ThemeSettingsProps {\n onBack?: () => void;\n}\n\nexport default function ThemeSettings({ onBack }: ThemeSettingsProps) {\n const { theme, setTheme } = useSettings();\n const options: { key: Theme; label: string; icon: React.ReactNode; bg: string; text: string }[] = [\n { key: 'light', label: 'สว่าง', icon: <SunIcon />, bg: '#fff', text: '#111' },\n { key: 'dark', label: 'มืด', icon: <MoonIcon />, bg: '#1f2937', text: '#f9fafb' },\n ];\n\n return (\n <div>\n {onBack && (\n <button\n onClick={onBack}\n style={{\n display: 'flex', alignItems: 'center', gap: 8,\n padding: '12px 16px', width: '100%',\n border: 'none', background: 'transparent',\n cursor: 'pointer', fontSize: 15, fontWeight: 600,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><path d=\"M19 12H5M12 19l-7-7 7-7\"/></svg>\n โหมดสว่าง/มืด\n </button>\n )}\n <div style={{ padding: '12px 16px', display: 'flex', gap: 12 }}>\n {options.map((opt) => {\n const isSelected = theme === opt.key;\n return (\n <button\n key={opt.key}\n onClick={() => setTheme(opt.key)}\n style={{\n flex: 1,\n padding: '20px 12px',\n borderRadius: 12,\n border: isSelected\n ? '2px solid var(--color-alias-color-brand-primary, #1e7d55)'\n : '2px solid var(--color-border-colors-neutral, #c8cedd)',\n background: opt.bg,\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 8,\n transition: 'all 0.2s ease',\n }}\n >\n <span style={{ color: opt.text }}>{opt.icon}</span>\n <span style={{\n fontSize: 13,\n fontWeight: isSelected ? 700 : 500,\n color: opt.text,\n }}>\n {opt.label}\n </span>\n {isSelected && (\n <span style={{\n width: 20, height: 20, borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n }}>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"3\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n </span>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useSettings } from './SettingsContext';\nimport { FONT_SIZE_OPTIONS } from './SettingsContext';\nimport type { FontSizeKey } from './SettingsContext';\n\ninterface FontSizeSettingsProps {\n onBack?: () => void;\n}\n\nexport default function FontSizeSettings({ onBack }: FontSizeSettingsProps) {\n const { fontSize, setFontSize, fontSizeOption } = useSettings();\n\n return (\n <div>\n {onBack && (\n <button\n onClick={onBack}\n style={{\n display: 'flex', alignItems: 'center', gap: 8,\n padding: '12px 16px', width: '100%',\n border: 'none', background: 'transparent',\n cursor: 'pointer', fontSize: 15, fontWeight: 600,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><path d=\"M19 12H5M12 19l-7-7 7-7\"/></svg>\n ขนาดตัวอักษร\n </button>\n )}\n\n {/* Preview */}\n <div style={{\n margin: '8px 16px',\n padding: '16px',\n borderRadius: 10,\n background: 'var(--color-foundations-fuji-pallet-light, #ebedf5)',\n textAlign: 'center',\n }}>\n <p style={{\n fontSize: `${16 * fontSizeOption.scale}px`,\n fontWeight: 500,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n }}>\n ตัวอย่างข้อความ\n </p>\n <p style={{\n fontSize: `${12 * fontSizeOption.scale}px`,\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: '4px 0 0',\n }}>\n ×{fontSizeOption.scale}\n </p>\n </div>\n\n {/* Options */}\n <div style={{ padding: '8px 16px', display: 'flex', flexDirection: 'column', gap: 4 }}>\n {FONT_SIZE_OPTIONS.map((opt) => {\n const isSelected = fontSize === opt.key;\n return (\n <button\n key={opt.key}\n onClick={() => setFontSize(opt.key as FontSizeKey)}\n onMouseEnter={(e) => {\n if (!isSelected) e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n if (!isSelected) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 14px',\n borderRadius: 8,\n border: isSelected\n ? '2px solid var(--color-alias-color-brand-primary, #1e7d55)'\n : '1px solid transparent',\n background: isSelected\n ? 'color-mix(in srgb, var(--color-alias-color-brand-primary, #1e7d55) 8%, transparent)'\n : 'transparent',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n <span style={{\n fontSize: `${14 * opt.scale}px`,\n fontWeight: isSelected ? 600 : 400,\n color: isSelected\n ? 'var(--color-alias-color-brand-primary, #1e7d55)'\n : 'var(--color-alias-text-colors-primary, #060d26)',\n }}>\n {opt.label}\n </span>\n <span style={{\n fontSize: 12,\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n ×{opt.scale}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport ThemeSettings from './ThemeSettings';\nimport FontSizeSettings from './FontSizeSettings';\n\ntype SettingsView = 'menu' | 'theme' | 'fontSize';\n\ninterface SettingsPanelProps {\n className?: string;\n /** แสดงตัวเลือกโหมดสว่าง/มืด (default: true) — ซ่อนสำหรับเจ้าหน้าที่ */\n showTheme?: boolean;\n}\n\nfunction FontSizeIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 7 4 4 20 4 20 7\" /><line x1=\"9\" y1=\"20\" x2=\"15\" y2=\"20\" /><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\" />\n </svg>\n );\n}\n\nfunction PaletteIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><circle cx=\"12\" cy=\"8\" r=\"1.5\" fill=\"currentColor\" /><circle cx=\"8\" cy=\"14\" r=\"1.5\" fill=\"currentColor\" /><circle cx=\"16\" cy=\"14\" r=\"1.5\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport default function SettingsPanel({ className, showTheme = true }: SettingsPanelProps) {\n const [view, setView] = useState<SettingsView>('menu');\n\n if (view === 'theme' && showTheme) {\n return <ThemeSettings onBack={() => setView('menu')} />;\n }\n\n if (view === 'fontSize') {\n return <FontSizeSettings onBack={() => setView('menu')} />;\n }\n\n // Menu view\n const allMenuItems = [\n {\n id: 'fontSize',\n icon: <FontSizeIcon />,\n label: 'ขนาดตัวอักษร',\n description: 'เล็กมาก / เล็ก / กลาง / ใหญ่ / ใหญ่มาก',\n onClick: () => setView('fontSize'),\n },\n ...(showTheme ? [{\n id: 'theme',\n icon: <PaletteIcon />,\n label: 'โหมดสว่าง/มืด',\n description: 'เปลี่ยนธีมแอปพลิเคชัน',\n onClick: () => setView('theme'),\n }] : []),\n ];\n\n return (\n <div className={className}>\n <div style={{\n padding: '16px',\n borderBottom: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n }}>\n <h3 style={{\n fontSize: 16, fontWeight: 700, margin: 0,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}>\n ตั้งค่าระบบ\n </h3>\n </div>\n <div style={{ padding: '8px', display: 'flex', flexDirection: 'column', gap: 2 }}>\n {allMenuItems.map((item) => (\n <button\n key={item.id}\n onClick={item.onClick}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 14,\n padding: '14px 12px',\n borderRadius: 10,\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n width: '100%',\n textAlign: 'left',\n transition: 'background-color 0.15s ease',\n }}\n >\n <span style={{\n width: 40, height: 40, borderRadius: 10,\n background: 'var(--color-foundations-fuji-pallet-light, #ebedf5)',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n flexShrink: 0,\n }}>\n {item.icon}\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <p style={{\n fontSize: 15, fontWeight: 600, margin: 0,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}>\n {item.label}\n </p>\n <p style={{\n fontSize: 12, margin: '2px 0 0',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n {item.description}\n </p>\n </div>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><path d=\"M9 18l6-6-6-6\"/></svg>\n </button>\n ))}\n </div>\n </div>\n );\n}\n","export {\n // Navigation\n HomeIcon,\n SearchIcon,\n BellIcon,\n // งานบริการ\n FolderIcon,\n ClipboardIcon,\n FileTextIcon,\n CalendarIcon,\n // ผู้ใช้\n UserIcon,\n UsersIcon,\n // ตั้งค่า\n GearIcon,\n WrenchIcon,\n ShieldIcon,\n HelpCircleIcon,\n // รายงาน\n BarChartIcon,\n HistoryIcon,\n DatabaseIcon,\n // องค์กร\n BuildingIcon,\n MapPinIcon,\n // ติดต่อ\n PhoneIcon,\n MailIcon,\n // สถานะ\n CheckCircleIcon,\n AlertTriangleIcon,\n XCircleIcon,\n PlusCircleIcon,\n LogOutIcon,\n // ไฟล์\n DownloadIcon,\n UploadIcon,\n PrinterIcon,\n // Misc\n StarIcon,\n HeartIcon,\n EyeIcon,\n EditIcon,\n TrashIcon,\n} from './GovIcons';\n\nexport type { IconProps } from './GovIcons';\n\n// ─── Icons namespace — import { Icons } from 'gov-layout' ───\nimport {\n HomeIcon, SearchIcon, BellIcon,\n FolderIcon, ClipboardIcon, FileTextIcon, CalendarIcon,\n UserIcon, UsersIcon,\n GearIcon, WrenchIcon, ShieldIcon, HelpCircleIcon,\n BarChartIcon, HistoryIcon, DatabaseIcon,\n BuildingIcon, MapPinIcon,\n PhoneIcon, MailIcon,\n CheckCircleIcon, AlertTriangleIcon, XCircleIcon, PlusCircleIcon, LogOutIcon,\n DownloadIcon, UploadIcon, PrinterIcon,\n StarIcon, HeartIcon, EyeIcon, EditIcon, TrashIcon,\n} from './GovIcons';\n\nexport const Icons = {\n Home: HomeIcon,\n Search: SearchIcon,\n Bell: BellIcon,\n Folder: FolderIcon,\n Clipboard: ClipboardIcon,\n FileText: FileTextIcon,\n Calendar: CalendarIcon,\n User: UserIcon,\n Users: UsersIcon,\n Gear: GearIcon,\n Wrench: WrenchIcon,\n Shield: ShieldIcon,\n HelpCircle: HelpCircleIcon,\n BarChart: BarChartIcon,\n History: HistoryIcon,\n Database: DatabaseIcon,\n Building: BuildingIcon,\n MapPin: MapPinIcon,\n Phone: PhoneIcon,\n Mail: MailIcon,\n CheckCircle: CheckCircleIcon,\n AlertTriangle: AlertTriangleIcon,\n XCircle: XCircleIcon,\n PlusCircle: PlusCircleIcon,\n LogOut: LogOutIcon,\n Download: DownloadIcon,\n Upload: UploadIcon,\n Printer: PrinterIcon,\n Star: StarIcon,\n Heart: HeartIcon,\n Eye: EyeIcon,\n Edit: EditIcon,\n Trash: TrashIcon,\n} as const;\n"]}
1
+ {"version":3,"sources":["../src/utils/useDarkMode.ts","../src/sidebar/SidebarHeader.tsx","../src/icons/GovIcons.tsx","../src/sidebar/SidebarMenu.tsx","../src/sidebar/SidebarUserProfile.tsx","../src/sidebar/StaffSidebar.tsx","../src/header/UserHeader.tsx","../src/header/UserSidebar.tsx","../src/bottombar/BottomBar.tsx","../src/settings/SettingsContext.tsx","../src/settings/ThemeSettings.tsx","../src/settings/FontSizeSettings.tsx","../src/settings/SettingsPanel.tsx","../src/icons/index.ts"],"names":["jsxs","jsx","useState","HelpCircleIcon","GearIcon","Fragment","BellIcon","useEffect","LogoutIcon","ProfileIcon"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport { useState, useEffect } from 'react';\n\n/**\n * Hook ตรวจสอบ dark mode จาก class \"dark\" บน <html>\n * ใช้ MutationObserver เพื่อ react ทันทีเมื่อ theme เปลี่ยน\n */\nexport function useDarkMode(): boolean {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n const root = document.documentElement;\n const check = () => setIsDark(root.classList.contains('dark'));\n check();\n\n const observer = new MutationObserver(check);\n observer.observe(root, { attributes: true, attributeFilter: ['class'] });\n return () => observer.disconnect();\n }, []);\n\n return isDark;\n}\n","'use client';\r\n\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\n\r\ninterface SidebarHeaderProps {\r\n orgLogo?: string;\r\n orgName: string;\r\n orgSubtitle?: string;\r\n collapsed?: boolean;\r\n}\r\n\r\nexport default function SidebarHeader({ orgLogo, orgName, orgSubtitle, collapsed }: SidebarHeaderProps) {\r\n const isDark = useDarkMode();\r\n\r\n if (collapsed) {\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '20px 8px',\r\n }}>\r\n {orgLogo ? (\r\n <img\r\n src={orgLogo}\r\n alt={orgName}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n ) : (\r\n <div style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '14px',\r\n }}>\r\n {orgName.charAt(0)}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '24px 20px',\r\n }}>\r\n {orgLogo && (\r\n <img\r\n src={orgLogo}\r\n alt={orgName}\r\n style={{\r\n width: '48px',\r\n height: '48px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n flexShrink: 0,\r\n }}\r\n />\r\n )}\r\n <div style={{ minWidth: 0 }}>\r\n <p style={{\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n lineHeight: '22px',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-color-brand-text-dark, #05010e)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}>\r\n {orgName}\r\n </p>\r\n {orgSubtitle && (\r\n <p style={{\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}>\r\n {orgSubtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","'use client';\n\nimport React from 'react';\n\nexport interface IconProps {\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst defaultProps = (size: number = 20) => ({\n width: size,\n height: size,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n});\n\n// ─── Navigation / หน้าหลัก ───\n\nexport function HomeIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9 22 9 12 15 12 15 22\" />\n </svg>\n );\n}\n\nexport function SearchIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n );\n}\n\nexport function BellIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n );\n}\n\n// ─── งานบริการ / หมวดหมู่ ───\n\nexport function FolderIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n\nexport function ClipboardIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\" />\n </svg>\n );\n}\n\nexport function FileTextIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </svg>\n );\n}\n\nexport function CalendarIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n );\n}\n\n// ─── ผู้ใช้ / สมาชิก ───\n\nexport function UserIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n );\n}\n\nexport function UsersIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n );\n}\n\n// ─── ตั้งค่า / ระบบ ───\n\nexport function GearIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n );\n}\n\nexport function WrenchIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\" />\n </svg>\n );\n}\n\nexport function ShieldIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n );\n}\n\nexport function HelpCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\n// ─── รายงาน / สถิติ ───\n\nexport function BarChartIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"10\" />\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"4\" />\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"16\" />\n </svg>\n );\n}\n\nexport function HistoryIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polyline points=\"1 4 1 10 7 10\" />\n <path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\" />\n </svg>\n );\n}\n\nexport function DatabaseIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </svg>\n );\n}\n\n// ─── องค์กร / สถานที่ ───\n\nexport function BuildingIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"9\" y1=\"22\" x2=\"9\" y2=\"18\" />\n <line x1=\"15\" y1=\"22\" x2=\"15\" y2=\"18\" />\n <line x1=\"9\" y1=\"6\" x2=\"9.01\" y2=\"6\" />\n <line x1=\"15\" y1=\"6\" x2=\"15.01\" y2=\"6\" />\n <line x1=\"9\" y1=\"10\" x2=\"9.01\" y2=\"10\" />\n <line x1=\"15\" y1=\"10\" x2=\"15.01\" y2=\"10\" />\n <line x1=\"9\" y1=\"14\" x2=\"9.01\" y2=\"14\" />\n <line x1=\"15\" y1=\"14\" x2=\"15.01\" y2=\"14\" />\n </svg>\n );\n}\n\nexport function MapPinIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" />\n </svg>\n );\n}\n\n// ─── การติดต่อ ───\n\nexport function PhoneIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n );\n}\n\nexport function MailIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </svg>\n );\n}\n\n// ─── สถานะ / Action ───\n\nexport function CheckCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n );\n}\n\nexport function AlertTriangleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nexport function XCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n );\n}\n\nexport function PlusCircleIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\" />\n <line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\" />\n </svg>\n );\n}\n\nexport function LogOutIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n );\n}\n\n// ─── ไฟล์ / ข้อมูล ───\n\nexport function DownloadIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n );\n}\n\nexport function UploadIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n );\n}\n\nexport function PrinterIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polyline points=\"6 9 6 2 18 2 18 9\" />\n <path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" />\n <rect x=\"6\" y=\"14\" width=\"12\" height=\"8\" />\n </svg>\n );\n}\n\n// ─── Misc ───\n\nexport function StarIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n );\n}\n\nexport function HeartIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\" />\n </svg>\n );\n}\n\nexport function EyeIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nexport function EditIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n );\n}\n\nexport function TrashIcon({ size = 20, className, style }: IconProps = {}) {\n return (\n <svg {...defaultProps(size)} className={className} style={style}>\n <polyline points=\"3 6 5 6 21 6\" />\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n <line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\" />\n <line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\" />\n </svg>\n );\n}\n","'use client';\r\n\r\nimport React, { useState, useId } from 'react';\r\nimport type { MenuItem } from './types';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\nimport {\r\n HomeIcon, FolderIcon, UserIcon, UsersIcon, GearIcon, HelpCircleIcon,\r\n FileTextIcon, ClipboardIcon, CalendarIcon, BarChartIcon, ShieldIcon,\r\n HistoryIcon, DatabaseIcon, BellIcon, SearchIcon, BuildingIcon,\r\n MapPinIcon, PhoneIcon, MailIcon, WrenchIcon, StarIcon, EditIcon,\r\n TrashIcon, EyeIcon, DownloadIcon, UploadIcon, PrinterIcon,\r\n LogOutIcon, CheckCircleIcon, PlusCircleIcon,\r\n} from '../icons/GovIcons';\r\n\r\n// SSR-safe CSS.escape — Node.js ไม่มี CSS global\r\nconst safeCssEscape = (value: string): string => {\r\n if (typeof CSS !== 'undefined' && CSS.escape) {\r\n return CSS.escape(value);\r\n }\r\n // Simple fallback: replace non-alphanumeric chars with underscore\r\n return value.replace(/[^a-zA-Z0-9_-]/g, '_');\r\n};\r\n\r\n// ─── Auto-assign icon ตาม id ───\r\nconst ICON_MAP: Record<string, React.ComponentType> = {\r\n home: HomeIcon, dashboard: HomeIcon,\r\n services: FolderIcon, service: FolderIcon, folder: FolderIcon, category: FolderIcon,\r\n users: UsersIcon, members: UsersIcon, user: UserIcon, profile: UserIcon, staff: UserIcon,\r\n settings: GearIcon, setting: GearIcon, config: GearIcon,\r\n help: HelpCircleIcon, support: HelpCircleIcon, faq: HelpCircleIcon,\r\n reports: BarChartIcon, report: BarChartIcon, stats: BarChartIcon, chart: BarChartIcon, analytics: BarChartIcon,\r\n roles: ShieldIcon, permissions: ShieldIcon, security: ShieldIcon,\r\n logs: HistoryIcon, history: HistoryIcon, activity: HistoryIcon, audit: HistoryIcon,\r\n backup: DatabaseIcon, database: DatabaseIcon, data: DatabaseIcon,\r\n documents: FileTextIcon, document: FileTextIcon, docs: FileTextIcon, files: FileTextIcon, file: FileTextIcon,\r\n forms: ClipboardIcon, form: ClipboardIcon, request: ClipboardIcon, requests: ClipboardIcon,\r\n calendar: CalendarIcon, schedule: CalendarIcon, appointment: CalendarIcon,\r\n notifications: BellIcon, notification: BellIcon, alerts: BellIcon,\r\n search: SearchIcon,\r\n organization: BuildingIcon, org: BuildingIcon, department: BuildingIcon, agency: BuildingIcon,\r\n location: MapPinIcon, map: MapPinIcon, address: MapPinIcon,\r\n phone: PhoneIcon, contact: PhoneIcon, call: PhoneIcon,\r\n email: MailIcon, mail: MailIcon, message: MailIcon, messages: MailIcon,\r\n tools: WrenchIcon, maintenance: WrenchIcon,\r\n favorites: StarIcon, bookmark: StarIcon,\r\n edit: EditIcon, manage: EditIcon,\r\n delete: TrashIcon, trash: TrashIcon,\r\n view: EyeIcon, preview: EyeIcon, detail: EyeIcon,\r\n download: DownloadIcon, export: DownloadIcon,\r\n upload: UploadIcon, import: UploadIcon,\r\n print: PrinterIcon, printer: PrinterIcon,\r\n logout: LogOutIcon, signout: LogOutIcon,\r\n approve: CheckCircleIcon, approved: CheckCircleIcon,\r\n add: PlusCircleIcon, create: PlusCircleIcon, new: PlusCircleIcon,\r\n};\r\n\r\nfunction DefaultIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction getAutoIcon(id: string): React.ReactNode {\r\n const IconComp = ICON_MAP[id.toLowerCase()];\r\n if (IconComp) return <IconComp />;\r\n return <DefaultIcon />;\r\n}\r\n\r\ninterface SidebarMenuProps {\r\n menuItems: MenuItem[];\r\n onItemClick: (path: string) => void;\r\n currentPath?: string;\r\n collapsed?: boolean;\r\n onExpandRequest?: () => void;\r\n}\r\n\r\nfunction ChevronDownIcon({ isOpen }: { isOpen: boolean }) {\r\n return (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n style={{\r\n transition: 'transform 0.2s ease',\r\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction MenuItemComponent({\r\n item,\r\n onItemClick,\r\n currentPath,\r\n depth = 0,\r\n collapsed = false,\r\n onExpandRequest,\r\n}: {\r\n item: MenuItem;\r\n onItemClick: (path: string) => void;\r\n currentPath?: string;\r\n depth?: number;\r\n collapsed?: boolean;\r\n onExpandRequest?: () => void;\r\n}) {\r\n const isDark = useDarkMode();\r\n const hasChildren = item.children && item.children.length > 0;\r\n const isActive = item.path ? currentPath === item.path : false;\r\n const resolvedIcon = item.icon || getAutoIcon(item.id);\r\n const isChildActive = hasChildren\r\n ? item.children!.some((child) => child.path === currentPath)\r\n : false;\r\n\r\n // Auto-expand if child is active, but allow user to override\r\n const [userToggled, setUserToggled] = useState(false);\r\n const [isOpen, setIsOpen] = useState(isChildActive);\r\n const expanded = userToggled ? isOpen : (isOpen || isChildActive);\r\n const btnId = useId();\r\n\r\n const handleClick = () => {\r\n if (hasChildren) {\r\n if (collapsed) {\r\n // Sidebar ย่ออยู่ — สั่งกาง sidebar + กาง children ด้วย\r\n setUserToggled(true);\r\n setIsOpen(true);\r\n onExpandRequest?.();\r\n } else {\r\n setUserToggled(true);\r\n setIsOpen(!expanded);\r\n }\r\n } else if (item.path) {\r\n onItemClick(item.path);\r\n }\r\n };\r\n\r\n const activeColor = 'var(--color-alias-color-brand-primary, #1e7d55)';\r\n const hoverBg = isDark ? '#334155' : 'var(--color-foundations-fuji-pallet-light, #ebedf5)';\r\n\r\n // Collapsed mode: icon only\r\n if (collapsed && depth === 0) {\r\n return (\r\n <li>\r\n <style>{`@media(hover:hover){.sidebar-btn-${safeCssEscape(btnId)}:not([data-active='true']):hover{background-color:${hoverBg}!important}}`}</style>\r\n <button\r\n className={`sidebar-btn-${safeCssEscape(btnId)}`}\r\n data-active={isActive || isChildActive}\r\n onClick={handleClick}\r\n title={item.title}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '12px 0',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: isActive || isChildActive\r\n ? `color-mix(in srgb, ${activeColor} 10%, transparent)`\r\n : 'transparent',\r\n color: isActive || isChildActive\r\n ? activeColor\r\n : isDark ? '#ffffff' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.15s ease',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n <span style={{\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}>\r\n {resolvedIcon}\r\n </span>\r\n </button>\r\n {item.dividerAfter && (\r\n <hr style={{\r\n border: 'none',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n margin: '8px 4px',\r\n }} />\r\n )}\r\n </li>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <li>\r\n <style>{`@media(hover:hover){.sidebar-btn-${safeCssEscape(btnId)}:not([data-active='true']):hover{background-color:${hoverBg}!important}}`}</style>\r\n <button\r\n className={`sidebar-btn-${safeCssEscape(btnId)}`}\r\n data-active={isActive}\r\n onClick={handleClick}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: depth > 0 ? '10px 16px 10px 52px' : '12px 16px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: isActive ? `color-mix(in srgb, ${activeColor} 10%, transparent)` : 'transparent',\r\n color: isActive\r\n ? activeColor\r\n : isDark ? '#ffffff' : 'var(--color-alias-text-colors-primary, #060d26)',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.15s ease',\r\n textAlign: 'left',\r\n fontSize: '15px',\r\n fontWeight: isActive ? 600 : 400,\r\n lineHeight: '22px',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n <span style={{\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n color: isActive\r\n ? activeColor\r\n : isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n }}>\r\n {resolvedIcon}\r\n </span>\r\n <span style={{ flex: 1 }}>{item.title}</span>\r\n {hasChildren && <ChevronDownIcon isOpen={expanded} />}\r\n </button>\r\n </li>\r\n {hasChildren && expanded && (\r\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\r\n {item.children!.map((child) => (\r\n <MenuItemComponent\r\n key={child.id}\r\n item={child}\r\n onItemClick={onItemClick}\r\n currentPath={currentPath}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </ul>\r\n )}\r\n {item.dividerAfter && (\r\n <li>\r\n <hr style={{\r\n border: 'none',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n margin: '8px 0',\r\n }} />\r\n </li>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nexport default function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed, onExpandRequest }: SidebarMenuProps) {\r\n return (\r\n <nav style={{\r\n padding: collapsed ? '8px 8px' : '8px 12px',\r\n }}>\r\n <ul style={{\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '2px',\r\n }}>\r\n {menuItems.map((item) => (\r\n <MenuItemComponent\r\n key={item.id}\r\n item={item}\r\n onItemClick={onItemClick}\r\n currentPath={currentPath}\r\n collapsed={collapsed}\r\n onExpandRequest={onExpandRequest}\r\n />\r\n ))}\r\n </ul>\r\n </nav>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport type { User } from './types';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\n\r\ninterface SidebarUserProfileProps {\r\n user: User | null;\r\n roleLabel: string;\r\n onLogout: () => void;\r\n collapsed?: boolean;\r\n /** Callback เมื่อกดโปรไฟล์ผู้ใช้ */\r\n onProfile?: () => void;\r\n}\r\n\r\nfunction LogoutIcon() {\r\n return (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\r\n <polyline points=\"16 17 21 12 16 7\" />\r\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ProfileIcon() {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction AvatarIcon({ size = 20 }: { size?: number }) {\r\n return (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport default function SidebarUserProfile({\r\n user,\r\n roleLabel,\r\n onLogout,\r\n collapsed,\r\n onProfile,\r\n}: SidebarUserProfileProps) {\r\n const isDark = useDarkMode();\r\n\r\n if (!user) return null;\r\n\r\n const getFullName = () => {\r\n if (user.firstName && user.lastName) {\r\n return `${user.firstName} ${user.lastName}`;\r\n }\r\n return user.firstName || user.lastName || 'ผู้ใช้';\r\n };\r\n\r\n // Collapsed: avatar + logout icon only\r\n if (collapsed) {\r\n return (\r\n <div style={{\r\n padding: '12px 8px',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: '12px',\r\n }}>\r\n {/* Avatar — clickable if onProfile is provided */}\r\n <div\r\n onClick={onProfile}\r\n title={onProfile ? 'ดูโปรไฟล์' : getFullName()}\r\n style={{ cursor: onProfile ? 'pointer' : 'default' }}\r\n >\r\n {user.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={getFullName()}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '50%',\r\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '14px',\r\n }}\r\n >\r\n <AvatarIcon size={20} />\r\n </div>\r\n )}\r\n </div>\r\n {/* Profile button */}\r\n {onProfile && (\r\n <button\r\n onClick={onProfile}\r\n title=\"โปรไฟล์ของฉัน\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#334155' : 'var(--color-alias-color-brand-surface, #faf9e5)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: isDark ? '#8be9a0' : 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n >\r\n <ProfileIcon />\r\n </button>\r\n )}\r\n <button\r\n onClick={onLogout}\r\n title=\"ออกจากระบบ\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: 'var(--color-alias-semantic-critical, #f21515)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n >\r\n <LogoutIcon />\r\n </button>\r\n </div>\r\n );\r\n }\r\n\r\n // Expanded\r\n return (\r\n <div\r\n style={{\r\n padding: '16px 20px',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n }}\r\n >\r\n {/* Avatar + Name — clickable if onProfile is provided */}\r\n <div\r\n onClick={onProfile}\r\n onMouseEnter={(e) => {\r\n if (onProfile) e.currentTarget.style.opacity = '0.8';\r\n }}\r\n onMouseLeave={(e) => {\r\n if (onProfile) e.currentTarget.style.opacity = '1';\r\n }}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n flex: 1,\r\n minWidth: 0,\r\n cursor: onProfile ? 'pointer' : 'default',\r\n transition: 'opacity 0.15s ease',\r\n }}\r\n >\r\n {user.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={getFullName()}\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n flexShrink: 0,\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <AvatarIcon size={24} />\r\n </div>\r\n )}\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n <p style={{\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-text-colors-primary, #060d26)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}>\r\n {getFullName()}\r\n </p>\r\n <p style={{\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n margin: 0,\r\n }}>\r\n {roleLabel}\r\n </p>\r\n </div>\r\n </div>\r\n {/* Profile button */}\r\n {onProfile && (\r\n <button\r\n onClick={onProfile}\r\n title=\"โปรไฟล์ของฉัน\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#334155' : 'var(--color-alias-color-brand-surface, #faf9e5)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: isDark ? '#8be9a0' : 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <ProfileIcon />\r\n </button>\r\n )}\r\n <button\r\n onClick={onLogout}\r\n title=\"ออกจากระบบ\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\r\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\r\n }}\r\n style={{\r\n width: '36px',\r\n height: '36px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: 'var(--color-alias-semantic-critical, #f21515)',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'background-color 0.15s ease',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <LogoutIcon />\r\n </button>\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useState } from 'react';\r\nimport SidebarHeader from './SidebarHeader';\r\nimport SidebarMenu from './SidebarMenu';\r\nimport SidebarUserProfile from './SidebarUserProfile';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\nimport type { StaffSidebarProps, MenuItem } from './types';\r\n\r\nfunction ToggleIcon({ isOpen }: { isOpen: boolean }) {\r\n return (\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n style={{\r\n transition: 'transform 0.2s ease',\r\n transform: isOpen ? 'rotate(0deg)' : 'rotate(180deg)',\r\n }}\r\n >\r\n <path d=\"M15 18l-6-6 6-6\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction HelpCircleIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction GearIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\r\n </svg>\r\n );\r\n}\r\n\r\n// Default bottom menu — ตั้งค่าระบบ + ช่วยเหลือ\r\nconst DEFAULT_BOTTOM_MENU: MenuItem[] = [\r\n { id: 'settings', title: 'ตั้งค่าระบบ', icon: <GearIcon />, path: '/settings' },\r\n { id: 'help', title: 'ช่วยเหลือ', icon: <HelpCircleIcon />, path: '/help' },\r\n];\r\n\r\nexport default function StaffSidebar({\r\n orgLogo,\r\n orgName,\r\n orgSubtitle,\r\n menuItems,\r\n bottomMenuItems,\r\n user,\r\n roleLabel,\r\n onNavigate,\r\n onLogout,\r\n onProfile,\r\n currentPath,\r\n width = '280px',\r\n className,\r\n collapsible = false,\r\n isOpen: controlledIsOpen,\r\n onToggle,\r\n onExpandRequest,\r\n}: StaffSidebarProps) {\r\n const isDark = useDarkMode();\r\n const [internalOpen, setInternalOpen] = useState(true);\r\n const sidebarOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalOpen;\r\n const collapsed = collapsible && !sidebarOpen;\r\n const collapsedWidth = '64px';\r\n const currentWidth = collapsed ? collapsedWidth : width;\r\n\r\n // ใช้ default ถ้าไม่ได้ส่ง bottomMenuItems มา\r\n const resolvedBottomMenu = bottomMenuItems !== undefined ? bottomMenuItems : DEFAULT_BOTTOM_MENU;\r\n\r\n const handleToggle = () => {\r\n if (onToggle) {\r\n onToggle();\r\n } else {\r\n setInternalOpen(!internalOpen);\r\n }\r\n };\r\n\r\n // เมื่อกดเมนูที่มี children ขณะ sidebar ย่อ\r\n const handleExpandRequest = () => {\r\n if (onExpandRequest) {\r\n onExpandRequest();\r\n } else {\r\n // ถ้าไม่ได้ส่ง onExpandRequest มา ให้กาง sidebar เลย\r\n if (onToggle) {\r\n onToggle();\r\n } else {\r\n setInternalOpen(true);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <aside\r\n className={className}\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n height: '100vh',\r\n width: currentWidth,\r\n background: isDark ? '#1e293b' : '#fff',\r\n borderRight: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n zIndex: 50,\r\n overflow: 'hidden',\r\n transition: 'width 0.3s ease',\r\n color: isDark ? '#ffffff' : undefined,\r\n }}\r\n >\r\n {/* Organization Header */}\r\n <SidebarHeader\r\n orgLogo={orgLogo}\r\n orgName={orgName}\r\n orgSubtitle={orgSubtitle}\r\n collapsed={collapsed}\r\n />\r\n\r\n {/* Main Menu — scrollable area */}\r\n <div style={{ flex: 1, overflowY: 'auto', minHeight: 0 }}>\r\n <SidebarMenu\r\n menuItems={menuItems}\r\n onItemClick={onNavigate}\r\n currentPath={currentPath}\r\n collapsed={collapsed}\r\n onExpandRequest={handleExpandRequest}\r\n />\r\n </div>\r\n\r\n {/* Bottom section — pinned at bottom */}\r\n <div style={{ flexShrink: 0 }}>\r\n {/* Bottom Menu (ตั้งค่าระบบ + ช่วยเหลือ) */}\r\n {resolvedBottomMenu && resolvedBottomMenu.length > 0 && (\r\n <>\r\n <hr style={{\r\n border: 'none',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n margin: '4px 12px',\r\n }} />\r\n <SidebarMenu\r\n menuItems={resolvedBottomMenu}\r\n onItemClick={onNavigate}\r\n currentPath={currentPath}\r\n collapsed={collapsed}\r\n onExpandRequest={handleExpandRequest}\r\n />\r\n </>\r\n )}\r\n\r\n {/* User Profile */}\r\n <SidebarUserProfile\r\n user={user}\r\n roleLabel={roleLabel}\r\n onLogout={onLogout}\r\n onProfile={onProfile}\r\n collapsed={collapsed}\r\n />\r\n </div>\r\n </aside>\r\n\r\n {/* Toggle Button — top edge */}\r\n {collapsible && (\r\n <>\r\n <style>{`@media(hover:hover){.sidebar-toggle-btn:hover{background-color:${isDark ? '#374151' : '#f3f4f6'}!important}}`}</style>\r\n <button\r\n className=\"sidebar-toggle-btn\"\r\n onClick={handleToggle}\r\n title={sidebarOpen ? 'ย่อ Sidebar' : 'ขยาย Sidebar'}\r\n style={{\r\n position: 'fixed',\r\n top: '10%',\r\n left: currentWidth,\r\n zIndex: 51,\r\n width: '24px',\r\n height: '40px',\r\n borderRadius: '0 6px 6px 0',\r\n border: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n borderLeft: 'none',\r\n background: isDark ? '#1e293b' : '#fff',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxShadow: isDark ? '2px 0 8px rgba(0,0,0,0.3)' : '2px 0 8px rgba(0,0,0,0.06)',\r\n transition: 'left 0.3s ease',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n <ToggleIcon isOpen={sidebarOpen} />\r\n </button>\r\n </>\r\n )}\r\n </>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useState, useRef, useEffect } from 'react';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\n\r\nexport type NotificationCategory = 'action' | 'general';\r\n\r\nexport interface NotificationItem {\r\n id: string | number;\r\n title: string;\r\n description: string;\r\n date: string;\r\n type: 'info' | 'success' | 'warning' | 'error' | 'reminder';\r\n isRead: boolean;\r\n /** หมวดหมู่การแจ้งเตือน: 'action' = ต้องดำเนินการ, 'general' = แจ้งเตือนทั่วไป */\r\n category?: NotificationCategory;\r\n}\r\n\r\ntype NotifFilterTab = 'all' | 'action' | 'general';\r\n\r\ninterface UserHeaderProps {\r\n user?: {\r\n firstName?: string;\r\n lastName?: string;\r\n pictureUrl?: string;\r\n /** เช่น 'ผู้สูงอายุ', 'เจ้าหน้าที่' */\r\n subtitle?: string;\r\n };\r\n notifications?: NotificationItem[];\r\n onToggleSidebar?: () => void;\r\n /** Custom bell icon */\r\n notificationBell?: React.ReactNode;\r\n onMarkAllRead?: () => void;\r\n\r\n /** Callback เมื่อกดการแจ้งเตือนแต่ละรายการ */\r\n onNotificationClick?: (notification: NotificationItem) => void;\r\n /** Callback เมื่อกดโปรไฟล์ผู้ใช้ */\r\n onProfile?: () => void;\r\n className?: string;\r\n}\r\n\r\nfunction BellIcon() {\r\n return (\r\n <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\">\r\n <path\r\n d=\"M21.2321 13.4463L19.3618 6.71712C18.8136 4.74574 17.6222 3.01418 15.9769 1.79767C14.3316 0.581165 12.3269 -0.0504751 10.2814 0.00315377C8.23593 0.0567826 6.26708 0.792603 4.6878 2.09365C3.10852 3.3947 2.00945 5.18632 1.5653 7.18371L0.11728 13.6954C-0.0426654 14.4149 -0.0389674 15.1611 0.128101 15.879C0.29517 16.5969 0.621344 17.2681 1.08254 17.8431C1.54374 18.418 2.12818 18.8821 2.79272 19.2009C3.45727 19.5198 4.18494 19.6853 4.92202 19.6853H6.01861C6.24454 20.7979 6.84817 21.7982 7.72723 22.5167C8.60629 23.2352 9.70671 23.6277 10.842 23.6277C11.9774 23.6277 13.0778 23.2352 13.9569 22.5167C14.8359 21.7982 15.4396 20.7979 15.6655 19.6853H16.4904C17.2492 19.6853 17.9977 19.5099 18.6774 19.1728C19.3572 18.8357 19.9498 18.346 20.409 17.742C20.8682 17.1379 21.1815 16.4359 21.3245 15.6907C21.4674 14.9455 21.4352 14.1774 21.2321 13.4463ZM10.842 21.654C10.2334 21.6515 9.64049 21.461 9.1443 21.1086C8.6481 20.7562 8.27291 20.2591 8.07005 19.6853H13.614C13.4112 20.2591 13.036 20.7562 12.5398 21.1086C12.0436 21.461 11.4506 21.6515 10.842 21.654ZM18.8411 16.55C18.5668 16.9139 18.2114 17.2088 17.8032 17.4113C17.3949 17.6138 16.9451 17.7183 16.4894 17.7165H4.92202C4.47982 17.7164 4.04328 17.6171 3.64463 17.4257C3.24598 17.2344 2.89539 16.9559 2.61874 16.611C2.34208 16.266 2.14643 15.8633 2.04622 15.4326C1.94602 15.0019 1.94381 14.5542 2.03977 14.1226L3.4868 7.60994C3.83561 6.04105 4.69886 4.63379 5.93932 3.61186C7.17978 2.58992 8.72625 2.01197 10.3329 1.96988C11.9395 1.92779 13.5142 2.42398 14.8064 3.37956C16.0987 4.33515 17.0344 5.69528 17.4649 7.24376L19.3352 13.9729C19.4588 14.4114 19.4785 14.8725 19.3927 15.3199C19.3069 15.7672 19.1181 16.1884 18.8411 16.55Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction HamburgerIcon() {\r\n return (\r\n <svg width=\"24\" height=\"18\" viewBox=\"0 0 27 18\" fill=\"none\">\r\n <path\r\n d=\"M1.1875 17.8426C0.851042 17.8426 0.569077 17.7287 0.341604 17.501C0.113868 17.2735 0 16.9914 0 16.6547C0 16.3182 0.113868 16.0363 0.341604 15.8088C0.569077 15.5816 0.851042 15.468 1.1875 15.468H25.7292C26.0656 15.468 26.3476 15.5817 26.5751 15.8092C26.8028 16.0369 26.9167 16.3192 26.9167 16.6559C26.9167 16.9923 26.8028 17.2743 26.5751 17.5018C26.3476 17.729 26.0656 17.8426 25.7292 17.8426H1.1875ZM1.1875 10.1088C0.851042 10.1088 0.569077 9.99492 0.341604 9.76719C0.113868 9.53945 0 9.25735 0 8.9209C0 8.58417 0.113868 8.30221 0.341604 8.075C0.569077 7.84753 0.851042 7.73379 1.1875 7.73379H25.7292C26.0656 7.73379 26.3476 7.84766 26.5751 8.0754C26.8028 8.30313 26.9167 8.58523 26.9167 8.92169C26.9167 9.25841 26.8028 9.54037 26.5751 9.76758C26.3476 9.99506 26.0656 10.1088 25.7292 10.1088H1.1875ZM1.1875 2.3746C0.851042 2.3746 0.569077 2.26087 0.341604 2.0334C0.113868 1.80566 0 1.52343 0 1.18671C0 0.850249 0.113868 0.568284 0.341604 0.340812C0.569077 0.113604 0.851042 0 1.1875 0H25.7292C26.0656 0 26.3476 0.113868 26.5751 0.341604C26.8028 0.569077 26.9167 0.851174 26.9167 1.1879C26.9167 1.52435 26.8028 1.80632 26.5751 2.03379C26.3476 2.261 26.0656 2.3746 25.7292 2.3746H1.1875Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction MessageOutlinedIcon(props: React.SVGProps<SVGSVGElement>) {\r\n return (\r\n <svg focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"currentColor\" {...props}>\r\n <path d=\"M4 4h16v12H5.17L4 17.17zm0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm2 10h12v2H6zm0-3h12v2H6zm0-3h12v2H6z\"></path>\r\n </svg>\r\n );\r\n}\r\n\r\nfunction getNotifBg(type: NotificationItem['type']) {\r\n const map: Record<string, string> = {\r\n success: '#dcfce7',\r\n warning: '#fef9c3',\r\n error: '#fee2e2',\r\n reminder: '#f3e8ff',\r\n info: '#dbeafe',\r\n };\r\n return map[type] || map.info;\r\n}\r\n\r\nfunction getNotifIcon(type: NotificationItem['type']) {\r\n const map: Record<string, string> = {\r\n success: '✓',\r\n warning: '!',\r\n error: '✕',\r\n reminder: '⏰',\r\n info: 'i',\r\n };\r\n return map[type] || map.info;\r\n}\r\n\r\nexport default function UserHeader({\r\n user,\r\n notifications = [],\r\n onToggleSidebar,\r\n notificationBell,\r\n onMarkAllRead,\r\n\r\n onNotificationClick,\r\n onProfile,\r\n className,\r\n}: UserHeaderProps) {\r\n const displayName =\r\n `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || 'ผู้ใช้';\r\n const firstChar = user?.firstName?.charAt(0) || 'ผ';\r\n const [isNotifOpen, setIsNotifOpen] = useState(false);\r\n const [activeFilter, setActiveFilter] = useState<NotifFilterTab>('all');\r\n const notifRef = useRef<HTMLDivElement>(null);\r\n const isDark = useDarkMode();\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (notifRef.current && !notifRef.current.contains(e.target as Node)) {\r\n setIsNotifOpen(false);\r\n }\r\n };\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, []);\r\n\r\n const unreadCount = notifications.filter((n) => !n.isRead).length;\r\n\r\n // Filter counts\r\n const actionCount = notifications.filter((n) => n.category === 'action').length;\r\n const generalCount = notifications.filter((n) => !n.category || n.category === 'general').length;\r\n\r\n // Filtered notifications\r\n const filteredNotifications = notifications.filter((n) => {\r\n if (activeFilter === 'all') return true;\r\n if (activeFilter === 'action') return n.category === 'action';\r\n return !n.category || n.category === 'general';\r\n });\r\n\r\n return (\r\n <header\r\n className={className}\r\n style={{\r\n background: 'linear-gradient(to bottom left, #3AAE7D, #346D55)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 40,\r\n color: '#ffffff',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n padding: '14px 20px',\r\n }}\r\n >\r\n {/* Avatar & Name */}\r\n <div\r\n onClick={onProfile}\r\n onMouseEnter={(e) => {\r\n if (onProfile) e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.12)';\r\n }}\r\n onMouseLeave={(e) => {\r\n if (onProfile) e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n cursor: onProfile ? 'pointer' : 'default',\r\n padding: '4px 8px',\r\n borderRadius: '10px',\r\n transition: 'background-color 0.15s ease',\r\n flex: 1,\r\n minWidth: 0,\r\n overflow: 'hidden',\r\n }}\r\n >\r\n {user?.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={displayName}\r\n style={{\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n border: '2px solid rgba(255,255,255,0.7)',\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '50%',\r\n background: 'rgba(255,255,255,0.2)',\r\n border: '2px solid rgba(255,255,255,0.7)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\r\n }}\r\n >\r\n <span\r\n style={{ color: '#fff', fontSize: '18px', fontWeight: 600 }}\r\n >\r\n {firstChar}\r\n </span>\r\n </div>\r\n )}\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n <p\r\n style={{\r\n fontSize: '15px',\r\n fontWeight: 600,\r\n color: '#ffffff',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n สวัสดี,{' '}\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n }}\r\n >\r\n {displayName}\r\n </span>\r\n </p>\r\n {user?.subtitle && (\r\n <p\r\n style={{\r\n fontSize: '12px',\r\n color: 'rgba(255,255,255,0.75)',\r\n margin: '2px 0 0',\r\n fontWeight: 400,\r\n }}\r\n >\r\n {user.subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Right Side */}\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\r\n {/* Notification Bell */}\r\n <div style={{ position: 'relative' }} ref={notifRef}>\r\n {notificationBell || (\r\n <button\r\n onClick={() => setIsNotifOpen(!isNotifOpen)}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.15)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n padding: '10px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#ffffff',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n >\r\n <BellIcon />\r\n {unreadCount > 0 && (\r\n <span\r\n style={{\r\n position: 'absolute',\r\n top: '2px',\r\n right: '2px',\r\n minWidth: '16px',\r\n height: '16px',\r\n background: 'var(--color-alias-semantic-critical, #f21515)',\r\n borderRadius: '8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: unreadCount > 99 ? '7px' : '9px',\r\n fontWeight: 700,\r\n color: '#fff',\r\n padding: '0 3px',\r\n lineHeight: 1,\r\n }}\r\n >\r\n {unreadCount > 99 ? '99+' : unreadCount}\r\n </span>\r\n )}\r\n </button>\r\n )}\r\n\r\n {/* Notification Dropdown */}\r\n {isNotifOpen && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n right: 0,\r\n marginTop: '8px',\r\n width: '360px',\r\n background: isDark ? '#1e293b' : '#fff',\r\n borderRadius: '12px',\r\n boxShadow: isDark ? '0 10px 40px rgba(0,0,0,0.4)' : '0 10px 40px rgba(0,0,0,0.12)',\r\n zIndex: 999,\r\n overflow: 'hidden',\r\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\r\n }}\r\n >\r\n {/* Header */}\r\n <div\r\n style={{\r\n padding: '16px 16px 0',\r\n background: isDark ? '#1f2937' : '#fafafa',\r\n }}\r\n >\r\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '12px' }}>\r\n <span style={{ fontWeight: 600, fontSize: '14px', color: isDark ? '#ffffff' : '#111' }}>\r\n การแจ้งเตือน\r\n </span>\r\n {onMarkAllRead && (\r\n <button\r\n onClick={onMarkAllRead}\r\n style={{\r\n fontSize: '12px',\r\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n fontWeight: 500,\r\n }}\r\n >\r\n อ่านทั้งหมด\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Filter Tabs */}\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '6px',\r\n paddingBottom: '12px',\r\n borderBottom: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\r\n }}\r\n >\r\n {([\r\n { key: 'all' as NotifFilterTab, label: 'ทั้งหมด', count: notifications.length },\r\n { key: 'action' as NotifFilterTab, label: 'ต้องดำเนินการ', count: actionCount },\r\n { key: 'general' as NotifFilterTab, label: 'แจ้งเตือนทั่วไป', count: generalCount },\r\n ]).map((tab) => {\r\n const isActive = activeFilter === tab.key;\r\n return (\r\n <button\r\n key={tab.key}\r\n onClick={() => setActiveFilter(tab.key)}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '5px',\r\n padding: '5px 10px',\r\n fontSize: '12px',\r\n fontWeight: isActive ? 600 : 400,\r\n color: isActive\r\n ? (isDark ? '#ffffff' : '#1e7d55')\r\n : (isDark ? '#9ca3af' : '#6b7280'),\r\n background: isActive\r\n ? (isDark ? 'rgba(30,125,85,0.2)' : 'rgba(30,125,85,0.08)')\r\n : 'transparent',\r\n border: `1px solid ${isActive\r\n ? (isDark ? 'rgba(30,125,85,0.4)' : 'rgba(30,125,85,0.25)')\r\n : (isDark ? '#4b5563' : '#e5e7eb')}`,\r\n borderRadius: '16px',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n {tab.label}\r\n <span\r\n style={{\r\n minWidth: '18px',\r\n height: '18px',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '9px',\r\n fontSize: '10px',\r\n fontWeight: 700,\r\n lineHeight: 1,\r\n padding: '0 4px',\r\n background: isActive\r\n ? (isDark ? '#1e7d55' : '#1e7d55')\r\n : (isDark ? '#4b5563' : '#e5e7eb'),\r\n color: isActive ? '#ffffff' : (isDark ? '#d1d5db' : '#6b7280'),\r\n }}\r\n >\r\n {tab.count}\r\n </span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n {/* Items */}\r\n <div style={{ maxHeight: '60vh', overflowY: 'auto' }}>\r\n {filteredNotifications.length === 0 ? (\r\n <div\r\n style={{\r\n padding: '48px 32px',\r\n textAlign: 'center',\r\n color: isDark ? '#9ca3af' : '#6b7280',\r\n fontSize: '14px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '12px'\r\n }}\r\n >\r\n {activeFilter === 'action' ? (\r\n <>\r\n <MessageOutlinedIcon style={{ width: '48px', height: '48px', opacity: 0.4 }} />\r\n <span style={{ fontWeight: 500 }}>ไม่มีรายการที่ต้องดำเนินการ</span>\r\n </>\r\n ) : activeFilter === 'all' ? (\r\n <>\r\n <BellIcon />\r\n <span style={{ fontWeight: 500, marginTop: '8px' }}>ไม่มีการแจ้งเตือนใหม่</span>\r\n </>\r\n ) : (\r\n <>\r\n <div style={{ fontSize: '40px', opacity: 0.6, marginBottom: '-8px' }}>📋</div>\r\n <span style={{ fontWeight: 500 }}>ไม่มีการแจ้งเตือนทั่วไป</span>\r\n </>\r\n )}\r\n </div>\r\n ) : (\r\n filteredNotifications.map((item) => (\r\n <div\r\n onClick={() => onNotificationClick?.(item)}\r\n key={item.id}\r\n style={{\r\n padding: '12px 16px',\r\n borderBottom: `1px solid ${isDark ? '#2d3748' : '#f3f4f6'}`,\r\n cursor: 'pointer',\r\n background: !item.isRead ? (isDark ? 'rgba(59,130,246,0.15)' : 'rgba(219,234,254,0.3)') : 'transparent',\r\n position: 'relative',\r\n display: 'flex',\r\n gap: '12px',\r\n alignItems: 'flex-start',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#1f2937' : '#f9fafb';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = !item.isRead\r\n ? (isDark ? 'rgba(59,130,246,0.15)' : 'rgba(219,234,254,0.3)')\r\n : 'transparent';\r\n }}\r\n >\r\n {!item.isRead && (\r\n <span\r\n style={{\r\n position: 'absolute',\r\n top: '12px',\r\n right: '12px',\r\n width: '8px',\r\n height: '8px',\r\n background: '#ef4444',\r\n borderRadius: '50%',\r\n }}\r\n />\r\n )}\r\n <div\r\n style={{\r\n width: '32px',\r\n height: '32px',\r\n borderRadius: '50%',\r\n background: getNotifBg(item.type),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '13px',\r\n flexShrink: 0,\r\n marginTop: '2px',\r\n }}\r\n >\r\n {getNotifIcon(item.type)}\r\n </div>\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n {/* Category badge */}\r\n {item.category === 'action' && (\r\n <span\r\n style={{\r\n display: 'inline-block',\r\n fontSize: '10px',\r\n fontWeight: 600,\r\n color: '#b45309',\r\n background: '#fef3c7',\r\n padding: '1px 6px',\r\n borderRadius: '4px',\r\n marginBottom: '4px',\r\n }}\r\n >\r\n ต้องดำเนินการ\r\n </span>\r\n )}\r\n <p\r\n style={{\r\n fontSize: '13px',\r\n fontWeight: !item.isRead ? 600 : 500,\r\n color: isDark ? '#ffffff' : '#111',\r\n margin: '0 0 2px',\r\n }}\r\n >\r\n {item.title}\r\n </p>\r\n <p\r\n style={{\r\n fontSize: '12px',\r\n color: isDark ? '#9ca3af' : '#6b7280',\r\n margin: '0 0 4px',\r\n lineHeight: '18px',\r\n }}\r\n >\r\n {item.description}\r\n </p>\r\n <p\r\n style={{\r\n fontSize: '10px',\r\n color: isDark ? '#6b7280' : '#9ca3af',\r\n margin: 0,\r\n fontWeight: 500,\r\n }}\r\n >\r\n {item.date}\r\n </p>\r\n </div>\r\n </div>\r\n ))\r\n )}\r\n </div>\r\n\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Hamburger Button */}\r\n {onToggleSidebar && (\r\n <button\r\n onClick={onToggleSidebar}\r\n style={{\r\n padding: '10px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#ffffff',\r\n transition: 'background-color 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.15)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n >\r\n <HamburgerIcon />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useEffect } from 'react';\r\nimport SidebarMenu from '../sidebar/SidebarMenu';\r\nimport { useDarkMode } from '../utils/useDarkMode';\r\nimport type { User, MenuItem } from '../sidebar/types';\r\n\r\ninterface UserSidebarProps {\r\n user: User | null;\r\n roleLabel: string;\r\n menuItems: MenuItem[];\r\n onNavigate: (path: string) => void;\r\n onLogout: () => void;\r\n isOpen: boolean;\r\n onClose: () => void;\r\n roleColor?: string;\r\n /** Callback เมื่อกดโปรไฟล์ผู้ใช้ */\r\n onProfile?: () => void;\r\n}\r\n\r\nfunction LogoutIcon() {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\r\n <polyline points=\"16 17 21 12 16 7\" />\r\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction ProfileIcon() {\r\n return (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport default function UserSidebar({\r\n user,\r\n roleLabel,\r\n menuItems,\r\n onNavigate,\r\n onLogout,\r\n isOpen,\r\n onClose,\r\n roleColor = 'var(--color-alias-semantic-warning, orange)',\r\n onProfile,\r\n}: UserSidebarProps) {\r\n const isDark = useDarkMode();\r\n\r\n // Prevent body scroll when open\r\n useEffect(() => {\r\n if (isOpen) {\r\n document.body.style.overflow = 'hidden';\r\n } else {\r\n document.body.style.overflow = '';\r\n }\r\n return () => {\r\n document.body.style.overflow = '';\r\n };\r\n }, [isOpen]);\r\n\r\n const getFullName = () => {\r\n if (!user) return 'ผู้ใช้';\r\n if (user.firstName && user.lastName) return `${user.firstName} ${user.lastName}`;\r\n return user.firstName || user.lastName || 'ผู้ใช้';\r\n };\r\n\r\n const getInitial = () => {\r\n if (!user) return '?';\r\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\r\n };\r\n\r\n const handleMenuClick = (path: string) => {\r\n onNavigate(path);\r\n onClose();\r\n };\r\n\r\n const handleLogout = () => {\r\n onClose();\r\n onLogout();\r\n };\r\n\r\n return (\r\n <>\r\n {/* Overlay */}\r\n {isOpen && (\r\n <div\r\n onClick={onClose}\r\n style={{\r\n position: 'fixed',\r\n inset: 0,\r\n background: 'rgba(0,0,0,0.5)',\r\n zIndex: 45,\r\n transition: 'opacity 0.3s ease',\r\n }}\r\n />\r\n )}\r\n\r\n {/* Sidebar Panel */}\r\n <aside\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n width: '80vw',\r\n maxWidth: '320px',\r\n background: isDark ? '#1e293b' : '#fff',\r\n boxShadow: isDark ? '-4px 0 24px rgba(0,0,0,0.4)' : '-4px 0 24px rgba(0,0,0,0.12)',\r\n zIndex: 50,\r\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\r\n transition: 'transform 0.3s ease',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: isDark ? '#ffffff' : undefined,\r\n }}\r\n >\r\n {/* User Profile */}\r\n {user && (\r\n <div\r\n style={{\r\n padding: '20px',\r\n borderBottom: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '8px',\r\n }}\r\n >\r\n {user.pictureUrl ? (\r\n <img\r\n src={user.pictureUrl}\r\n alt={getFullName()}\r\n style={{\r\n width: '56px',\r\n height: '56px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\r\n }}\r\n />\r\n ) : (\r\n <div\r\n style={{\r\n width: '56px',\r\n height: '56px',\r\n borderRadius: '50%',\r\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#fff',\r\n fontWeight: 700,\r\n fontSize: '20px',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\r\n }}\r\n >\r\n {getInitial()}\r\n </div>\r\n )}\r\n <div style={{ flex: 1, minWidth: 0 }}>\r\n <p\r\n style={{\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n color: isDark ? '#ffffff' : 'var(--color-alias-text-colors-primary, #060d26)',\r\n margin: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n }}\r\n >\r\n {getFullName()}\r\n </p>\r\n <p\r\n style={{\r\n fontSize: '13px',\r\n color: isDark ? '#e2e8f0' : 'var(--color-alias-text-colors-tertiary, #475272)',\r\n margin: '2px 0 0',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '6px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n width: '8px',\r\n height: '8px',\r\n borderRadius: '50%',\r\n background: roleColor,\r\n display: 'inline-block',\r\n }}\r\n />\r\n {roleLabel}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Menu Items — with profile prepended when onProfile is provided */}\r\n <SidebarMenu\r\n menuItems={\r\n onProfile\r\n ? [{ id: '__profile__', title: 'โปรไฟล์', icon: <ProfileIcon />, path: '__profile__' }, ...menuItems]\r\n : menuItems\r\n }\r\n onItemClick={(path) => {\r\n if (path === '__profile__' && onProfile) {\r\n onProfile();\r\n onClose();\r\n } else {\r\n handleMenuClick(path);\r\n }\r\n }}\r\n />\r\n\r\n {/* Logout Button */}\r\n <div\r\n style={{\r\n padding: '20px',\r\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\r\n }}\r\n >\r\n <button\r\n onClick={handleLogout}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = isDark ? '#3b1c1c' : '#fef2f2';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '16px',\r\n padding: '14px 16px',\r\n borderRadius: '8px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: 'var(--color-alias-semantic-critical, #f21515)',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.15s ease',\r\n fontSize: '15px',\r\n fontWeight: 500,\r\n }}\r\n >\r\n <LogoutIcon />\r\n <span>ออกจากระบบ</span>\r\n </button>\r\n </div>\r\n </aside>\r\n </>\r\n );\r\n}\r\n","'use client';\n\nimport { useDarkMode } from '../utils/useDarkMode';\n\nexport interface BottomBarProps {\n /** Content inside the bottom bar (pagination, buttons, etc.) */\n children: React.ReactNode;\n /** Left offset to account for sidebar width (default: '280px') */\n sidebarWidth?: string;\n /** Height of the bottom bar (default: '73px') */\n height?: string;\n /** Additional CSS class */\n className?: string;\n /** Custom inline styles */\n style?: React.CSSProperties;\n}\n\nexport default function BottomBar({\n children,\n sidebarWidth = '280px',\n height = '73px',\n className,\n style,\n}: BottomBarProps) {\n const isDark = useDarkMode();\n\n return (\n <div\n className={className}\n style={{\n position: 'fixed',\n bottom: 0,\n left: sidebarWidth,\n right: 0,\n height,\n background: isDark ? '#111827' : '#ffffff',\n borderTop: `1px solid ${isDark ? '#374151' : 'var(--color-border-colors-neutral, #c8cedd)'}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '16px 24px',\n zIndex: 30,\n transition: 'left 0.3s ease',\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback } from 'react';\n\n// ---- Types ----\nexport type Theme = 'light' | 'dark';\nexport type FontSizeKey = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nexport interface FontSizeOption {\n key: FontSizeKey;\n label: string;\n scale: number;\n}\n\nexport const FONT_SIZE_OPTIONS: FontSizeOption[] = [\n { key: 'xsmall', label: 'เล็กมาก', scale: 0.8 },\n { key: 'small', label: 'เล็ก', scale: 0.9 },\n { key: 'medium', label: 'กลาง', scale: 1.0 },\n { key: 'large', label: 'ใหญ่', scale: 1.2 },\n { key: 'xlarge', label: 'ใหญ่มาก', scale: 1.4 },\n];\n\n// Base font sizes from gov-token-css design tokens (px)\nconst BASE_FONT_SIZES: Record<string, number> = {\n '--font-alias-mobile-body-fontsize': 16,\n '--font-alias-mobile-h1-fontsize': 28,\n '--font-alias-mobile-h2-fontsize': 24,\n '--font-alias-mobile-h3-fontsize': 20,\n '--font-alias-mobile-sub-fontsize': 14,\n '--font-alias-mobile-button-fontsize': 16,\n};\n\ninterface SettingsContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n fontSize: FontSizeKey;\n setFontSize: (size: FontSizeKey) => void;\n fontSizeOption: FontSizeOption;\n}\n\nconst SettingsContext = createContext<SettingsContextType | undefined>(undefined);\n\n// ---- Provider ----\nexport function SettingsProvider({\n children,\n defaultTheme = 'light',\n defaultFontSize = 'medium',\n themeStorageKey = 'app-theme',\n fontSizeStorageKey = 'app-font-size',\n}: {\n children: React.ReactNode;\n defaultTheme?: Theme;\n defaultFontSize?: FontSizeKey;\n themeStorageKey?: string;\n fontSizeStorageKey?: string;\n}) {\n const [theme, setThemeState] = useState<Theme>(defaultTheme);\n const [fontSize, setFontSizeState] = useState<FontSizeKey>(defaultFontSize);\n\n // Load from localStorage on mount\n useEffect(() => {\n try {\n const savedTheme = localStorage.getItem(themeStorageKey) as Theme | null;\n if (savedTheme === 'light' || savedTheme === 'dark') {\n setThemeState(savedTheme);\n }\n const savedFontSize = localStorage.getItem(fontSizeStorageKey) as FontSizeKey | null;\n if (savedFontSize && FONT_SIZE_OPTIONS.some((o) => o.key === savedFontSize)) {\n setFontSizeState(savedFontSize);\n }\n } catch {\n // localStorage not available\n }\n }, [themeStorageKey, fontSizeStorageKey]);\n\n // Apply theme\n useEffect(() => {\n const root = document.documentElement;\n if (theme === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n try {\n localStorage.setItem(themeStorageKey, theme);\n } catch {}\n }, [theme, themeStorageKey]);\n\n // Apply font size\n useEffect(() => {\n const option = FONT_SIZE_OPTIONS.find((o) => o.key === fontSize) || FONT_SIZE_OPTIONS[2];\n const root = document.documentElement;\n\n // Adjust design token CSS variables\n Object.entries(BASE_FONT_SIZES).forEach(([varName, baseValue]) => {\n root.style.setProperty(varName, `${baseValue * option.scale}px`);\n });\n\n // Adjust root font-size for rem-based sizing\n root.style.fontSize = `${16 * option.scale}px`;\n\n // Set global scale variable\n root.style.setProperty('--global-font-scale', option.scale.toString());\n\n // Scale body zoom for px-based inline styles\n document.body.style.zoom = option.scale.toString();\n\n try {\n localStorage.setItem(fontSizeStorageKey, fontSize);\n } catch {}\n }, [fontSize, fontSizeStorageKey]);\n\n const setTheme = useCallback((t: Theme) => {\n setThemeState(t);\n }, []);\n\n const toggleTheme = useCallback(() => {\n setThemeState((prev) => (prev === 'light' ? 'dark' : 'light'));\n }, []);\n\n const setFontSize = useCallback((s: FontSizeKey) => {\n setFontSizeState(s);\n }, []);\n\n const fontSizeOption = FONT_SIZE_OPTIONS.find((o) => o.key === fontSize) || FONT_SIZE_OPTIONS[2];\n\n return (\n <SettingsContext.Provider\n value={{ theme, setTheme, toggleTheme, fontSize, setFontSize, fontSizeOption }}\n >\n {children}\n </SettingsContext.Provider>\n );\n}\n\n// ---- Hook ----\nexport function useSettings(): SettingsContextType {\n const context = useContext(SettingsContext);\n if (!context) {\n throw new Error('useSettings must be used within <SettingsProvider>');\n }\n return context;\n}\n","'use client';\n\nimport { useSettings } from './SettingsContext';\nimport type { Theme } from './SettingsContext';\n\nfunction SunIcon() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"5\" /><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" /><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" /><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" /><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" /><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" /><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" /><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" /><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </svg>\n );\n}\n\nfunction MoonIcon() {\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n );\n}\n\ninterface ThemeSettingsProps {\n onBack?: () => void;\n}\n\nexport default function ThemeSettings({ onBack }: ThemeSettingsProps) {\n const { theme, setTheme } = useSettings();\n const options: { key: Theme; label: string; icon: React.ReactNode; bg: string; text: string }[] = [\n { key: 'light', label: 'สว่าง', icon: <SunIcon />, bg: '#fff', text: '#111' },\n { key: 'dark', label: 'มืด', icon: <MoonIcon />, bg: '#1f2937', text: '#f9fafb' },\n ];\n\n return (\n <div>\n {onBack && (\n <button\n onClick={onBack}\n style={{\n display: 'flex', alignItems: 'center', gap: 8,\n padding: '12px 16px', width: '100%',\n border: 'none', background: 'transparent',\n cursor: 'pointer', fontSize: 15, fontWeight: 600,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><path d=\"M19 12H5M12 19l-7-7 7-7\"/></svg>\n โหมดสว่าง/มืด\n </button>\n )}\n <div style={{ padding: '12px 16px', display: 'flex', gap: 12 }}>\n {options.map((opt) => {\n const isSelected = theme === opt.key;\n return (\n <button\n key={opt.key}\n onClick={() => setTheme(opt.key)}\n style={{\n flex: 1,\n padding: '20px 12px',\n borderRadius: 12,\n border: isSelected\n ? '2px solid var(--color-alias-color-brand-primary, #1e7d55)'\n : '2px solid var(--color-border-colors-neutral, #c8cedd)',\n background: opt.bg,\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 8,\n transition: 'all 0.2s ease',\n }}\n >\n <span style={{ color: opt.text }}>{opt.icon}</span>\n <span style={{\n fontSize: 13,\n fontWeight: isSelected ? 700 : 500,\n color: opt.text,\n }}>\n {opt.label}\n </span>\n {isSelected && (\n <span style={{\n width: 20, height: 20, borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n }}>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"3\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n </span>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useSettings } from './SettingsContext';\nimport { FONT_SIZE_OPTIONS } from './SettingsContext';\nimport type { FontSizeKey } from './SettingsContext';\n\ninterface FontSizeSettingsProps {\n onBack?: () => void;\n}\n\nexport default function FontSizeSettings({ onBack }: FontSizeSettingsProps) {\n const { fontSize, setFontSize, fontSizeOption } = useSettings();\n\n return (\n <div>\n {onBack && (\n <button\n onClick={onBack}\n style={{\n display: 'flex', alignItems: 'center', gap: 8,\n padding: '12px 16px', width: '100%',\n border: 'none', background: 'transparent',\n cursor: 'pointer', fontSize: 15, fontWeight: 600,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><path d=\"M19 12H5M12 19l-7-7 7-7\"/></svg>\n ขนาดตัวอักษร\n </button>\n )}\n\n {/* Preview */}\n <div style={{\n margin: '8px 16px',\n padding: '16px',\n borderRadius: 10,\n background: 'var(--color-foundations-fuji-pallet-light, #ebedf5)',\n textAlign: 'center',\n }}>\n <p style={{\n fontSize: `${16 * fontSizeOption.scale}px`,\n fontWeight: 500,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n }}>\n ตัวอย่างข้อความ\n </p>\n <p style={{\n fontSize: `${12 * fontSizeOption.scale}px`,\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: '4px 0 0',\n }}>\n ×{fontSizeOption.scale}\n </p>\n </div>\n\n {/* Options */}\n <div style={{ padding: '8px 16px', display: 'flex', flexDirection: 'column', gap: 4 }}>\n {FONT_SIZE_OPTIONS.map((opt) => {\n const isSelected = fontSize === opt.key;\n return (\n <button\n key={opt.key}\n onClick={() => setFontSize(opt.key as FontSizeKey)}\n onMouseEnter={(e) => {\n if (!isSelected) e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n if (!isSelected) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 14px',\n borderRadius: 8,\n border: isSelected\n ? '2px solid var(--color-alias-color-brand-primary, #1e7d55)'\n : '1px solid transparent',\n background: isSelected\n ? 'color-mix(in srgb, var(--color-alias-color-brand-primary, #1e7d55) 8%, transparent)'\n : 'transparent',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n <span style={{\n fontSize: `${14 * opt.scale}px`,\n fontWeight: isSelected ? 600 : 400,\n color: isSelected\n ? 'var(--color-alias-color-brand-primary, #1e7d55)'\n : 'var(--color-alias-text-colors-primary, #060d26)',\n }}>\n {opt.label}\n </span>\n <span style={{\n fontSize: 12,\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n ×{opt.scale}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport ThemeSettings from './ThemeSettings';\nimport FontSizeSettings from './FontSizeSettings';\n\ntype SettingsView = 'menu' | 'theme' | 'fontSize';\n\ninterface SettingsPanelProps {\n className?: string;\n /** แสดงตัวเลือกโหมดสว่าง/มืด (default: true) — ซ่อนสำหรับเจ้าหน้าที่ */\n showTheme?: boolean;\n}\n\nfunction FontSizeIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"4 7 4 4 20 4 20 7\" /><line x1=\"9\" y1=\"20\" x2=\"15\" y2=\"20\" /><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\" />\n </svg>\n );\n}\n\nfunction PaletteIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><circle cx=\"12\" cy=\"8\" r=\"1.5\" fill=\"currentColor\" /><circle cx=\"8\" cy=\"14\" r=\"1.5\" fill=\"currentColor\" /><circle cx=\"16\" cy=\"14\" r=\"1.5\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport default function SettingsPanel({ className, showTheme = true }: SettingsPanelProps) {\n const [view, setView] = useState<SettingsView>('menu');\n\n if (view === 'theme' && showTheme) {\n return <ThemeSettings onBack={() => setView('menu')} />;\n }\n\n if (view === 'fontSize') {\n return <FontSizeSettings onBack={() => setView('menu')} />;\n }\n\n // Menu view\n const allMenuItems = [\n {\n id: 'fontSize',\n icon: <FontSizeIcon />,\n label: 'ขนาดตัวอักษร',\n description: 'เล็กมาก / เล็ก / กลาง / ใหญ่ / ใหญ่มาก',\n onClick: () => setView('fontSize'),\n },\n ...(showTheme ? [{\n id: 'theme',\n icon: <PaletteIcon />,\n label: 'โหมดสว่าง/มืด',\n description: 'เปลี่ยนธีมแอปพลิเคชัน',\n onClick: () => setView('theme'),\n }] : []),\n ];\n\n return (\n <div className={className}>\n <div style={{\n padding: '16px',\n borderBottom: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n }}>\n <h3 style={{\n fontSize: 16, fontWeight: 700, margin: 0,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}>\n ตั้งค่าระบบ\n </h3>\n </div>\n <div style={{ padding: '8px', display: 'flex', flexDirection: 'column', gap: 2 }}>\n {allMenuItems.map((item) => (\n <button\n key={item.id}\n onClick={item.onClick}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 14,\n padding: '14px 12px',\n borderRadius: 10,\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n width: '100%',\n textAlign: 'left',\n transition: 'background-color 0.15s ease',\n }}\n >\n <span style={{\n width: 40, height: 40, borderRadius: 10,\n background: 'var(--color-foundations-fuji-pallet-light, #ebedf5)',\n display: 'flex', alignItems: 'center', justifyContent: 'center',\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n flexShrink: 0,\n }}>\n {item.icon}\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <p style={{\n fontSize: 15, fontWeight: 600, margin: 0,\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n }}>\n {item.label}\n </p>\n <p style={{\n fontSize: 12, margin: '2px 0 0',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n {item.description}\n </p>\n </div>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\"><path d=\"M9 18l6-6-6-6\"/></svg>\n </button>\n ))}\n </div>\n </div>\n );\n}\n","export {\n // Navigation\n HomeIcon,\n SearchIcon,\n BellIcon,\n // งานบริการ\n FolderIcon,\n ClipboardIcon,\n FileTextIcon,\n CalendarIcon,\n // ผู้ใช้\n UserIcon,\n UsersIcon,\n // ตั้งค่า\n GearIcon,\n WrenchIcon,\n ShieldIcon,\n HelpCircleIcon,\n // รายงาน\n BarChartIcon,\n HistoryIcon,\n DatabaseIcon,\n // องค์กร\n BuildingIcon,\n MapPinIcon,\n // ติดต่อ\n PhoneIcon,\n MailIcon,\n // สถานะ\n CheckCircleIcon,\n AlertTriangleIcon,\n XCircleIcon,\n PlusCircleIcon,\n LogOutIcon,\n // ไฟล์\n DownloadIcon,\n UploadIcon,\n PrinterIcon,\n // Misc\n StarIcon,\n HeartIcon,\n EyeIcon,\n EditIcon,\n TrashIcon,\n} from './GovIcons';\n\nexport type { IconProps } from './GovIcons';\n\n// ─── Icons namespace — import { Icons } from 'gov-layout' ───\nimport {\n HomeIcon, SearchIcon, BellIcon,\n FolderIcon, ClipboardIcon, FileTextIcon, CalendarIcon,\n UserIcon, UsersIcon,\n GearIcon, WrenchIcon, ShieldIcon, HelpCircleIcon,\n BarChartIcon, HistoryIcon, DatabaseIcon,\n BuildingIcon, MapPinIcon,\n PhoneIcon, MailIcon,\n CheckCircleIcon, AlertTriangleIcon, XCircleIcon, PlusCircleIcon, LogOutIcon,\n DownloadIcon, UploadIcon, PrinterIcon,\n StarIcon, HeartIcon, EyeIcon, EditIcon, TrashIcon,\n} from './GovIcons';\n\nexport const Icons = {\n Home: HomeIcon,\n Search: SearchIcon,\n Bell: BellIcon,\n Folder: FolderIcon,\n Clipboard: ClipboardIcon,\n FileText: FileTextIcon,\n Calendar: CalendarIcon,\n User: UserIcon,\n Users: UsersIcon,\n Gear: GearIcon,\n Wrench: WrenchIcon,\n Shield: ShieldIcon,\n HelpCircle: HelpCircleIcon,\n BarChart: BarChartIcon,\n History: HistoryIcon,\n Database: DatabaseIcon,\n Building: BuildingIcon,\n MapPin: MapPinIcon,\n Phone: PhoneIcon,\n Mail: MailIcon,\n CheckCircle: CheckCircleIcon,\n AlertTriangle: AlertTriangleIcon,\n XCircle: XCircleIcon,\n PlusCircle: PlusCircleIcon,\n LogOut: LogOutIcon,\n Download: DownloadIcon,\n Upload: UploadIcon,\n Printer: PrinterIcon,\n Star: StarIcon,\n Heart: HeartIcon,\n Eye: EyeIcon,\n Edit: EditIcon,\n Trash: TrashIcon,\n} as const;\n"]}