import {
  AppWindow,
  Archive,
  ArrowDown,
  ArrowLeft,
  ArrowUp,
  Ban,
  Bell,
  Box,
  Check,
  ChevronDown,
  ChevronLeft,
  ChevronRight,
  Clock3,
  CodeXml,
  Copy,
  Database,
  Ellipsis,
  EyeOff,
  Folder,
  FolderClosed,
  FolderOpen,
  Image,
  Languages,
  LifeBuoy,
  List,
  ListCollapse,
  ListFilter,
  ListTodo,
  LoaderCircle,
  Mic,
  PencilLine,
  Pin,
  PinOff,
  Plus,
  Sparkles,
  Smartphone,
  Square,
  SquarePen,
  SunMoon,
  Trash2,
  UsersRound,
  X
} from "lucide-react";

const decorative = { "aria-hidden": true, focusable: "false" };

export function AppWindowIcon({ className = "action-icon" }) {
  return <AppWindow className={className} {...decorative} />;
}

export function AccountsSettingsIcon({ className = "action-icon" }) {
  return <UsersRound className={className} {...decorative} />;
}

export function ChatsSettingsIcon({ className = "action-icon" }) {
  return <Archive className={className} {...decorative} />;
}

export function NotificationsSettingsIcon({ className = "action-icon" }) {
  return <Bell className={className} {...decorative} />;
}

export function LanguageSettingsIcon({ className = "action-icon" }) {
  return <Languages className={className} {...decorative} />;
}

export function ThemeSettingsIcon({ className = "action-icon" }) {
  return <SunMoon className={className} {...decorative} />;
}

export function DeviceResetIcon({ className = "action-icon" }) {
  return <Smartphone className={className} {...decorative} />;
}

export function PcDataResetIcon({ className = "action-icon" }) {
  return <Database className={className} {...decorative} />;
}

export function LegalSupportIcon({ className = "action-icon" }) {
  return <LifeBuoy className={className} {...decorative} />;
}

export function BackIcon({ className = "conversation-back-icon" }) {
  return <ArrowLeft className={className} {...decorative} />;
}

export function NewChatIcon({ className = "new-chat-icon" }) {
  return <SquarePen className={className} {...decorative} />;
}

export function TrashIcon({ className = "action-icon" }) {
  return <Trash2 className={className} {...decorative} />;
}

export function HideIcon({ className = "action-icon" }) {
  return <EyeOff className={className} {...decorative} />;
}

export function PinIcon({ pinned = false, className = "action-icon" }) {
  return pinned ? <PinOff className={className} {...decorative} /> : <Pin className={className} {...decorative} />;
}

export function RenameIcon({ className = "action-icon" }) {
  return <PencilLine className={className} {...decorative} />;
}

export function ArchiveIcon({ className = "action-icon" }) {
  return <Archive className={className} {...decorative} />;
}

export function FolderIcon({ className = "action-icon" }) {
  return <Folder className={className} {...decorative} />;
}

export function ModelIcon({ className = "action-icon" }) {
  return <Box className={className} {...decorative} />;
}

export function FolderOpenIcon({ className = "action-icon" }) {
  return <FolderOpen className={className} {...decorative} />;
}

export function FolderClosedIcon({ className = "action-icon" }) {
  return <FolderClosed className={className} {...decorative} />;
}

export function ChatClassicViewIcon({ className = "action-icon" }) {
  return <List className={className} {...decorative} />;
}

export function ChatGroupedViewIcon({ className = "action-icon" }) {
  return <ListCollapse className={className} {...decorative} />;
}

export function PlusIcon({ className = "project-picker-action-svg" }) {
  return <Plus className={className} {...decorative} />;
}

export function NoProjectIcon({ className = "project-picker-action-svg" }) {
  return <Ban className={className} {...decorative} />;
}

export function CheckIcon({ className = "composer-menu-icon composer-check-icon" }) {
  return <Check className={className} {...decorative} />;
}

export function CloseIcon({ className = "composer-menu-icon composer-close-icon" }) {
  return <X className={className} {...decorative} />;
}

export function StopIcon({ className = "composer-action-svg" }) {
  return <Square className={className} fill="currentColor" {...decorative} />;
}

export function MicrophoneIcon({ className = "composer-action-svg" }) {
  return <Mic className={className} {...decorative} />;
}

export function SendIcon({ className = "composer-action-svg" }) {
  return <ArrowUp className={className} {...decorative} />;
}

export function CopyIcon({ className = "action-icon" }) {
  return <Copy className={className} {...decorative} />;
}

export function SortIcon({ className = "action-icon" }) {
  return <ListFilter className={className} {...decorative} />;
}

export function SortDirectionIcon({ className = "action-icon" }) {
  return <ArrowDown className={className} {...decorative} />;
}

export function LatestMessageIcon({ className = "action-icon" }) {
  return <ArrowDown className={className} {...decorative} />;
}

export function ClockIcon({ className = "action-icon" }) {
  return <Clock3 className={className} {...decorative} />;
}

export function ForwardIcon({ className = "action-icon" }) {
  return <ChevronRight className={className} {...decorative} />;
}

export function DisclosureIcon({ className = "action-icon" }) {
  return <ChevronDown className={className} {...decorative} />;
}

export function PreviousIcon({ className = "action-icon" }) {
  return <ChevronLeft className={className} {...decorative} />;
}

export function MoreIcon({ className = "action-icon" }) {
  return <Ellipsis className={className} {...decorative} />;
}

export function TechnicalActivityIcon({ className = "activity-technical-icon" }) {
  return <CodeXml className={className} {...decorative} />;
}

export function ImageUploadIcon({ className = "action-icon" }) {
  return <Image className={className} {...decorative} />;
}

export function AttachmentLoadingIcon({ className = "action-icon" }) {
  return <LoaderCircle className={className} {...decorative} />;
}

export function PlanIcon({ className = "action-icon" }) {
  return <ListTodo className={className} {...decorative} />;
}

export function SkillIcon({ className = "action-icon" }) {
  return <Sparkles className={className} {...decorative} />;
}
