Products
-
-
-
+
);
}
diff --git a/apps/web/src/components/global/navbar/NavProductDropdownMenu_DEPRECATED.tsx b/apps/web/src/components/global/navbar/NavProductPopover_DEPRECATED.tsx
similarity index 72%
rename from apps/web/src/components/global/navbar/NavProductDropdownMenu_DEPRECATED.tsx
rename to apps/web/src/components/global/navbar/NavProductPopover_DEPRECATED.tsx
index 45f62de5c..ab23e3408 100644
--- a/apps/web/src/components/global/navbar/NavProductDropdownMenu_DEPRECATED.tsx
+++ b/apps/web/src/components/global/navbar/NavProductPopover_DEPRECATED.tsx
@@ -1,9 +1,11 @@
import clsx from 'clsx';
+import { useState } from 'react';
import { RiArrowDownSLine } from 'react-icons/ri';
+import { useDebounce } from 'usehooks-ts';
import LogoMark from '~/components/global/logos/LogoMark';
import ProjectsLogo from '~/components/global/logos/ProjectsLogo';
-import NavProductDropdownMenuContent from '~/components/global/navbar/NavProductDropdownMenuContent';
+import NavProductPopoverContent from '~/components/global/navbar/NavProductPopoverContent';
import {
themeBackgroundElementEmphasizedStateColor_Hover,
themeBackgroundElementPressedStateColor_Active,
@@ -14,7 +16,7 @@ import {
import { useProductMenuUnseenIndicator } from '../product-theme/useProductMenuUnseenIndicator';
-import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
+import * as PopoverPrimitive from '@radix-ui/react-popover';
type Props = Readonly<{
product: 'interviews' | 'projects';
@@ -34,7 +36,7 @@ const buttonBaseClassname = clsx(
themeBackgroundElementPressedStateColor_Active,
);
-export default function NavProductDropdownMenu_DEPRECATED({
+export default function NavProductPopover_DEPRECATED({
variant,
product,
}: Props) {
@@ -43,10 +45,24 @@ export default function NavProductDropdownMenu_DEPRECATED({
}
const [showUnseenIndicator] = useProductMenuUnseenIndicator();
+ const [open, setOpen] = useState(false);
+ // To debounce open state when quick hovering on and out
+ const debouncedOpen = useDebounce(open, 100);
+
+ function handleMouseEnter() {
+ setOpen(true);
+ }
+
+ function handleMouseLeave() {
+ setOpen(false);
+ }
return (
-
-
+
+
{variant === 'full' ? (
-
-
-
-
+
+
+
+
+
);
}
diff --git a/apps/web/src/components/global/sidebar/Sidebar.tsx b/apps/web/src/components/global/sidebar/Sidebar.tsx
index baa59da03..b64611525 100644
--- a/apps/web/src/components/global/sidebar/Sidebar.tsx
+++ b/apps/web/src/components/global/sidebar/Sidebar.tsx
@@ -25,8 +25,8 @@ import SidebarColorSchemeSubMenu from './SidebarColorSchemeSubMenu';
import type { SidebarLinkEntity } from './SidebarLinksSection';
import SidebarLinksSection from './SidebarLinksSection';
import NavProductDropdownMenu, {
- NavProductDropdownMenuLogoOnly,
-} from '../navbar/NavProductDropdownMenu';
+ NavProductPopoverLogoOnly,
+} from '../navbar/NavProductPopover';
export function SidebarCollapsed({
moreMenuItems,
@@ -61,7 +61,7 @@ export function SidebarCollapsed({
'py-4',
)}>
-
+
{topAddonElements}
diff --git a/apps/web/src/components/global/sidebar/Sidebar_DEPRECATED.tsx b/apps/web/src/components/global/sidebar/Sidebar_DEPRECATED.tsx
index 7c260bf59..ba15d7980 100644
--- a/apps/web/src/components/global/sidebar/Sidebar_DEPRECATED.tsx
+++ b/apps/web/src/components/global/sidebar/Sidebar_DEPRECATED.tsx
@@ -20,7 +20,7 @@ import type { NavbarTopLevelItem } from '~/components/ui/Navbar/NavTypes';
import SidebarAuthDropdownItem from './SidebarAuthDropdownItem';
import SidebarColorSchemeSubMenu from './SidebarColorSchemeSubMenu';
-import NavProductDropdownMenu_DEPRECATED from '../navbar/NavProductDropdownMenu_DEPRECATED';
+import NavProductPopover_DEPRECATED from '../navbar/NavProductPopover_DEPRECATED';
export type SidebarItem = NavbarTopLevelItem;
@@ -38,9 +38,7 @@ export function SidebarCollapsed({
moreMenuItems: React.ReactElement | false | null | undefined;
notificationItem?: React.ReactElement | false | null | undefined;
onCollapseClick: () => void;
- product: React.ComponentProps<
- typeof NavProductDropdownMenu_DEPRECATED
- >['product'];
+ product: React.ComponentProps['product'];
showPremiumDiscord: boolean;
sidebarItems: SidebarItems;
topAddonElements?: React.ReactNode;
@@ -56,7 +54,7 @@ export function SidebarCollapsed({
'relative h-full',
'px-3 py-4',
)}>
-
+
{topAddonElements}
{startItems.map((item) => (
@@ -156,9 +154,7 @@ export function SidebarExpanded({
moreMenuItems: React.ReactElement | false | null | undefined;
notificationItem?: React.ReactElement | false | null | undefined;
onCollapseClick?: () => void;
- product: React.ComponentProps<
- typeof NavProductDropdownMenu_DEPRECATED
- >['product'];
+ product: React.ComponentProps['product'];
renderBottomAddonElements?: (fadeInClassname: string) => React.ReactNode;
renderTopAddonElements?: (fadeInClassname: string) => React.ReactNode;
sidebarItems: SidebarItems;
@@ -173,7 +169,7 @@ export function SidebarExpanded({
return (