"use client"; import classNames from "classnames"; import { AnimatePresence, motion } from "framer-motion"; import { usePathname } from "next/navigation"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; import { subdomainSuffix } from "@calcom/features/ee/organizations/lib/orgDomains"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { Avatar } from "@calcom/ui/components/avatar"; import { Button } from "@calcom/ui/components/button"; import { Icon, type IconName } from "@calcom/ui/components/icon"; type OnboardingBrowserViewProps = { avatar?: string | null; name?: string; bio?: string; username?: string | null; teamSlug?: string; }; const getDisplayUrl = ( orgSlug: string | null | undefined, username: string | null | undefined, teamSlug: string | undefined ): string => { if (orgSlug) { return teamSlug !== undefined ? `${orgSlug}.${subdomainSuffix()}/team/${teamSlug || ""}` : `${orgSlug}.${subdomainSuffix()}/${username || ""}`; } const webappUrl = WEBAPP_URL.replace(/^https?:\/\//, ""); return teamSlug !== undefined ? `${webappUrl}/team/${teamSlug || ""}` : `${webappUrl}/${username || ""}`; }; export const OnboardingBrowserView = ({ avatar, name, bio, username, teamSlug, }: OnboardingBrowserViewProps) => { const { t } = useLocale(); const pathname = usePathname(); const orgBranding = useOrgBranding(); const displayUrl = getDisplayUrl(orgBranding?.slug, username, teamSlug); // Animation variants for entry and exit const containerVariants = { initial: { opacity: 0, y: -20, }, animate: { opacity: 1, y: 0, }, exit: { opacity: 0, y: 20, }, }; const events: Array<{ title: string; description: string; duration: number; icon: IconName; }> = [ { title: t("onboarding_browser_view_demo"), description: t("onboarding_browser_view_demo_description"), duration: 15, icon: "bell", }, { title: t("onboarding_browser_view_quick_meeting"), description: t("onboarding_browser_view_quick_meeting_description"), duration: 15, icon: "bell", }, { title: t("onboarding_browser_view_longer_meeting"), description: t("onboarding_browser_view_longer_meeting_description"), duration: 30, icon: "clock", }, { title: t("in_person_meeting"), description: t("onboarding_browser_view_in_person_description"), duration: 120, icon: "map-pin", }, { title: t("onboarding_browser_view_ask_question"), description: t("onboarding_browser_view_ask_question_description"), duration: 15, icon: "message-circle", }, ]; return (
{displayUrl}
{bio || t("onboarding_browser_view_default_bio")}
{event.description}