68 lines
3.0 KiB
TypeScript
68 lines
3.0 KiB
TypeScript
import { useParams } from "react-router";
|
|
import { useAppOrAdminData } from "~/utils/data/useAppOrAdminData";
|
|
import AddFeedbackButton from "./buttons/AddFeedbackButton";
|
|
import ChatSupportButton from "./buttons/ChatSupportButton";
|
|
import CurrentSubscriptionButton from "./buttons/CurrentSubscriptionButton";
|
|
import OnboardingButton from "./buttons/OnboardingButton";
|
|
import ProfileButton from "./buttons/ProfileButton";
|
|
import QuickActionsButton from "./buttons/QuickActionsButton";
|
|
import SearchButton from "./buttons/SearchButton";
|
|
import NotificationsButton from "./buttons/NotificationsButton";
|
|
import { adminPath, appPath } from "~/utils/app/CanonicalUrlUtils";
|
|
|
|
export default function NavBar({
|
|
layout,
|
|
title,
|
|
buttons,
|
|
onOpenCommandPalette,
|
|
onOpenOnboardingModal,
|
|
children,
|
|
}: {
|
|
layout?: string;
|
|
title?: string;
|
|
buttons: {
|
|
mySubscription: boolean;
|
|
feedback: boolean;
|
|
chatSupport: boolean;
|
|
quickActions: boolean;
|
|
search: boolean;
|
|
notifications: boolean;
|
|
onboarding: boolean;
|
|
userProfile: boolean;
|
|
};
|
|
onOpenCommandPalette: () => void;
|
|
onOpenOnboardingModal: () => void;
|
|
children?: React.ReactNode;
|
|
}) {
|
|
const appOrAdminData = useAppOrAdminData();
|
|
const params = useParams();
|
|
const notificationsPath =
|
|
layout === "admin" ? adminPath("notifications", { mode: "host-aware" }) : params.tenant ? appPath({ tenantSlug: params.tenant, path: "notifications", mode: "host-aware" }) : "/notifications";
|
|
return (
|
|
<div className="flex flex-1 justify-between space-x-2">
|
|
<div className="flex flex-1 items-center">{title && <div className="font-extrabold">{title}</div>}</div>
|
|
<div className="flex items-center space-x-2 md:ml-6">
|
|
{/* {layout === "app" && (
|
|
<CreditsRemaining
|
|
feature={appOrAdminData.featureSyncs}
|
|
redirectTo={appOrAdminData.currentTenant ? `/${appOrAdminData.currentTenant.slug}/settings/subscription` : "/settings/subscription"}
|
|
/>
|
|
)} */}
|
|
{buttons.onboarding && appOrAdminData?.onboardingSession && (
|
|
<OnboardingButton item={appOrAdminData?.onboardingSession} onClick={onOpenOnboardingModal} />
|
|
)}
|
|
{layout === "app" && buttons.mySubscription && <CurrentSubscriptionButton />}
|
|
{/* <LocaleSelector /> */}
|
|
{buttons.notifications && appOrAdminData?.user && <NotificationsButton to={notificationsPath} />}
|
|
{buttons.search && <SearchButton onClick={onOpenCommandPalette} />}
|
|
{layout === "app" && buttons.feedback && <AddFeedbackButton />}
|
|
{layout === "app" && buttons.chatSupport && <ChatSupportButton />}
|
|
{layout === "app" && buttons.quickActions && <QuickActionsButton entities={appOrAdminData?.entities?.filter((f) => f.showInSidebar)} />}
|
|
{/* {(layout === "app" || layout === "admin") && <ThemeSelector variant="secondary" />} */}
|
|
{(layout === "app" || layout === "admin") && buttons.userProfile && <ProfileButton user={appOrAdminData?.user} layout={layout} />}
|
|
{children}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|