import React, { useState } from "react"; import { View, ScrollView, Pressable, Image } from "react-native"; import { useSirouRouter } from "@sirou/react-native"; import { AppRoutes } from "@/lib/routes"; import { Text } from "@/components/ui/text"; import { ArrowLeft, Settings, ChevronRight, HelpCircle, History, LogOut, User, Lock, Globe, Building2, Users, } from "@/lib/icons"; import { ScreenWrapper } from "@/components/ScreenWrapper"; import { useColorScheme } from "nativewind"; import { saveTheme, AppTheme } from "@/lib/theme"; import { useAuthStore } from "@/lib/auth-store"; import { usePinStore } from "@/lib/pin-store"; import { useLanguageStore, AppLanguage } from "@/lib/language-store"; import { LanguageModal } from "@/components/LanguageModal"; import { ThemeModal } from "@/components/ThemeModal"; const AVATAR_FALLBACK_BASE = "https://ui-avatars.com/api/?background=ea580c&color=fff&name="; const THEME_OPTIONS = [ { value: "light", label: "Light" }, { value: "dark", label: "Dark" }, { value: "system", label: "System Default" }, ] as const; type ThemeOption = (typeof THEME_OPTIONS)[number]["value"]; const LANGUAGE_OPTIONS = [ { value: "en", label: "English" }, { value: "am", label: "Amharic" }, ] as const; type LanguageOption = (typeof LANGUAGE_OPTIONS)[number]["value"]; function MenuGroup({ label, children, }: { label: string; children: React.ReactNode; }) { return ( {label} {children} ); } function MenuItem({ icon, label, sublabel, onPress, right, destructive = false, isLast = false, }: { icon: React.ReactNode; label: string; sublabel?: string; onPress?: () => void; right?: React.ReactNode; destructive?: boolean; isLast?: boolean; }) { return ( {icon} {label} {sublabel ? ( {sublabel} ) : null} {right !== undefined ? ( right ) : ( )} ); } export default function ProfileScreen() { const nav = useSirouRouter(); const { user, logout } = useAuthStore(); const { setColorScheme, colorScheme } = useColorScheme(); const { language, setLanguage } = useLanguageStore(); const [themeSheetVisible, setThemeSheetVisible] = useState(false); const [languageSheetVisible, setLanguageSheetVisible] = useState(false); const currentTheme: ThemeOption = (colorScheme as ThemeOption) ?? "system"; const currentLanguage: LanguageOption = (language as LanguageOption) ?? "en"; const handleThemeSelect = (val: AppTheme) => { setColorScheme(val); saveTheme(val); }; const iconColor = colorScheme === "dark" ? "#f8fafc" : "#0f172a"; return ( nav.back()} className="h-10 w-10 rounded-[10px] bg-card items-center justify-center border border-border" > Profile nav.go("edit-profile")} className="h-10 w-10 rounded-[10px] bg-card items-center justify-center border border-border" > {user?.firstName} {user?.lastName} {user?.email} } label="Appearance" sublabel={ THEME_OPTIONS.find((o) => o.value === currentTheme)?.label ?? "System Default" } onPress={() => setThemeSheetVisible(true)} /> } label="Language" sublabel={ LANGUAGE_OPTIONS.find((o) => o.value === currentLanguage) ?.label ?? "English" } onPress={() => setLanguageSheetVisible(true)} /> } label="Password" sublabel="Change your password" onPress={() => nav.go("change-pin")} /> {/* } label="Lock Now" sublabel="Lock screen immediately" onPress={() => { usePinStore.getState().lock(); nav.go("pin-lock"); }} isLast /> */} } label="Overview" sublabel="View company details" onPress={() => nav.go("company-details")} /> {/* } label="Edit Company Info" sublabel="Update business details" onPress={() => nav.go("company/edit")} /> */} } label="Workers" sublabel="Manage team members" onPress={() => nav.go("team/index")} isLast /> } label="Help & Support" sublabel="Create support tickets" onPress={() => nav.go("help")} /> } label="FAQ" sublabel="Quick Answers" onPress={() => nav.go("faq")} isLast /> } label="Log Out" destructive onPress={async () => { await logout(); nav.go("login"); }} right={null} isLast /> handleThemeSelect(theme)} onClose={() => setThemeSheetVisible(false)} /> setLanguage(lang)} onClose={() => setLanguageSheetVisible(false)} /> ); }