Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/components/layouts/NavBar.tsx
T

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>
);
}