73 lines
2.0 KiB
TypeScript

"use client";
import { useSearchParams } from "next/navigation";
import { useEffect, useMemo } from "react";
import { useI18n } from "@/core/i18n/hooks";
import { cn } from "@/lib/utils";
import { AuroraText } from "../ui/aurora-text";
let waved = false;
function WelcomeDescription({ children }: { children: string }) {
return (
<p className="max-w-full text-wrap break-words whitespace-pre-line">
{children}
</p>
);
}
export function Welcome({
className,
mode,
}: {
className?: string;
mode?: "ultra" | "pro" | "thinking" | "flash";
}) {
const { t } = useI18n();
const searchParams = useSearchParams();
const isUltra = useMemo(() => mode === "ultra", [mode]);
const colors = useMemo(() => {
if (isUltra) {
return ["#efefbb", "#e9c665", "#e3a812"];
}
return ["var(--color-foreground)"];
}, [isUltra]);
useEffect(() => {
waved = true;
}, []);
return (
<div
className={cn(
"mx-auto flex w-full max-w-full flex-col items-center justify-center gap-2 px-4 py-4 text-center sm:px-8",
className,
)}
>
<div className="max-w-full text-2xl font-bold">
{searchParams.get("mode") === "skill" ? (
`✨ ${t.welcome.createYourOwnSkill} ✨`
) : (
<div className="flex max-w-full flex-wrap items-center justify-center gap-2">
<div className={cn("inline-block", !waved ? "animate-wave" : "")}>
{isUltra ? "🚀" : "👋"}
</div>
<AuroraText colors={colors}>{t.welcome.greeting}</AuroraText>
</div>
)}
</div>
{searchParams.get("mode") === "skill" ? (
<div className="text-muted-foreground max-w-full text-sm">
<WelcomeDescription>
{t.welcome.createYourOwnSkillDescription}
</WelcomeDescription>
</div>
) : (
<div className="text-muted-foreground max-w-full text-sm">
<WelcomeDescription>{t.welcome.description}</WelcomeDescription>
</div>
)}
</div>
);
}