import { toast } from "sonner"; import { isAPIError } from "@turbostarter/api/utils"; import { useTranslation } from "@turbostarter/i18n"; import { cn } from "@turbostarter/ui"; import { buttonVariants } from "@turbostarter/ui-web/button"; import { Icons } from "@turbostarter/ui-web/icons"; const InsufficientCredits = () => { const { t } = useTranslation("common"); const list = [ t("credits.description", { count: 5 }), t("credits.description2"), t("credits.description3"), ]; return (
{t("error.insufficientCredits")}
    {list.map((item) => (
  • {item}
  • ))}
{t("credits.cta")}{" "}
); }; const RateLimit = () => { const { t } = useTranslation("common"); const list = [ t("rateLimit.description"), t("rateLimit.description2"), t("rateLimit.description3"), ]; return (
{t("error.rateLimit")}
    {list.map((item) => (
  • {item}
  • ))}
{t("rateLimit.cta")}{" "}
); }; const parseError = (error: Error) => { try { const parsed = JSON.parse(error.message); return parsed; } catch { return error.message; } }; export const useAIError = () => { const { t } = useTranslation("common"); const onError = (error: Error) => { console.error(error); const parsed = parseError(error); if (!isAPIError(parsed)) { return toast.error(error.message || t("error.general")); } if (parsed.code === "error.insufficientCredits") { return toast(); } if (parsed.code === "error.rateLimit") { return toast(); } }; return { onError }; };