Openstatus
www.openstatus.dev
1"use client";
2
3import { useCookieState } from "@/hooks/use-cookie-state";
4import { useTRPC } from "@/lib/trpc/client";
5import { useQuery } from "@tanstack/react-query";
6import { NavBannerChecklist } from "./nav-banner-checklist";
7import { NavBannerUpgrade } from "./nav-banner-upgrade";
8
9const EXPIRES_IN = 7 * 24 * 60 * 60 * 1000; // in 7 days
10
11export function NavBanner() {
12 const trpc = useTRPC();
13 const { data: workspace } = useQuery(trpc.workspace.get.queryOptions());
14 const [openChecklist, setOpenChecklist] = useCookieState<"true" | "false">(
15 "sidebar_banner_checklist",
16 "true",
17 { expires: EXPIRES_IN },
18 );
19 const [openUpgrade, setOpenUpgrade] = useCookieState<"true" | "false">(
20 "sidebar_banner_upgrade",
21 "true",
22 { expires: EXPIRES_IN },
23 );
24
25 if (!workspace) return null;
26
27 if (openChecklist === "true") {
28 return <NavBannerChecklist handleClose={() => setOpenChecklist("false")} />;
29 }
30
31 if (openUpgrade === "true" && workspace.plan === "free") {
32 return <NavBannerUpgrade handleClose={() => setOpenUpgrade("false")} />;
33 }
34
35 return null;
36}