gov-layout 1.1.7 → 1.1.8
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.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -483,8 +483,8 @@ function GearIcon() {
|
|
|
483
483
|
] });
|
|
484
484
|
}
|
|
485
485
|
var DEFAULT_BOTTOM_MENU = [
|
|
486
|
-
{ id: "
|
|
487
|
-
{ id: "
|
|
486
|
+
{ id: "settings", title: "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E23\u0E30\u0E1A\u0E1A", icon: /* @__PURE__ */ jsxRuntime.jsx(GearIcon, {}), path: "/settings" },
|
|
487
|
+
{ id: "help", title: "\u0E0A\u0E48\u0E27\u0E22\u0E40\u0E2B\u0E25\u0E37\u0E2D", icon: /* @__PURE__ */ jsxRuntime.jsx(HelpCircleIcon, {}), path: "/help" }
|
|
488
488
|
];
|
|
489
489
|
function StaffSidebar({
|
|
490
490
|
orgLogo,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sidebar/SidebarHeader.tsx","../src/sidebar/SidebarMenu.tsx","../src/sidebar/SidebarUserProfile.tsx","../src/sidebar/StaffSidebar.tsx","../src/header/UserHeader.tsx","../src/header/UserSidebar.tsx","../src/settings/SettingsContext.tsx","../src/settings/ThemeSettings.tsx","../src/settings/FontSizeSettings.tsx","../src/settings/SettingsPanel.tsx"],"names":["jsx","jsxs","useState","Fragment","useRef","useEffect","LogoutIcon","createContext","useCallback","useContext"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\ninterface SidebarHeaderProps {\n orgLogo?: string;\n orgName: string;\n orgSubtitle?: string;\n collapsed?: boolean;\n}\n\nexport default function SidebarHeader({ orgLogo, orgName, orgSubtitle, collapsed }: SidebarHeaderProps) {\n if (collapsed) {\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '20px 8px',\n }}>\n {orgLogo ? (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}>\n {orgName.charAt(0)}\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '24px 20px',\n }}>\n {orgLogo && (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '48px',\n height: '48px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n )}\n <div style={{ minWidth: 0 }}>\n <p style={{\n fontWeight: 700,\n fontSize: '16px',\n lineHeight: '22px',\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgName}\n </p>\n {orgSubtitle && (\n <p style={{\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgSubtitle}\n </p>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport type { MenuItem } from './types';\n\ninterface SidebarMenuProps {\n menuItems: MenuItem[];\n onItemClick: (path: string) => void;\n currentPath?: string;\n collapsed?: boolean;\n}\n\nfunction ChevronDownIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n flexShrink: 0,\n }}\n >\n <path d=\"M5 7.5L10 12.5L15 7.5\" />\n </svg>\n );\n}\n\nfunction MenuItemComponent({\n item,\n onItemClick,\n currentPath,\n depth = 0,\n collapsed = false,\n}: {\n item: MenuItem;\n onItemClick: (path: string) => void;\n currentPath?: string;\n depth?: number;\n collapsed?: boolean;\n}) {\n const hasChildren = item.children && item.children.length > 0;\n const isActive = item.path ? currentPath === item.path : false;\n const isChildActive = hasChildren\n ? item.children!.some((child) => child.path === currentPath)\n : false;\n\n // Auto-expand if child is active, but allow user to override\n const [userToggled, setUserToggled] = useState(false);\n const [isOpen, setIsOpen] = useState(isChildActive);\n const expanded = userToggled ? isOpen : (isOpen || isChildActive);\n\n const handleClick = () => {\n if (hasChildren) {\n setUserToggled(true);\n setIsOpen(!expanded);\n } else if (item.path) {\n onItemClick(item.path);\n }\n };\n\n const activeColor = 'var(--color-alias-color-brand-primary, #1e7d55)';\n const hoverBg = 'var(--color-foundations-fuji-pallet-light, #ebedf5)';\n\n // Collapsed mode: icon only\n if (collapsed && depth === 0) {\n return (\n <li>\n <button\n onClick={handleClick}\n title={item.title}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '12px 0',\n borderRadius: '8px',\n border: 'none',\n background: isActive || isChildActive\n ? `color-mix(in srgb, ${activeColor} 10%, transparent)`\n : 'transparent',\n color: isActive || isChildActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}>\n {item.icon}\n </span>\n )}\n </button>\n {item.dividerAfter && (\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 4px',\n }} />\n )}\n </li>\n );\n }\n\n return (\n <>\n <li>\n <button\n onClick={handleClick}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: depth > 0 ? '10px 16px 10px 52px' : '12px 16px',\n borderRadius: '8px',\n border: 'none',\n background: isActive ? `color-mix(in srgb, ${activeColor} 10%, transparent)` : 'transparent',\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-primary, #060d26)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n textAlign: 'left',\n fontSize: '15px',\n fontWeight: isActive ? 600 : 400,\n lineHeight: '22px',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n {item.icon}\n </span>\n )}\n <span style={{ flex: 1 }}>{item.title}</span>\n {hasChildren && <ChevronDownIcon isOpen={expanded} />}\n </button>\n </li>\n {hasChildren && expanded && (\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {item.children!.map((child) => (\n <MenuItemComponent\n key={child.id}\n item={child}\n onItemClick={onItemClick}\n currentPath={currentPath}\n depth={depth + 1}\n />\n ))}\n </ul>\n )}\n {item.dividerAfter && (\n <li>\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 0',\n }} />\n </li>\n )}\n </>\n );\n}\n\nexport default function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }: SidebarMenuProps) {\n return (\n <nav style={{\n flex: collapsed ? undefined : 1,\n padding: collapsed ? '8px 8px' : '8px 12px',\n overflowY: 'auto',\n }}>\n <ul style={{\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n }}>\n {menuItems.map((item) => (\n <MenuItemComponent\n key={item.id}\n item={item}\n onItemClick={onItemClick}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n ))}\n </ul>\n </nav>\n );\n}\n","'use client';\n\nimport type { User } from './types';\n\ninterface SidebarUserProfileProps {\n user: User | null;\n roleLabel: string;\n onLogout: () => void;\n collapsed?: boolean;\n}\n\nfunction LogoutIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\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\nexport default function SidebarUserProfile({\n user,\n roleLabel,\n onLogout,\n collapsed,\n}: SidebarUserProfileProps) {\n if (!user) return null;\n\n const getFullName = () => {\n if (user.firstName && user.lastName) {\n return `${user.firstName} ${user.lastName}`;\n }\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n // Collapsed: avatar + logout icon only\n if (collapsed) {\n return (\n <div style={{\n padding: '12px 8px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}\n >\n {getInitial()}\n </div>\n )}\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n }\n\n // Expanded\n return (\n <div\n style={{\n padding: '16px 20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n ) : (\n <div\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '16px',\n flexShrink: 0,\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p style={{\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {getFullName()}\n </p>\n <p style={{\n fontSize: '12px',\n lineHeight: '16px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n }}>\n {roleLabel}\n </p>\n </div>\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n flexShrink: 0,\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport SidebarHeader from './SidebarHeader';\nimport SidebarMenu from './SidebarMenu';\nimport SidebarUserProfile from './SidebarUserProfile';\nimport type { StaffSidebarProps, MenuItem } from './types';\n\nfunction ToggleIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(0deg)' : 'rotate(180deg)',\n }}\n >\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n );\n}\n\nfunction HelpCircleIcon() {\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\" />\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\nfunction GearIcon() {\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=\"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\n// Default bottom menu — ช่วยเหลือ + ตั้งค่าระบบ\nconst DEFAULT_BOTTOM_MENU: MenuItem[] = [\n { id: 'help', title: 'ช่วยเหลือ', icon: <HelpCircleIcon />, path: '/help' },\n { id: 'settings', title: 'ตั้งค่าระบบ', icon: <GearIcon />, path: '/settings' },\n];\n\nexport default function StaffSidebar({\n orgLogo,\n orgName,\n orgSubtitle,\n menuItems,\n bottomMenuItems,\n user,\n roleLabel,\n onNavigate,\n onLogout,\n currentPath,\n width = '280px',\n className,\n collapsible = false,\n isOpen: controlledIsOpen,\n onToggle,\n}: StaffSidebarProps) {\n const [internalOpen, setInternalOpen] = useState(true);\n const sidebarOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalOpen;\n const collapsed = collapsible && !sidebarOpen;\n const collapsedWidth = '64px';\n const currentWidth = collapsed ? collapsedWidth : width;\n\n // ใช้ default ถ้าไม่ได้ส่ง bottomMenuItems มา\n const resolvedBottomMenu = bottomMenuItems !== undefined ? bottomMenuItems : DEFAULT_BOTTOM_MENU;\n\n const handleToggle = () => {\n if (onToggle) {\n onToggle();\n } else {\n setInternalOpen(!internalOpen);\n }\n };\n\n return (\n <>\n <aside\n className={className}\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100vh',\n width: currentWidth,\n background: '#fff',\n borderRight: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n zIndex: 40,\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n }}\n >\n {/* Organization Header */}\n <SidebarHeader\n orgLogo={orgLogo}\n orgName={orgName}\n orgSubtitle={orgSubtitle}\n collapsed={collapsed}\n />\n\n {/* Main Menu */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n\n {/* Bottom Menu (ช่วยเหลือ + ตั้งค่าระบบ) */}\n {resolvedBottomMenu && resolvedBottomMenu.length > 0 && (\n <SidebarMenu\n menuItems={resolvedBottomMenu}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n )}\n\n {/* User Profile */}\n <SidebarUserProfile\n user={user}\n roleLabel={roleLabel}\n onLogout={onLogout}\n collapsed={collapsed}\n />\n </aside>\n\n {/* Toggle Button — top edge */}\n {collapsible && (\n <button\n onClick={handleToggle}\n title={sidebarOpen ? 'ย่อ Sidebar' : 'ขยาย Sidebar'}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#fff';\n }}\n style={{\n position: 'fixed',\n top: '10%',\n left: currentWidth,\n zIndex: 41,\n width: '24px',\n height: '40px',\n borderRadius: '0 6px 6px 0',\n border: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n borderLeft: 'none',\n background: '#fff',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '2px 0 8px rgba(0,0,0,0.06)',\n transition: 'left 0.3s ease',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}\n >\n <ToggleIcon isOpen={sidebarOpen} />\n </button>\n )}\n </>\n );\n}\n","'use client';\n\nimport { useState, useRef, useEffect } from 'react';\n\nexport interface NotificationItem {\n id: string | number;\n title: string;\n description: string;\n date: string;\n type: 'info' | 'success' | 'warning' | 'error' | 'reminder';\n isRead: boolean;\n}\n\ninterface UserHeaderProps {\n user?: {\n firstName?: string;\n lastName?: string;\n pictureUrl?: string;\n };\n notifications?: NotificationItem[];\n onToggleSidebar?: () => void;\n /** Custom bell icon */\n notificationBell?: React.ReactNode;\n onMarkAllRead?: () => void;\n onViewAll?: () => void;\n className?: string;\n}\n\nfunction BellIcon() {\n return (\n <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction HamburgerIcon() {\n return (\n <svg width=\"24\" height=\"18\" viewBox=\"0 0 27 18\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction getNotifBg(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '#dcfce7',\n warning: '#fef9c3',\n error: '#fee2e2',\n reminder: '#f3e8ff',\n info: '#dbeafe',\n };\n return map[type] || map.info;\n}\n\nfunction getNotifIcon(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '✓',\n warning: '!',\n error: '✕',\n reminder: '⏰',\n info: 'i',\n };\n return map[type] || map.info;\n}\n\nexport default function UserHeader({\n user,\n notifications = [],\n onToggleSidebar,\n notificationBell,\n onMarkAllRead,\n onViewAll,\n className,\n}: UserHeaderProps) {\n const displayName =\n `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || 'ผู้ใช้';\n const firstChar = user?.firstName?.charAt(0) || 'ผ';\n const [isNotifOpen, setIsNotifOpen] = useState(false);\n const notifRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (notifRef.current && !notifRef.current.contains(e.target as Node)) {\n setIsNotifOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const unreadCount = notifications.filter((n) => !n.isRead).length;\n\n return (\n <header\n className={className}\n style={{\n background: '#fff',\n boxShadow: '0 1px 3px rgba(0,0,0,0.08)',\n position: 'sticky',\n top: 0,\n zIndex: 10,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '14px 20px',\n }}\n >\n {/* Avatar & Name */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user?.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={displayName}\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n objectFit: 'cover',\n border: '2px solid var(--color-alias-color-brand-surface, #faf9e5)',\n }}\n />\n ) : (\n <div\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}\n >\n <span\n style={{ color: '#fff', fontSize: '18px', fontWeight: 600 }}\n >\n {firstChar}\n </span>\n </div>\n )}\n <div>\n <p\n style={{\n fontSize: '14px',\n fontWeight: 600,\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n }}\n >\n สวัสดี,{' '}\n <span\n style={{\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n }}\n >\n {displayName}\n </span>\n </p>\n </div>\n </div>\n\n {/* Right Side */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n {/* Notification Bell */}\n <div style={{ position: 'relative' }} ref={notifRef}>\n {notificationBell || (\n <button\n onClick={() => setIsNotifOpen(!isNotifOpen)}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <BellIcon />\n {unreadCount > 0 && (\n <span\n style={{\n position: 'absolute',\n top: '2px',\n right: '2px',\n minWidth: '16px',\n height: '16px',\n background: 'var(--color-alias-semantic-critical, #f21515)',\n borderRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: unreadCount > 99 ? '7px' : '9px',\n fontWeight: 700,\n color: '#fff',\n padding: '0 3px',\n lineHeight: 1,\n }}\n >\n {unreadCount > 99 ? '99+' : unreadCount}\n </span>\n )}\n </button>\n )}\n\n {/* Notification Dropdown */}\n {isNotifOpen && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n marginTop: '8px',\n width: '360px',\n background: '#fff',\n borderRadius: '12px',\n boxShadow: '0 10px 40px rgba(0,0,0,0.12)',\n zIndex: 50,\n overflow: 'hidden',\n border: '1px solid #e5e7eb',\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px',\n borderBottom: '1px solid #f3f4f6',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n background: '#fafafa',\n }}\n >\n <span style={{ fontWeight: 600, fontSize: '14px', color: '#111' }}>\n การแจ้งเตือน\n </span>\n {onMarkAllRead && (\n <button\n onClick={onMarkAllRead}\n style={{\n fontSize: '12px',\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n }}\n >\n อ่านทั้งหมด\n </button>\n )}\n </div>\n {/* Items */}\n <div style={{ maxHeight: '60vh', overflowY: 'auto' }}>\n {notifications.length === 0 ? (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: '#9ca3af',\n fontSize: '14px',\n }}\n >\n 🔔 ไม่มีการแจ้งเตือนใหม่\n </div>\n ) : (\n notifications.map((item) => (\n <div\n key={item.id}\n style={{\n padding: '12px 16px',\n borderBottom: '1px solid #f9fafb',\n cursor: 'pointer',\n background: !item.isRead ? 'rgba(219,234,254,0.3)' : 'transparent',\n position: 'relative',\n display: 'flex',\n gap: '12px',\n alignItems: 'flex-start',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = !item.isRead\n ? 'rgba(219,234,254,0.3)'\n : 'transparent';\n }}\n >\n {!item.isRead && (\n <span\n style={{\n position: 'absolute',\n top: '12px',\n right: '12px',\n width: '8px',\n height: '8px',\n background: '#ef4444',\n borderRadius: '50%',\n }}\n />\n )}\n <div\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n background: getNotifBg(item.type),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '13px',\n flexShrink: 0,\n marginTop: '2px',\n }}\n >\n {getNotifIcon(item.type)}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontSize: '13px',\n fontWeight: !item.isRead ? 600 : 500,\n color: '#111',\n margin: '0 0 2px',\n }}\n >\n {item.title}\n </p>\n <p\n style={{\n fontSize: '12px',\n color: '#6b7280',\n margin: '0 0 4px',\n lineHeight: '18px',\n }}\n >\n {item.description}\n </p>\n <p\n style={{\n fontSize: '10px',\n color: '#9ca3af',\n margin: 0,\n fontWeight: 500,\n }}\n >\n {item.date}\n </p>\n </div>\n </div>\n ))\n )}\n </div>\n {/* Footer */}\n {onViewAll && (\n <div\n style={{\n padding: '10px',\n borderTop: '1px solid #f3f4f6',\n textAlign: 'center',\n background: '#fafafa',\n }}\n >\n <button\n onClick={onViewAll}\n style={{\n fontSize: '13px',\n color: '#6b7280',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n width: '100%',\n padding: '4px',\n }}\n >\n ดูทั้งหมด\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Hamburger Button */}\n {onToggleSidebar && (\n <button\n onClick={onToggleSidebar}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <HamburgerIcon />\n </button>\n )}\n </div>\n </div>\n </header>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport SidebarMenu from '../sidebar/SidebarMenu';\nimport type { User, MenuItem } from '../sidebar/types';\n\ninterface UserSidebarProps {\n user: User | null;\n roleLabel: string;\n menuItems: MenuItem[];\n onNavigate: (path: string) => void;\n onLogout: () => void;\n isOpen: boolean;\n onClose: () => void;\n roleColor?: string;\n}\n\nfunction LogoutIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\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\nexport default function UserSidebar({\n user,\n roleLabel,\n menuItems,\n onNavigate,\n onLogout,\n isOpen,\n onClose,\n roleColor = 'var(--color-alias-semantic-warning, orange)',\n}: UserSidebarProps) {\n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n const getFullName = () => {\n if (!user) return 'ผู้ใช้';\n if (user.firstName && user.lastName) return `${user.firstName} ${user.lastName}`;\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n if (!user) return '?';\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n const handleMenuClick = (path: string) => {\n onNavigate(path);\n onClose();\n };\n\n const handleLogout = () => {\n onClose();\n onLogout();\n };\n\n return (\n <>\n {/* Overlay */}\n {isOpen && (\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n background: 'rgba(0,0,0,0.5)',\n zIndex: 40,\n transition: 'opacity 0.3s ease',\n }}\n />\n )}\n\n {/* Sidebar Panel */}\n <aside\n style={{\n position: 'fixed',\n top: 0,\n right: 0,\n height: '100%',\n width: '80vw',\n maxWidth: '320px',\n background: '#fff',\n boxShadow: '-4px 0 24px rgba(0,0,0,0.12)',\n zIndex: 50,\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n transition: 'transform 0.3s ease',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* User Profile */}\n {user && (\n <div\n style={{\n padding: '20px',\n borderBottom: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n objectFit: 'cover',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n />\n ) : (\n <div\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '20px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontWeight: 700,\n fontSize: '16px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {getFullName()}\n </p>\n <p\n style={{\n fontSize: '13px',\n color: 'var(--color-alias-text-colors-tertiary, #6b7280)',\n margin: '2px 0 0',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n >\n <span\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n background: roleColor,\n display: 'inline-block',\n }}\n />\n {roleLabel}\n </p>\n </div>\n </div>\n </div>\n )}\n\n {/* Menu Items */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={handleMenuClick}\n />\n\n {/* Logout Button */}\n <div\n style={{\n padding: '20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <button\n onClick={handleLogout}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#fef2f2';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n padding: '14px 16px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #ef4444)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n fontSize: '15px',\n fontWeight: 500,\n }}\n >\n <LogoutIcon />\n <span>ออกจากระบบ</span>\n </button>\n </div>\n </aside>\n </>\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, #f5f6fa)',\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, #e5e7eb)',\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/sidebar/SidebarHeader.tsx","../src/sidebar/SidebarMenu.tsx","../src/sidebar/SidebarUserProfile.tsx","../src/sidebar/StaffSidebar.tsx","../src/header/UserHeader.tsx","../src/header/UserSidebar.tsx","../src/settings/SettingsContext.tsx","../src/settings/ThemeSettings.tsx","../src/settings/FontSizeSettings.tsx","../src/settings/SettingsPanel.tsx"],"names":["jsx","jsxs","useState","Fragment","useRef","useEffect","LogoutIcon","createContext","useCallback","useContext"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\ninterface SidebarHeaderProps {\n orgLogo?: string;\n orgName: string;\n orgSubtitle?: string;\n collapsed?: boolean;\n}\n\nexport default function SidebarHeader({ orgLogo, orgName, orgSubtitle, collapsed }: SidebarHeaderProps) {\n if (collapsed) {\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '20px 8px',\n }}>\n {orgLogo ? (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}>\n {orgName.charAt(0)}\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '24px 20px',\n }}>\n {orgLogo && (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '48px',\n height: '48px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n )}\n <div style={{ minWidth: 0 }}>\n <p style={{\n fontWeight: 700,\n fontSize: '16px',\n lineHeight: '22px',\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgName}\n </p>\n {orgSubtitle && (\n <p style={{\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgSubtitle}\n </p>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport type { MenuItem } from './types';\n\ninterface SidebarMenuProps {\n menuItems: MenuItem[];\n onItemClick: (path: string) => void;\n currentPath?: string;\n collapsed?: boolean;\n}\n\nfunction ChevronDownIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n flexShrink: 0,\n }}\n >\n <path d=\"M5 7.5L10 12.5L15 7.5\" />\n </svg>\n );\n}\n\nfunction MenuItemComponent({\n item,\n onItemClick,\n currentPath,\n depth = 0,\n collapsed = false,\n}: {\n item: MenuItem;\n onItemClick: (path: string) => void;\n currentPath?: string;\n depth?: number;\n collapsed?: boolean;\n}) {\n const hasChildren = item.children && item.children.length > 0;\n const isActive = item.path ? currentPath === item.path : false;\n const isChildActive = hasChildren\n ? item.children!.some((child) => child.path === currentPath)\n : false;\n\n // Auto-expand if child is active, but allow user to override\n const [userToggled, setUserToggled] = useState(false);\n const [isOpen, setIsOpen] = useState(isChildActive);\n const expanded = userToggled ? isOpen : (isOpen || isChildActive);\n\n const handleClick = () => {\n if (hasChildren) {\n setUserToggled(true);\n setIsOpen(!expanded);\n } else if (item.path) {\n onItemClick(item.path);\n }\n };\n\n const activeColor = 'var(--color-alias-color-brand-primary, #1e7d55)';\n const hoverBg = 'var(--color-foundations-fuji-pallet-light, #ebedf5)';\n\n // Collapsed mode: icon only\n if (collapsed && depth === 0) {\n return (\n <li>\n <button\n onClick={handleClick}\n title={item.title}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '12px 0',\n borderRadius: '8px',\n border: 'none',\n background: isActive || isChildActive\n ? `color-mix(in srgb, ${activeColor} 10%, transparent)`\n : 'transparent',\n color: isActive || isChildActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}>\n {item.icon}\n </span>\n )}\n </button>\n {item.dividerAfter && (\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 4px',\n }} />\n )}\n </li>\n );\n }\n\n return (\n <>\n <li>\n <button\n onClick={handleClick}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: depth > 0 ? '10px 16px 10px 52px' : '12px 16px',\n borderRadius: '8px',\n border: 'none',\n background: isActive ? `color-mix(in srgb, ${activeColor} 10%, transparent)` : 'transparent',\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-primary, #060d26)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n textAlign: 'left',\n fontSize: '15px',\n fontWeight: isActive ? 600 : 400,\n lineHeight: '22px',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n {item.icon}\n </span>\n )}\n <span style={{ flex: 1 }}>{item.title}</span>\n {hasChildren && <ChevronDownIcon isOpen={expanded} />}\n </button>\n </li>\n {hasChildren && expanded && (\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {item.children!.map((child) => (\n <MenuItemComponent\n key={child.id}\n item={child}\n onItemClick={onItemClick}\n currentPath={currentPath}\n depth={depth + 1}\n />\n ))}\n </ul>\n )}\n {item.dividerAfter && (\n <li>\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 0',\n }} />\n </li>\n )}\n </>\n );\n}\n\nexport default function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }: SidebarMenuProps) {\n return (\n <nav style={{\n flex: collapsed ? undefined : 1,\n padding: collapsed ? '8px 8px' : '8px 12px',\n overflowY: 'auto',\n }}>\n <ul style={{\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n }}>\n {menuItems.map((item) => (\n <MenuItemComponent\n key={item.id}\n item={item}\n onItemClick={onItemClick}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n ))}\n </ul>\n </nav>\n );\n}\n","'use client';\n\nimport type { User } from './types';\n\ninterface SidebarUserProfileProps {\n user: User | null;\n roleLabel: string;\n onLogout: () => void;\n collapsed?: boolean;\n}\n\nfunction LogoutIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\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\nexport default function SidebarUserProfile({\n user,\n roleLabel,\n onLogout,\n collapsed,\n}: SidebarUserProfileProps) {\n if (!user) return null;\n\n const getFullName = () => {\n if (user.firstName && user.lastName) {\n return `${user.firstName} ${user.lastName}`;\n }\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n // Collapsed: avatar + logout icon only\n if (collapsed) {\n return (\n <div style={{\n padding: '12px 8px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}\n >\n {getInitial()}\n </div>\n )}\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n }\n\n // Expanded\n return (\n <div\n style={{\n padding: '16px 20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n ) : (\n <div\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '16px',\n flexShrink: 0,\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p style={{\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {getFullName()}\n </p>\n <p style={{\n fontSize: '12px',\n lineHeight: '16px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n }}>\n {roleLabel}\n </p>\n </div>\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n flexShrink: 0,\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport SidebarHeader from './SidebarHeader';\nimport SidebarMenu from './SidebarMenu';\nimport SidebarUserProfile from './SidebarUserProfile';\nimport type { StaffSidebarProps, MenuItem } from './types';\n\nfunction ToggleIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(0deg)' : 'rotate(180deg)',\n }}\n >\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n );\n}\n\nfunction HelpCircleIcon() {\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\" />\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\nfunction GearIcon() {\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=\"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\n// Default bottom menu — ตั้งค่าระบบ + ช่วยเหลือ\nconst DEFAULT_BOTTOM_MENU: MenuItem[] = [\n { id: 'settings', title: 'ตั้งค่าระบบ', icon: <GearIcon />, path: '/settings' },\n { id: 'help', title: 'ช่วยเหลือ', icon: <HelpCircleIcon />, path: '/help' },\n];\n\nexport default function StaffSidebar({\n orgLogo,\n orgName,\n orgSubtitle,\n menuItems,\n bottomMenuItems,\n user,\n roleLabel,\n onNavigate,\n onLogout,\n currentPath,\n width = '280px',\n className,\n collapsible = false,\n isOpen: controlledIsOpen,\n onToggle,\n}: StaffSidebarProps) {\n const [internalOpen, setInternalOpen] = useState(true);\n const sidebarOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalOpen;\n const collapsed = collapsible && !sidebarOpen;\n const collapsedWidth = '64px';\n const currentWidth = collapsed ? collapsedWidth : width;\n\n // ใช้ default ถ้าไม่ได้ส่ง bottomMenuItems มา\n const resolvedBottomMenu = bottomMenuItems !== undefined ? bottomMenuItems : DEFAULT_BOTTOM_MENU;\n\n const handleToggle = () => {\n if (onToggle) {\n onToggle();\n } else {\n setInternalOpen(!internalOpen);\n }\n };\n\n return (\n <>\n <aside\n className={className}\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100vh',\n width: currentWidth,\n background: '#fff',\n borderRight: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n zIndex: 40,\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n }}\n >\n {/* Organization Header */}\n <SidebarHeader\n orgLogo={orgLogo}\n orgName={orgName}\n orgSubtitle={orgSubtitle}\n collapsed={collapsed}\n />\n\n {/* Main Menu */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n\n {/* Bottom Menu (ช่วยเหลือ + ตั้งค่าระบบ) */}\n {resolvedBottomMenu && resolvedBottomMenu.length > 0 && (\n <SidebarMenu\n menuItems={resolvedBottomMenu}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n )}\n\n {/* User Profile */}\n <SidebarUserProfile\n user={user}\n roleLabel={roleLabel}\n onLogout={onLogout}\n collapsed={collapsed}\n />\n </aside>\n\n {/* Toggle Button — top edge */}\n {collapsible && (\n <button\n onClick={handleToggle}\n title={sidebarOpen ? 'ย่อ Sidebar' : 'ขยาย Sidebar'}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#fff';\n }}\n style={{\n position: 'fixed',\n top: '10%',\n left: currentWidth,\n zIndex: 41,\n width: '24px',\n height: '40px',\n borderRadius: '0 6px 6px 0',\n border: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n borderLeft: 'none',\n background: '#fff',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '2px 0 8px rgba(0,0,0,0.06)',\n transition: 'left 0.3s ease',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}\n >\n <ToggleIcon isOpen={sidebarOpen} />\n </button>\n )}\n </>\n );\n}\n","'use client';\n\nimport { useState, useRef, useEffect } from 'react';\n\nexport interface NotificationItem {\n id: string | number;\n title: string;\n description: string;\n date: string;\n type: 'info' | 'success' | 'warning' | 'error' | 'reminder';\n isRead: boolean;\n}\n\ninterface UserHeaderProps {\n user?: {\n firstName?: string;\n lastName?: string;\n pictureUrl?: string;\n };\n notifications?: NotificationItem[];\n onToggleSidebar?: () => void;\n /** Custom bell icon */\n notificationBell?: React.ReactNode;\n onMarkAllRead?: () => void;\n onViewAll?: () => void;\n className?: string;\n}\n\nfunction BellIcon() {\n return (\n <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction HamburgerIcon() {\n return (\n <svg width=\"24\" height=\"18\" viewBox=\"0 0 27 18\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction getNotifBg(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '#dcfce7',\n warning: '#fef9c3',\n error: '#fee2e2',\n reminder: '#f3e8ff',\n info: '#dbeafe',\n };\n return map[type] || map.info;\n}\n\nfunction getNotifIcon(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '✓',\n warning: '!',\n error: '✕',\n reminder: '⏰',\n info: 'i',\n };\n return map[type] || map.info;\n}\n\nexport default function UserHeader({\n user,\n notifications = [],\n onToggleSidebar,\n notificationBell,\n onMarkAllRead,\n onViewAll,\n className,\n}: UserHeaderProps) {\n const displayName =\n `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || 'ผู้ใช้';\n const firstChar = user?.firstName?.charAt(0) || 'ผ';\n const [isNotifOpen, setIsNotifOpen] = useState(false);\n const notifRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (notifRef.current && !notifRef.current.contains(e.target as Node)) {\n setIsNotifOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const unreadCount = notifications.filter((n) => !n.isRead).length;\n\n return (\n <header\n className={className}\n style={{\n background: '#fff',\n boxShadow: '0 1px 3px rgba(0,0,0,0.08)',\n position: 'sticky',\n top: 0,\n zIndex: 10,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '14px 20px',\n }}\n >\n {/* Avatar & Name */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user?.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={displayName}\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n objectFit: 'cover',\n border: '2px solid var(--color-alias-color-brand-surface, #faf9e5)',\n }}\n />\n ) : (\n <div\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}\n >\n <span\n style={{ color: '#fff', fontSize: '18px', fontWeight: 600 }}\n >\n {firstChar}\n </span>\n </div>\n )}\n <div>\n <p\n style={{\n fontSize: '14px',\n fontWeight: 600,\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n }}\n >\n สวัสดี,{' '}\n <span\n style={{\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n }}\n >\n {displayName}\n </span>\n </p>\n </div>\n </div>\n\n {/* Right Side */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n {/* Notification Bell */}\n <div style={{ position: 'relative' }} ref={notifRef}>\n {notificationBell || (\n <button\n onClick={() => setIsNotifOpen(!isNotifOpen)}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <BellIcon />\n {unreadCount > 0 && (\n <span\n style={{\n position: 'absolute',\n top: '2px',\n right: '2px',\n minWidth: '16px',\n height: '16px',\n background: 'var(--color-alias-semantic-critical, #f21515)',\n borderRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: unreadCount > 99 ? '7px' : '9px',\n fontWeight: 700,\n color: '#fff',\n padding: '0 3px',\n lineHeight: 1,\n }}\n >\n {unreadCount > 99 ? '99+' : unreadCount}\n </span>\n )}\n </button>\n )}\n\n {/* Notification Dropdown */}\n {isNotifOpen && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n marginTop: '8px',\n width: '360px',\n background: '#fff',\n borderRadius: '12px',\n boxShadow: '0 10px 40px rgba(0,0,0,0.12)',\n zIndex: 50,\n overflow: 'hidden',\n border: '1px solid #e5e7eb',\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px',\n borderBottom: '1px solid #f3f4f6',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n background: '#fafafa',\n }}\n >\n <span style={{ fontWeight: 600, fontSize: '14px', color: '#111' }}>\n การแจ้งเตือน\n </span>\n {onMarkAllRead && (\n <button\n onClick={onMarkAllRead}\n style={{\n fontSize: '12px',\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n }}\n >\n อ่านทั้งหมด\n </button>\n )}\n </div>\n {/* Items */}\n <div style={{ maxHeight: '60vh', overflowY: 'auto' }}>\n {notifications.length === 0 ? (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: '#9ca3af',\n fontSize: '14px',\n }}\n >\n 🔔 ไม่มีการแจ้งเตือนใหม่\n </div>\n ) : (\n notifications.map((item) => (\n <div\n key={item.id}\n style={{\n padding: '12px 16px',\n borderBottom: '1px solid #f9fafb',\n cursor: 'pointer',\n background: !item.isRead ? 'rgba(219,234,254,0.3)' : 'transparent',\n position: 'relative',\n display: 'flex',\n gap: '12px',\n alignItems: 'flex-start',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = !item.isRead\n ? 'rgba(219,234,254,0.3)'\n : 'transparent';\n }}\n >\n {!item.isRead && (\n <span\n style={{\n position: 'absolute',\n top: '12px',\n right: '12px',\n width: '8px',\n height: '8px',\n background: '#ef4444',\n borderRadius: '50%',\n }}\n />\n )}\n <div\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n background: getNotifBg(item.type),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '13px',\n flexShrink: 0,\n marginTop: '2px',\n }}\n >\n {getNotifIcon(item.type)}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontSize: '13px',\n fontWeight: !item.isRead ? 600 : 500,\n color: '#111',\n margin: '0 0 2px',\n }}\n >\n {item.title}\n </p>\n <p\n style={{\n fontSize: '12px',\n color: '#6b7280',\n margin: '0 0 4px',\n lineHeight: '18px',\n }}\n >\n {item.description}\n </p>\n <p\n style={{\n fontSize: '10px',\n color: '#9ca3af',\n margin: 0,\n fontWeight: 500,\n }}\n >\n {item.date}\n </p>\n </div>\n </div>\n ))\n )}\n </div>\n {/* Footer */}\n {onViewAll && (\n <div\n style={{\n padding: '10px',\n borderTop: '1px solid #f3f4f6',\n textAlign: 'center',\n background: '#fafafa',\n }}\n >\n <button\n onClick={onViewAll}\n style={{\n fontSize: '13px',\n color: '#6b7280',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n width: '100%',\n padding: '4px',\n }}\n >\n ดูทั้งหมด\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Hamburger Button */}\n {onToggleSidebar && (\n <button\n onClick={onToggleSidebar}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <HamburgerIcon />\n </button>\n )}\n </div>\n </div>\n </header>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport SidebarMenu from '../sidebar/SidebarMenu';\nimport type { User, MenuItem } from '../sidebar/types';\n\ninterface UserSidebarProps {\n user: User | null;\n roleLabel: string;\n menuItems: MenuItem[];\n onNavigate: (path: string) => void;\n onLogout: () => void;\n isOpen: boolean;\n onClose: () => void;\n roleColor?: string;\n}\n\nfunction LogoutIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\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\nexport default function UserSidebar({\n user,\n roleLabel,\n menuItems,\n onNavigate,\n onLogout,\n isOpen,\n onClose,\n roleColor = 'var(--color-alias-semantic-warning, orange)',\n}: UserSidebarProps) {\n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n const getFullName = () => {\n if (!user) return 'ผู้ใช้';\n if (user.firstName && user.lastName) return `${user.firstName} ${user.lastName}`;\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n if (!user) return '?';\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n const handleMenuClick = (path: string) => {\n onNavigate(path);\n onClose();\n };\n\n const handleLogout = () => {\n onClose();\n onLogout();\n };\n\n return (\n <>\n {/* Overlay */}\n {isOpen && (\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n background: 'rgba(0,0,0,0.5)',\n zIndex: 40,\n transition: 'opacity 0.3s ease',\n }}\n />\n )}\n\n {/* Sidebar Panel */}\n <aside\n style={{\n position: 'fixed',\n top: 0,\n right: 0,\n height: '100%',\n width: '80vw',\n maxWidth: '320px',\n background: '#fff',\n boxShadow: '-4px 0 24px rgba(0,0,0,0.12)',\n zIndex: 50,\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n transition: 'transform 0.3s ease',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* User Profile */}\n {user && (\n <div\n style={{\n padding: '20px',\n borderBottom: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n objectFit: 'cover',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n />\n ) : (\n <div\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '20px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontWeight: 700,\n fontSize: '16px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {getFullName()}\n </p>\n <p\n style={{\n fontSize: '13px',\n color: 'var(--color-alias-text-colors-tertiary, #6b7280)',\n margin: '2px 0 0',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n >\n <span\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n background: roleColor,\n display: 'inline-block',\n }}\n />\n {roleLabel}\n </p>\n </div>\n </div>\n </div>\n )}\n\n {/* Menu Items */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={handleMenuClick}\n />\n\n {/* Logout Button */}\n <div\n style={{\n padding: '20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <button\n onClick={handleLogout}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#fef2f2';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n padding: '14px 16px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #ef4444)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n fontSize: '15px',\n fontWeight: 500,\n }}\n >\n <LogoutIcon />\n <span>ออกจากระบบ</span>\n </button>\n </div>\n </aside>\n </>\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, #f5f6fa)',\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, #e5e7eb)',\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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -481,8 +481,8 @@ function GearIcon() {
|
|
|
481
481
|
] });
|
|
482
482
|
}
|
|
483
483
|
var DEFAULT_BOTTOM_MENU = [
|
|
484
|
-
{ id: "
|
|
485
|
-
{ id: "
|
|
484
|
+
{ id: "settings", title: "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E23\u0E30\u0E1A\u0E1A", icon: /* @__PURE__ */ jsx(GearIcon, {}), path: "/settings" },
|
|
485
|
+
{ id: "help", title: "\u0E0A\u0E48\u0E27\u0E22\u0E40\u0E2B\u0E25\u0E37\u0E2D", icon: /* @__PURE__ */ jsx(HelpCircleIcon, {}), path: "/help" }
|
|
486
486
|
];
|
|
487
487
|
function StaffSidebar({
|
|
488
488
|
orgLogo,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sidebar/SidebarHeader.tsx","../src/sidebar/SidebarMenu.tsx","../src/sidebar/SidebarUserProfile.tsx","../src/sidebar/StaffSidebar.tsx","../src/header/UserHeader.tsx","../src/header/UserSidebar.tsx","../src/settings/SettingsContext.tsx","../src/settings/ThemeSettings.tsx","../src/settings/FontSizeSettings.tsx","../src/settings/SettingsPanel.tsx"],"names":["jsx","jsxs","useState","Fragment","LogoutIcon","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\ninterface SidebarHeaderProps {\n orgLogo?: string;\n orgName: string;\n orgSubtitle?: string;\n collapsed?: boolean;\n}\n\nexport default function SidebarHeader({ orgLogo, orgName, orgSubtitle, collapsed }: SidebarHeaderProps) {\n if (collapsed) {\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '20px 8px',\n }}>\n {orgLogo ? (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}>\n {orgName.charAt(0)}\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '24px 20px',\n }}>\n {orgLogo && (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '48px',\n height: '48px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n )}\n <div style={{ minWidth: 0 }}>\n <p style={{\n fontWeight: 700,\n fontSize: '16px',\n lineHeight: '22px',\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgName}\n </p>\n {orgSubtitle && (\n <p style={{\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgSubtitle}\n </p>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport type { MenuItem } from './types';\n\ninterface SidebarMenuProps {\n menuItems: MenuItem[];\n onItemClick: (path: string) => void;\n currentPath?: string;\n collapsed?: boolean;\n}\n\nfunction ChevronDownIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n flexShrink: 0,\n }}\n >\n <path d=\"M5 7.5L10 12.5L15 7.5\" />\n </svg>\n );\n}\n\nfunction MenuItemComponent({\n item,\n onItemClick,\n currentPath,\n depth = 0,\n collapsed = false,\n}: {\n item: MenuItem;\n onItemClick: (path: string) => void;\n currentPath?: string;\n depth?: number;\n collapsed?: boolean;\n}) {\n const hasChildren = item.children && item.children.length > 0;\n const isActive = item.path ? currentPath === item.path : false;\n const isChildActive = hasChildren\n ? item.children!.some((child) => child.path === currentPath)\n : false;\n\n // Auto-expand if child is active, but allow user to override\n const [userToggled, setUserToggled] = useState(false);\n const [isOpen, setIsOpen] = useState(isChildActive);\n const expanded = userToggled ? isOpen : (isOpen || isChildActive);\n\n const handleClick = () => {\n if (hasChildren) {\n setUserToggled(true);\n setIsOpen(!expanded);\n } else if (item.path) {\n onItemClick(item.path);\n }\n };\n\n const activeColor = 'var(--color-alias-color-brand-primary, #1e7d55)';\n const hoverBg = 'var(--color-foundations-fuji-pallet-light, #ebedf5)';\n\n // Collapsed mode: icon only\n if (collapsed && depth === 0) {\n return (\n <li>\n <button\n onClick={handleClick}\n title={item.title}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '12px 0',\n borderRadius: '8px',\n border: 'none',\n background: isActive || isChildActive\n ? `color-mix(in srgb, ${activeColor} 10%, transparent)`\n : 'transparent',\n color: isActive || isChildActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}>\n {item.icon}\n </span>\n )}\n </button>\n {item.dividerAfter && (\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 4px',\n }} />\n )}\n </li>\n );\n }\n\n return (\n <>\n <li>\n <button\n onClick={handleClick}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: depth > 0 ? '10px 16px 10px 52px' : '12px 16px',\n borderRadius: '8px',\n border: 'none',\n background: isActive ? `color-mix(in srgb, ${activeColor} 10%, transparent)` : 'transparent',\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-primary, #060d26)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n textAlign: 'left',\n fontSize: '15px',\n fontWeight: isActive ? 600 : 400,\n lineHeight: '22px',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n {item.icon}\n </span>\n )}\n <span style={{ flex: 1 }}>{item.title}</span>\n {hasChildren && <ChevronDownIcon isOpen={expanded} />}\n </button>\n </li>\n {hasChildren && expanded && (\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {item.children!.map((child) => (\n <MenuItemComponent\n key={child.id}\n item={child}\n onItemClick={onItemClick}\n currentPath={currentPath}\n depth={depth + 1}\n />\n ))}\n </ul>\n )}\n {item.dividerAfter && (\n <li>\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 0',\n }} />\n </li>\n )}\n </>\n );\n}\n\nexport default function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }: SidebarMenuProps) {\n return (\n <nav style={{\n flex: collapsed ? undefined : 1,\n padding: collapsed ? '8px 8px' : '8px 12px',\n overflowY: 'auto',\n }}>\n <ul style={{\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n }}>\n {menuItems.map((item) => (\n <MenuItemComponent\n key={item.id}\n item={item}\n onItemClick={onItemClick}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n ))}\n </ul>\n </nav>\n );\n}\n","'use client';\n\nimport type { User } from './types';\n\ninterface SidebarUserProfileProps {\n user: User | null;\n roleLabel: string;\n onLogout: () => void;\n collapsed?: boolean;\n}\n\nfunction LogoutIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\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\nexport default function SidebarUserProfile({\n user,\n roleLabel,\n onLogout,\n collapsed,\n}: SidebarUserProfileProps) {\n if (!user) return null;\n\n const getFullName = () => {\n if (user.firstName && user.lastName) {\n return `${user.firstName} ${user.lastName}`;\n }\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n // Collapsed: avatar + logout icon only\n if (collapsed) {\n return (\n <div style={{\n padding: '12px 8px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}\n >\n {getInitial()}\n </div>\n )}\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n }\n\n // Expanded\n return (\n <div\n style={{\n padding: '16px 20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n ) : (\n <div\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '16px',\n flexShrink: 0,\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p style={{\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {getFullName()}\n </p>\n <p style={{\n fontSize: '12px',\n lineHeight: '16px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n }}>\n {roleLabel}\n </p>\n </div>\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n flexShrink: 0,\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport SidebarHeader from './SidebarHeader';\nimport SidebarMenu from './SidebarMenu';\nimport SidebarUserProfile from './SidebarUserProfile';\nimport type { StaffSidebarProps, MenuItem } from './types';\n\nfunction ToggleIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(0deg)' : 'rotate(180deg)',\n }}\n >\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n );\n}\n\nfunction HelpCircleIcon() {\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\" />\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\nfunction GearIcon() {\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=\"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\n// Default bottom menu — ช่วยเหลือ + ตั้งค่าระบบ\nconst DEFAULT_BOTTOM_MENU: MenuItem[] = [\n { id: 'help', title: 'ช่วยเหลือ', icon: <HelpCircleIcon />, path: '/help' },\n { id: 'settings', title: 'ตั้งค่าระบบ', icon: <GearIcon />, path: '/settings' },\n];\n\nexport default function StaffSidebar({\n orgLogo,\n orgName,\n orgSubtitle,\n menuItems,\n bottomMenuItems,\n user,\n roleLabel,\n onNavigate,\n onLogout,\n currentPath,\n width = '280px',\n className,\n collapsible = false,\n isOpen: controlledIsOpen,\n onToggle,\n}: StaffSidebarProps) {\n const [internalOpen, setInternalOpen] = useState(true);\n const sidebarOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalOpen;\n const collapsed = collapsible && !sidebarOpen;\n const collapsedWidth = '64px';\n const currentWidth = collapsed ? collapsedWidth : width;\n\n // ใช้ default ถ้าไม่ได้ส่ง bottomMenuItems มา\n const resolvedBottomMenu = bottomMenuItems !== undefined ? bottomMenuItems : DEFAULT_BOTTOM_MENU;\n\n const handleToggle = () => {\n if (onToggle) {\n onToggle();\n } else {\n setInternalOpen(!internalOpen);\n }\n };\n\n return (\n <>\n <aside\n className={className}\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100vh',\n width: currentWidth,\n background: '#fff',\n borderRight: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n zIndex: 40,\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n }}\n >\n {/* Organization Header */}\n <SidebarHeader\n orgLogo={orgLogo}\n orgName={orgName}\n orgSubtitle={orgSubtitle}\n collapsed={collapsed}\n />\n\n {/* Main Menu */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n\n {/* Bottom Menu (ช่วยเหลือ + ตั้งค่าระบบ) */}\n {resolvedBottomMenu && resolvedBottomMenu.length > 0 && (\n <SidebarMenu\n menuItems={resolvedBottomMenu}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n )}\n\n {/* User Profile */}\n <SidebarUserProfile\n user={user}\n roleLabel={roleLabel}\n onLogout={onLogout}\n collapsed={collapsed}\n />\n </aside>\n\n {/* Toggle Button — top edge */}\n {collapsible && (\n <button\n onClick={handleToggle}\n title={sidebarOpen ? 'ย่อ Sidebar' : 'ขยาย Sidebar'}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#fff';\n }}\n style={{\n position: 'fixed',\n top: '10%',\n left: currentWidth,\n zIndex: 41,\n width: '24px',\n height: '40px',\n borderRadius: '0 6px 6px 0',\n border: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n borderLeft: 'none',\n background: '#fff',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '2px 0 8px rgba(0,0,0,0.06)',\n transition: 'left 0.3s ease',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}\n >\n <ToggleIcon isOpen={sidebarOpen} />\n </button>\n )}\n </>\n );\n}\n","'use client';\n\nimport { useState, useRef, useEffect } from 'react';\n\nexport interface NotificationItem {\n id: string | number;\n title: string;\n description: string;\n date: string;\n type: 'info' | 'success' | 'warning' | 'error' | 'reminder';\n isRead: boolean;\n}\n\ninterface UserHeaderProps {\n user?: {\n firstName?: string;\n lastName?: string;\n pictureUrl?: string;\n };\n notifications?: NotificationItem[];\n onToggleSidebar?: () => void;\n /** Custom bell icon */\n notificationBell?: React.ReactNode;\n onMarkAllRead?: () => void;\n onViewAll?: () => void;\n className?: string;\n}\n\nfunction BellIcon() {\n return (\n <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction HamburgerIcon() {\n return (\n <svg width=\"24\" height=\"18\" viewBox=\"0 0 27 18\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction getNotifBg(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '#dcfce7',\n warning: '#fef9c3',\n error: '#fee2e2',\n reminder: '#f3e8ff',\n info: '#dbeafe',\n };\n return map[type] || map.info;\n}\n\nfunction getNotifIcon(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '✓',\n warning: '!',\n error: '✕',\n reminder: '⏰',\n info: 'i',\n };\n return map[type] || map.info;\n}\n\nexport default function UserHeader({\n user,\n notifications = [],\n onToggleSidebar,\n notificationBell,\n onMarkAllRead,\n onViewAll,\n className,\n}: UserHeaderProps) {\n const displayName =\n `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || 'ผู้ใช้';\n const firstChar = user?.firstName?.charAt(0) || 'ผ';\n const [isNotifOpen, setIsNotifOpen] = useState(false);\n const notifRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (notifRef.current && !notifRef.current.contains(e.target as Node)) {\n setIsNotifOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const unreadCount = notifications.filter((n) => !n.isRead).length;\n\n return (\n <header\n className={className}\n style={{\n background: '#fff',\n boxShadow: '0 1px 3px rgba(0,0,0,0.08)',\n position: 'sticky',\n top: 0,\n zIndex: 10,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '14px 20px',\n }}\n >\n {/* Avatar & Name */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user?.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={displayName}\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n objectFit: 'cover',\n border: '2px solid var(--color-alias-color-brand-surface, #faf9e5)',\n }}\n />\n ) : (\n <div\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}\n >\n <span\n style={{ color: '#fff', fontSize: '18px', fontWeight: 600 }}\n >\n {firstChar}\n </span>\n </div>\n )}\n <div>\n <p\n style={{\n fontSize: '14px',\n fontWeight: 600,\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n }}\n >\n สวัสดี,{' '}\n <span\n style={{\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n }}\n >\n {displayName}\n </span>\n </p>\n </div>\n </div>\n\n {/* Right Side */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n {/* Notification Bell */}\n <div style={{ position: 'relative' }} ref={notifRef}>\n {notificationBell || (\n <button\n onClick={() => setIsNotifOpen(!isNotifOpen)}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <BellIcon />\n {unreadCount > 0 && (\n <span\n style={{\n position: 'absolute',\n top: '2px',\n right: '2px',\n minWidth: '16px',\n height: '16px',\n background: 'var(--color-alias-semantic-critical, #f21515)',\n borderRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: unreadCount > 99 ? '7px' : '9px',\n fontWeight: 700,\n color: '#fff',\n padding: '0 3px',\n lineHeight: 1,\n }}\n >\n {unreadCount > 99 ? '99+' : unreadCount}\n </span>\n )}\n </button>\n )}\n\n {/* Notification Dropdown */}\n {isNotifOpen && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n marginTop: '8px',\n width: '360px',\n background: '#fff',\n borderRadius: '12px',\n boxShadow: '0 10px 40px rgba(0,0,0,0.12)',\n zIndex: 50,\n overflow: 'hidden',\n border: '1px solid #e5e7eb',\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px',\n borderBottom: '1px solid #f3f4f6',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n background: '#fafafa',\n }}\n >\n <span style={{ fontWeight: 600, fontSize: '14px', color: '#111' }}>\n การแจ้งเตือน\n </span>\n {onMarkAllRead && (\n <button\n onClick={onMarkAllRead}\n style={{\n fontSize: '12px',\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n }}\n >\n อ่านทั้งหมด\n </button>\n )}\n </div>\n {/* Items */}\n <div style={{ maxHeight: '60vh', overflowY: 'auto' }}>\n {notifications.length === 0 ? (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: '#9ca3af',\n fontSize: '14px',\n }}\n >\n 🔔 ไม่มีการแจ้งเตือนใหม่\n </div>\n ) : (\n notifications.map((item) => (\n <div\n key={item.id}\n style={{\n padding: '12px 16px',\n borderBottom: '1px solid #f9fafb',\n cursor: 'pointer',\n background: !item.isRead ? 'rgba(219,234,254,0.3)' : 'transparent',\n position: 'relative',\n display: 'flex',\n gap: '12px',\n alignItems: 'flex-start',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = !item.isRead\n ? 'rgba(219,234,254,0.3)'\n : 'transparent';\n }}\n >\n {!item.isRead && (\n <span\n style={{\n position: 'absolute',\n top: '12px',\n right: '12px',\n width: '8px',\n height: '8px',\n background: '#ef4444',\n borderRadius: '50%',\n }}\n />\n )}\n <div\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n background: getNotifBg(item.type),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '13px',\n flexShrink: 0,\n marginTop: '2px',\n }}\n >\n {getNotifIcon(item.type)}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontSize: '13px',\n fontWeight: !item.isRead ? 600 : 500,\n color: '#111',\n margin: '0 0 2px',\n }}\n >\n {item.title}\n </p>\n <p\n style={{\n fontSize: '12px',\n color: '#6b7280',\n margin: '0 0 4px',\n lineHeight: '18px',\n }}\n >\n {item.description}\n </p>\n <p\n style={{\n fontSize: '10px',\n color: '#9ca3af',\n margin: 0,\n fontWeight: 500,\n }}\n >\n {item.date}\n </p>\n </div>\n </div>\n ))\n )}\n </div>\n {/* Footer */}\n {onViewAll && (\n <div\n style={{\n padding: '10px',\n borderTop: '1px solid #f3f4f6',\n textAlign: 'center',\n background: '#fafafa',\n }}\n >\n <button\n onClick={onViewAll}\n style={{\n fontSize: '13px',\n color: '#6b7280',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n width: '100%',\n padding: '4px',\n }}\n >\n ดูทั้งหมด\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Hamburger Button */}\n {onToggleSidebar && (\n <button\n onClick={onToggleSidebar}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <HamburgerIcon />\n </button>\n )}\n </div>\n </div>\n </header>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport SidebarMenu from '../sidebar/SidebarMenu';\nimport type { User, MenuItem } from '../sidebar/types';\n\ninterface UserSidebarProps {\n user: User | null;\n roleLabel: string;\n menuItems: MenuItem[];\n onNavigate: (path: string) => void;\n onLogout: () => void;\n isOpen: boolean;\n onClose: () => void;\n roleColor?: string;\n}\n\nfunction LogoutIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\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\nexport default function UserSidebar({\n user,\n roleLabel,\n menuItems,\n onNavigate,\n onLogout,\n isOpen,\n onClose,\n roleColor = 'var(--color-alias-semantic-warning, orange)',\n}: UserSidebarProps) {\n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n const getFullName = () => {\n if (!user) return 'ผู้ใช้';\n if (user.firstName && user.lastName) return `${user.firstName} ${user.lastName}`;\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n if (!user) return '?';\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n const handleMenuClick = (path: string) => {\n onNavigate(path);\n onClose();\n };\n\n const handleLogout = () => {\n onClose();\n onLogout();\n };\n\n return (\n <>\n {/* Overlay */}\n {isOpen && (\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n background: 'rgba(0,0,0,0.5)',\n zIndex: 40,\n transition: 'opacity 0.3s ease',\n }}\n />\n )}\n\n {/* Sidebar Panel */}\n <aside\n style={{\n position: 'fixed',\n top: 0,\n right: 0,\n height: '100%',\n width: '80vw',\n maxWidth: '320px',\n background: '#fff',\n boxShadow: '-4px 0 24px rgba(0,0,0,0.12)',\n zIndex: 50,\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n transition: 'transform 0.3s ease',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* User Profile */}\n {user && (\n <div\n style={{\n padding: '20px',\n borderBottom: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n objectFit: 'cover',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n />\n ) : (\n <div\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '20px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontWeight: 700,\n fontSize: '16px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {getFullName()}\n </p>\n <p\n style={{\n fontSize: '13px',\n color: 'var(--color-alias-text-colors-tertiary, #6b7280)',\n margin: '2px 0 0',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n >\n <span\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n background: roleColor,\n display: 'inline-block',\n }}\n />\n {roleLabel}\n </p>\n </div>\n </div>\n </div>\n )}\n\n {/* Menu Items */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={handleMenuClick}\n />\n\n {/* Logout Button */}\n <div\n style={{\n padding: '20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <button\n onClick={handleLogout}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#fef2f2';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n padding: '14px 16px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #ef4444)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n fontSize: '15px',\n fontWeight: 500,\n }}\n >\n <LogoutIcon />\n <span>ออกจากระบบ</span>\n </button>\n </div>\n </aside>\n </>\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, #f5f6fa)',\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, #e5e7eb)',\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/sidebar/SidebarHeader.tsx","../src/sidebar/SidebarMenu.tsx","../src/sidebar/SidebarUserProfile.tsx","../src/sidebar/StaffSidebar.tsx","../src/header/UserHeader.tsx","../src/header/UserSidebar.tsx","../src/settings/SettingsContext.tsx","../src/settings/ThemeSettings.tsx","../src/settings/FontSizeSettings.tsx","../src/settings/SettingsPanel.tsx"],"names":["jsx","jsxs","useState","Fragment","LogoutIcon","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\ninterface SidebarHeaderProps {\n orgLogo?: string;\n orgName: string;\n orgSubtitle?: string;\n collapsed?: boolean;\n}\n\nexport default function SidebarHeader({ orgLogo, orgName, orgSubtitle, collapsed }: SidebarHeaderProps) {\n if (collapsed) {\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '20px 8px',\n }}>\n {orgLogo ? (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}>\n {orgName.charAt(0)}\n </div>\n )}\n </div>\n );\n }\n\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '24px 20px',\n }}>\n {orgLogo && (\n <img\n src={orgLogo}\n alt={orgName}\n style={{\n width: '48px',\n height: '48px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n )}\n <div style={{ minWidth: 0 }}>\n <p style={{\n fontWeight: 700,\n fontSize: '16px',\n lineHeight: '22px',\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgName}\n </p>\n {orgSubtitle && (\n <p style={{\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {orgSubtitle}\n </p>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport type { MenuItem } from './types';\n\ninterface SidebarMenuProps {\n menuItems: MenuItem[];\n onItemClick: (path: string) => void;\n currentPath?: string;\n collapsed?: boolean;\n}\n\nfunction ChevronDownIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n flexShrink: 0,\n }}\n >\n <path d=\"M5 7.5L10 12.5L15 7.5\" />\n </svg>\n );\n}\n\nfunction MenuItemComponent({\n item,\n onItemClick,\n currentPath,\n depth = 0,\n collapsed = false,\n}: {\n item: MenuItem;\n onItemClick: (path: string) => void;\n currentPath?: string;\n depth?: number;\n collapsed?: boolean;\n}) {\n const hasChildren = item.children && item.children.length > 0;\n const isActive = item.path ? currentPath === item.path : false;\n const isChildActive = hasChildren\n ? item.children!.some((child) => child.path === currentPath)\n : false;\n\n // Auto-expand if child is active, but allow user to override\n const [userToggled, setUserToggled] = useState(false);\n const [isOpen, setIsOpen] = useState(isChildActive);\n const expanded = userToggled ? isOpen : (isOpen || isChildActive);\n\n const handleClick = () => {\n if (hasChildren) {\n setUserToggled(true);\n setIsOpen(!expanded);\n } else if (item.path) {\n onItemClick(item.path);\n }\n };\n\n const activeColor = 'var(--color-alias-color-brand-primary, #1e7d55)';\n const hoverBg = 'var(--color-foundations-fuji-pallet-light, #ebedf5)';\n\n // Collapsed mode: icon only\n if (collapsed && depth === 0) {\n return (\n <li>\n <button\n onClick={handleClick}\n title={item.title}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '12px 0',\n borderRadius: '8px',\n border: 'none',\n background: isActive || isChildActive\n ? `color-mix(in srgb, ${activeColor} 10%, transparent)`\n : 'transparent',\n color: isActive || isChildActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}>\n {item.icon}\n </span>\n )}\n </button>\n {item.dividerAfter && (\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 4px',\n }} />\n )}\n </li>\n );\n }\n\n return (\n <>\n <li>\n <button\n onClick={handleClick}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: depth > 0 ? '10px 16px 10px 52px' : '12px 16px',\n borderRadius: '8px',\n border: 'none',\n background: isActive ? `color-mix(in srgb, ${activeColor} 10%, transparent)` : 'transparent',\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-primary, #060d26)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n textAlign: 'left',\n fontSize: '15px',\n fontWeight: isActive ? 600 : 400,\n lineHeight: '22px',\n }}\n >\n {item.icon && (\n <span style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n color: isActive\n ? activeColor\n : 'var(--color-alias-text-colors-tertiary, #475272)',\n }}>\n {item.icon}\n </span>\n )}\n <span style={{ flex: 1 }}>{item.title}</span>\n {hasChildren && <ChevronDownIcon isOpen={expanded} />}\n </button>\n </li>\n {hasChildren && expanded && (\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {item.children!.map((child) => (\n <MenuItemComponent\n key={child.id}\n item={child}\n onItemClick={onItemClick}\n currentPath={currentPath}\n depth={depth + 1}\n />\n ))}\n </ul>\n )}\n {item.dividerAfter && (\n <li>\n <hr style={{\n border: 'none',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n margin: '8px 0',\n }} />\n </li>\n )}\n </>\n );\n}\n\nexport default function SidebarMenu({ menuItems, onItemClick, currentPath, collapsed }: SidebarMenuProps) {\n return (\n <nav style={{\n flex: collapsed ? undefined : 1,\n padding: collapsed ? '8px 8px' : '8px 12px',\n overflowY: 'auto',\n }}>\n <ul style={{\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n }}>\n {menuItems.map((item) => (\n <MenuItemComponent\n key={item.id}\n item={item}\n onItemClick={onItemClick}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n ))}\n </ul>\n </nav>\n );\n}\n","'use client';\n\nimport type { User } from './types';\n\ninterface SidebarUserProfileProps {\n user: User | null;\n roleLabel: string;\n onLogout: () => void;\n collapsed?: boolean;\n}\n\nfunction LogoutIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\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\nexport default function SidebarUserProfile({\n user,\n roleLabel,\n onLogout,\n collapsed,\n}: SidebarUserProfileProps) {\n if (!user) return null;\n\n const getFullName = () => {\n if (user.firstName && user.lastName) {\n return `${user.firstName} ${user.lastName}`;\n }\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n // Collapsed: avatar + logout icon only\n if (collapsed) {\n return (\n <div style={{\n padding: '12px 8px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '12px',\n }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div\n title={getFullName()}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '14px',\n }}\n >\n {getInitial()}\n </div>\n )}\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n }\n\n // Expanded\n return (\n <div\n style={{\n padding: '16px 20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n }}\n >\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n ) : (\n <div\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n background: 'var(--color-alias-color-brand-primary, #1e7d55)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '16px',\n flexShrink: 0,\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p style={{\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '20px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}>\n {getFullName()}\n </p>\n <p style={{\n fontSize: '12px',\n lineHeight: '16px',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n margin: 0,\n }}>\n {roleLabel}\n </p>\n </div>\n <button\n onClick={onLogout}\n title=\"ออกจากระบบ\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-foundations-fuan-pallet-light, #ffd2d2)';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = 'var(--color-alias-semantic-critical, #f21515)';\n }}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #f21515)',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'background-color 0.15s ease',\n flexShrink: 0,\n }}\n >\n <LogoutIcon />\n </button>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport SidebarHeader from './SidebarHeader';\nimport SidebarMenu from './SidebarMenu';\nimport SidebarUserProfile from './SidebarUserProfile';\nimport type { StaffSidebarProps, MenuItem } from './types';\n\nfunction ToggleIcon({ isOpen }: { isOpen: boolean }) {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: 'transform 0.2s ease',\n transform: isOpen ? 'rotate(0deg)' : 'rotate(180deg)',\n }}\n >\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n );\n}\n\nfunction HelpCircleIcon() {\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\" />\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\nfunction GearIcon() {\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=\"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\n// Default bottom menu — ตั้งค่าระบบ + ช่วยเหลือ\nconst DEFAULT_BOTTOM_MENU: MenuItem[] = [\n { id: 'settings', title: 'ตั้งค่าระบบ', icon: <GearIcon />, path: '/settings' },\n { id: 'help', title: 'ช่วยเหลือ', icon: <HelpCircleIcon />, path: '/help' },\n];\n\nexport default function StaffSidebar({\n orgLogo,\n orgName,\n orgSubtitle,\n menuItems,\n bottomMenuItems,\n user,\n roleLabel,\n onNavigate,\n onLogout,\n currentPath,\n width = '280px',\n className,\n collapsible = false,\n isOpen: controlledIsOpen,\n onToggle,\n}: StaffSidebarProps) {\n const [internalOpen, setInternalOpen] = useState(true);\n const sidebarOpen = controlledIsOpen !== undefined ? controlledIsOpen : internalOpen;\n const collapsed = collapsible && !sidebarOpen;\n const collapsedWidth = '64px';\n const currentWidth = collapsed ? collapsedWidth : width;\n\n // ใช้ default ถ้าไม่ได้ส่ง bottomMenuItems มา\n const resolvedBottomMenu = bottomMenuItems !== undefined ? bottomMenuItems : DEFAULT_BOTTOM_MENU;\n\n const handleToggle = () => {\n if (onToggle) {\n onToggle();\n } else {\n setInternalOpen(!internalOpen);\n }\n };\n\n return (\n <>\n <aside\n className={className}\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n height: '100vh',\n width: currentWidth,\n background: '#fff',\n borderRight: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n display: 'flex',\n flexDirection: 'column',\n zIndex: 40,\n overflow: 'hidden',\n transition: 'width 0.3s ease',\n }}\n >\n {/* Organization Header */}\n <SidebarHeader\n orgLogo={orgLogo}\n orgName={orgName}\n orgSubtitle={orgSubtitle}\n collapsed={collapsed}\n />\n\n {/* Main Menu */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n\n {/* Bottom Menu (ช่วยเหลือ + ตั้งค่าระบบ) */}\n {resolvedBottomMenu && resolvedBottomMenu.length > 0 && (\n <SidebarMenu\n menuItems={resolvedBottomMenu}\n onItemClick={onNavigate}\n currentPath={currentPath}\n collapsed={collapsed}\n />\n )}\n\n {/* User Profile */}\n <SidebarUserProfile\n user={user}\n roleLabel={roleLabel}\n onLogout={onLogout}\n collapsed={collapsed}\n />\n </aside>\n\n {/* Toggle Button — top edge */}\n {collapsible && (\n <button\n onClick={handleToggle}\n title={sidebarOpen ? 'ย่อ Sidebar' : 'ขยาย Sidebar'}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#fff';\n }}\n style={{\n position: 'fixed',\n top: '10%',\n left: currentWidth,\n zIndex: 41,\n width: '24px',\n height: '40px',\n borderRadius: '0 6px 6px 0',\n border: '1px solid var(--color-border-colors-neutral, #c8cedd)',\n borderLeft: 'none',\n background: '#fff',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '2px 0 8px rgba(0,0,0,0.06)',\n transition: 'left 0.3s ease',\n color: 'var(--color-alias-text-colors-tertiary, #475272)',\n }}\n >\n <ToggleIcon isOpen={sidebarOpen} />\n </button>\n )}\n </>\n );\n}\n","'use client';\n\nimport { useState, useRef, useEffect } from 'react';\n\nexport interface NotificationItem {\n id: string | number;\n title: string;\n description: string;\n date: string;\n type: 'info' | 'success' | 'warning' | 'error' | 'reminder';\n isRead: boolean;\n}\n\ninterface UserHeaderProps {\n user?: {\n firstName?: string;\n lastName?: string;\n pictureUrl?: string;\n };\n notifications?: NotificationItem[];\n onToggleSidebar?: () => void;\n /** Custom bell icon */\n notificationBell?: React.ReactNode;\n onMarkAllRead?: () => void;\n onViewAll?: () => void;\n className?: string;\n}\n\nfunction BellIcon() {\n return (\n <svg width=\"22\" height=\"24\" viewBox=\"0 0 22 24\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction HamburgerIcon() {\n return (\n <svg width=\"24\" height=\"18\" viewBox=\"0 0 27 18\" fill=\"none\">\n <path\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\"\n fill=\"var(--color-alias-color-brand-text-dark, #05010e)\"\n />\n </svg>\n );\n}\n\nfunction getNotifBg(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '#dcfce7',\n warning: '#fef9c3',\n error: '#fee2e2',\n reminder: '#f3e8ff',\n info: '#dbeafe',\n };\n return map[type] || map.info;\n}\n\nfunction getNotifIcon(type: NotificationItem['type']) {\n const map: Record<string, string> = {\n success: '✓',\n warning: '!',\n error: '✕',\n reminder: '⏰',\n info: 'i',\n };\n return map[type] || map.info;\n}\n\nexport default function UserHeader({\n user,\n notifications = [],\n onToggleSidebar,\n notificationBell,\n onMarkAllRead,\n onViewAll,\n className,\n}: UserHeaderProps) {\n const displayName =\n `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || 'ผู้ใช้';\n const firstChar = user?.firstName?.charAt(0) || 'ผ';\n const [isNotifOpen, setIsNotifOpen] = useState(false);\n const notifRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (notifRef.current && !notifRef.current.contains(e.target as Node)) {\n setIsNotifOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const unreadCount = notifications.filter((n) => !n.isRead).length;\n\n return (\n <header\n className={className}\n style={{\n background: '#fff',\n boxShadow: '0 1px 3px rgba(0,0,0,0.08)',\n position: 'sticky',\n top: 0,\n zIndex: 10,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '14px 20px',\n }}\n >\n {/* Avatar & Name */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user?.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={displayName}\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n objectFit: 'cover',\n border: '2px solid var(--color-alias-color-brand-surface, #faf9e5)',\n }}\n />\n ) : (\n <div\n style={{\n width: '44px',\n height: '44px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 1px 3px rgba(0,0,0,0.1)',\n }}\n >\n <span\n style={{ color: '#fff', fontSize: '18px', fontWeight: 600 }}\n >\n {firstChar}\n </span>\n </div>\n )}\n <div>\n <p\n style={{\n fontSize: '14px',\n fontWeight: 600,\n color: 'var(--color-alias-color-brand-text-dark, #05010e)',\n margin: 0,\n }}\n >\n สวัสดี,{' '}\n <span\n style={{\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n }}\n >\n {displayName}\n </span>\n </p>\n </div>\n </div>\n\n {/* Right Side */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n {/* Notification Bell */}\n <div style={{ position: 'relative' }} ref={notifRef}>\n {notificationBell || (\n <button\n onClick={() => setIsNotifOpen(!isNotifOpen)}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <BellIcon />\n {unreadCount > 0 && (\n <span\n style={{\n position: 'absolute',\n top: '2px',\n right: '2px',\n minWidth: '16px',\n height: '16px',\n background: 'var(--color-alias-semantic-critical, #f21515)',\n borderRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: unreadCount > 99 ? '7px' : '9px',\n fontWeight: 700,\n color: '#fff',\n padding: '0 3px',\n lineHeight: 1,\n }}\n >\n {unreadCount > 99 ? '99+' : unreadCount}\n </span>\n )}\n </button>\n )}\n\n {/* Notification Dropdown */}\n {isNotifOpen && (\n <div\n style={{\n position: 'absolute',\n right: 0,\n marginTop: '8px',\n width: '360px',\n background: '#fff',\n borderRadius: '12px',\n boxShadow: '0 10px 40px rgba(0,0,0,0.12)',\n zIndex: 50,\n overflow: 'hidden',\n border: '1px solid #e5e7eb',\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px',\n borderBottom: '1px solid #f3f4f6',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n background: '#fafafa',\n }}\n >\n <span style={{ fontWeight: 600, fontSize: '14px', color: '#111' }}>\n การแจ้งเตือน\n </span>\n {onMarkAllRead && (\n <button\n onClick={onMarkAllRead}\n style={{\n fontSize: '12px',\n color: 'var(--color-alias-color-brand-primary, #1e7d55)',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n }}\n >\n อ่านทั้งหมด\n </button>\n )}\n </div>\n {/* Items */}\n <div style={{ maxHeight: '60vh', overflowY: 'auto' }}>\n {notifications.length === 0 ? (\n <div\n style={{\n padding: '32px',\n textAlign: 'center',\n color: '#9ca3af',\n fontSize: '14px',\n }}\n >\n 🔔 ไม่มีการแจ้งเตือนใหม่\n </div>\n ) : (\n notifications.map((item) => (\n <div\n key={item.id}\n style={{\n padding: '12px 16px',\n borderBottom: '1px solid #f9fafb',\n cursor: 'pointer',\n background: !item.isRead ? 'rgba(219,234,254,0.3)' : 'transparent',\n position: 'relative',\n display: 'flex',\n gap: '12px',\n alignItems: 'flex-start',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = !item.isRead\n ? 'rgba(219,234,254,0.3)'\n : 'transparent';\n }}\n >\n {!item.isRead && (\n <span\n style={{\n position: 'absolute',\n top: '12px',\n right: '12px',\n width: '8px',\n height: '8px',\n background: '#ef4444',\n borderRadius: '50%',\n }}\n />\n )}\n <div\n style={{\n width: '32px',\n height: '32px',\n borderRadius: '50%',\n background: getNotifBg(item.type),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '13px',\n flexShrink: 0,\n marginTop: '2px',\n }}\n >\n {getNotifIcon(item.type)}\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontSize: '13px',\n fontWeight: !item.isRead ? 600 : 500,\n color: '#111',\n margin: '0 0 2px',\n }}\n >\n {item.title}\n </p>\n <p\n style={{\n fontSize: '12px',\n color: '#6b7280',\n margin: '0 0 4px',\n lineHeight: '18px',\n }}\n >\n {item.description}\n </p>\n <p\n style={{\n fontSize: '10px',\n color: '#9ca3af',\n margin: 0,\n fontWeight: 500,\n }}\n >\n {item.date}\n </p>\n </div>\n </div>\n ))\n )}\n </div>\n {/* Footer */}\n {onViewAll && (\n <div\n style={{\n padding: '10px',\n borderTop: '1px solid #f3f4f6',\n textAlign: 'center',\n background: '#fafafa',\n }}\n >\n <button\n onClick={onViewAll}\n style={{\n fontSize: '13px',\n color: '#6b7280',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n width: '100%',\n padding: '4px',\n }}\n >\n ดูทั้งหมด\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Hamburger Button */}\n {onToggleSidebar && (\n <button\n onClick={onToggleSidebar}\n style={{\n padding: '10px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <HamburgerIcon />\n </button>\n )}\n </div>\n </div>\n </header>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport SidebarMenu from '../sidebar/SidebarMenu';\nimport type { User, MenuItem } from '../sidebar/types';\n\ninterface UserSidebarProps {\n user: User | null;\n roleLabel: string;\n menuItems: MenuItem[];\n onNavigate: (path: string) => void;\n onLogout: () => void;\n isOpen: boolean;\n onClose: () => void;\n roleColor?: string;\n}\n\nfunction LogoutIcon() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\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\nexport default function UserSidebar({\n user,\n roleLabel,\n menuItems,\n onNavigate,\n onLogout,\n isOpen,\n onClose,\n roleColor = 'var(--color-alias-semantic-warning, orange)',\n}: UserSidebarProps) {\n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n const getFullName = () => {\n if (!user) return 'ผู้ใช้';\n if (user.firstName && user.lastName) return `${user.firstName} ${user.lastName}`;\n return user.firstName || user.lastName || 'ผู้ใช้';\n };\n\n const getInitial = () => {\n if (!user) return '?';\n return user.firstName?.charAt(0) || user.lastName?.charAt(0) || '?';\n };\n\n const handleMenuClick = (path: string) => {\n onNavigate(path);\n onClose();\n };\n\n const handleLogout = () => {\n onClose();\n onLogout();\n };\n\n return (\n <>\n {/* Overlay */}\n {isOpen && (\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n background: 'rgba(0,0,0,0.5)',\n zIndex: 40,\n transition: 'opacity 0.3s ease',\n }}\n />\n )}\n\n {/* Sidebar Panel */}\n <aside\n style={{\n position: 'fixed',\n top: 0,\n right: 0,\n height: '100%',\n width: '80vw',\n maxWidth: '320px',\n background: '#fff',\n boxShadow: '-4px 0 24px rgba(0,0,0,0.12)',\n zIndex: 50,\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n transition: 'transform 0.3s ease',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* User Profile */}\n {user && (\n <div\n style={{\n padding: '20px',\n borderBottom: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {user.pictureUrl ? (\n <img\n src={user.pictureUrl}\n alt={getFullName()}\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n objectFit: 'cover',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n />\n ) : (\n <div\n style={{\n width: '56px',\n height: '56px',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, var(--color-alias-color-brand-secondary, #80d897), var(--color-alias-color-brand-primary, #1e7d55))',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontWeight: 700,\n fontSize: '20px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }}\n >\n {getInitial()}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <p\n style={{\n fontWeight: 700,\n fontSize: '16px',\n color: 'var(--color-alias-text-colors-primary, #060d26)',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {getFullName()}\n </p>\n <p\n style={{\n fontSize: '13px',\n color: 'var(--color-alias-text-colors-tertiary, #6b7280)',\n margin: '2px 0 0',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n }}\n >\n <span\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n background: roleColor,\n display: 'inline-block',\n }}\n />\n {roleLabel}\n </p>\n </div>\n </div>\n </div>\n )}\n\n {/* Menu Items */}\n <SidebarMenu\n menuItems={menuItems}\n onItemClick={handleMenuClick}\n />\n\n {/* Logout Button */}\n <div\n style={{\n padding: '20px',\n borderTop: '1px solid var(--color-border-colors-neutral, #e5e7eb)',\n }}\n >\n <button\n onClick={handleLogout}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#fef2f2';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n padding: '14px 16px',\n borderRadius: '8px',\n border: 'none',\n background: 'transparent',\n color: 'var(--color-alias-semantic-critical, #ef4444)',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease',\n fontSize: '15px',\n fontWeight: 500,\n }}\n >\n <LogoutIcon />\n <span>ออกจากระบบ</span>\n </button>\n </div>\n </aside>\n </>\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, #f5f6fa)',\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, #e5e7eb)',\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"]}
|