import { useChatModels } from "@agent-native/core/client/agent-chat"; import { agentNativePath } from "@agent-native/core/client/api-path"; import { ChangelogSettingsCard } from "@agent-native/core/client/changelog"; import { callAction, useActionMutation, useChangeVersions, } from "@agent-native/core/client/hooks"; import { LanguagePicker, useT } from "@agent-native/core/client/i18n"; import { TeamPage } from "@agent-native/core/client/org"; import { AccountSettingsCard, SettingsTabsPage, useAgentSettingsTabs, type SettingsSearchEntry, type SettingsTabItem, } from "@agent-native/core/client/settings"; import type { Alias, AutomationAction, AutomationRule, UserSettings, } from "@shared/types"; import { IconUsers, IconPlus, IconPencil, IconTrash, IconLoader2, IconBolt, IconX, IconChartBar, IconCircleCheck, IconCircleX, IconClock, IconPlayerPlay, IconSignature, IconFilter, IconInfoCircle, IconMessage2, } from "@tabler/icons-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { useState, useEffect, useRef, useMemo } from "react"; import { useSearchParams } from "react-router"; import { toast } from "sonner"; import { GmailFiltersSection } from "@/components/settings/GmailFiltersSection"; import { SnippetsSection } from "@/components/settings/SnippetsSection"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Skeleton } from "@/components/ui/skeleton"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { useAliases, useCreateAlias, useUpdateAlias, useDeleteAlias, } from "@/hooks/use-aliases"; import { useAutomations, useCreateAutomation, useUpdateAutomation, useDeleteAutomation, } from "@/hooks/use-automations"; import { useSettings, useUpdateSettings } from "@/hooks/use-emails"; import { useNavigationState } from "@/hooks/use-navigation-state"; import { cn } from "@/lib/utils"; import changelog from "../../CHANGELOG.md?raw"; // ─── Alias Edit Row ─────────────────────────────────────────────────────────── function AliasEditRow({ alias, onSave, onCancel, isPending, }: { alias?: Alias; onSave: (name: string, emails: string[]) => void; onCancel: () => void; isPending?: boolean; }) { const t = useT(); const [name, setName] = useState(alias?.name ?? ""); const [emailsText, setEmailsText] = useState(alias?.emails.join("\n") ?? ""); const handleSave = () => { const emails = emailsText .split("\n") .map((e) => e.trim()) .filter(Boolean); if (!name.trim() || emails.length === 0) return; onSave(name.trim(), emails); }; return (
setName(e.target.value)} placeholder={t("settings.aliasNamePlaceholder")} className="px-3 py-1.5 text-[13px] placeholder:text-muted-foreground/40" />