import { Button } from "@/components/ui/button"; import { useLatestVersion } from "@/hooks/useLatestVersion"; import { cn } from "@/lib/utils"; import { updateSetting, useSettingsValue } from "@/settings/model"; import { isNewerVersion } from "@/utils"; import { XIcon } from "lucide-react"; import React, { useState } from "react"; interface NewVersionBannerProps { currentVersion: string; } export function NewVersionBanner({ currentVersion }: NewVersionBannerProps) { const { latestVersion, hasUpdate } = useLatestVersion(currentVersion); const lastDismissedVersion = useSettingsValue().lastDismissedVersion; const [isVisible, setIsVisible] = useState(true); const showBanner = hasUpdate && latestVersion && isNewerVersion(latestVersion, currentVersion) && lastDismissedVersion !== latestVersion; const handleDismiss = () => { if (latestVersion) { setIsVisible(false); // Wait for animation to complete before updating setting setTimeout(() => { updateSetting("lastDismissedVersion", latestVersion); }, 300); } }; if (!showBanner) { return null; } return (