Skip to content

Commit f365795

Browse files
committed
refactor nav menu variants and fix gap in active items
1 parent 9e4b946 commit f365795

File tree

2 files changed

+16
-26
lines changed

2 files changed

+16
-26
lines changed

src/components/Nav/Menu/MenuContent.tsx

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,34 @@ import { NavItem, NavSections } from "../types"
99
import SubMenu from "./SubMenu"
1010
import { useNavMenu } from "./useNavMenu"
1111

12-
export const navMenu = tv({
12+
export const navMenuVariants = tv({
1313
slots: {
1414
base: "text-body",
15-
item: "w-full relative -me-4 py-4 hover:text-menu-active [&:hover_p]:text-menu-active focus-visible:text-menu-active [&:focus-visible_p]:text-menu-active hover:outline-0 hover:rounded-md hover:shadow-none focus-visible:outline-0 focus-visible:rounded-md focus-visible:shadow-none",
15+
item: "has-[button[data-state=open]]:rounded-s-md has-[button[data-state=open]]:rounded-e-none has-[button[data-state=open]]:-me-4 has-[button[data-state=open]]:pe-4",
16+
link: "w-full relative -me-4 py-4 hover:text-menu-active [&:hover_p]:text-menu-active focus-visible:text-menu-active [&:focus-visible_p]:text-menu-active hover:outline-0 rounded-md hover:shadow-none focus-visible:outline-0 focus-visible:rounded-md focus-visible:shadow-none",
1617
submenu: "grid h-full w-full grid-cols-1",
1718
},
1819
variants: {
1920
level: {
2021
1: {
2122
submenu: "grid-cols-3 bg-menu-1-background",
22-
item: "data-[active=true]:bg-menu-1-active-background hover:bg-menu-1-active-background focus-visible:bg-menu-1-active-background",
23+
item: "has-[button[data-state=open]]:bg-menu-1-active-background",
24+
link: "data-[active=true]:bg-menu-1-active-background hover:bg-menu-1-active-background focus-visible:bg-menu-1-active-background",
2325
},
2426
2: {
2527
submenu: "grid-cols-2 bg-menu-2-background",
26-
item: "hover:bg-menu-2-active-background focus-visible:bg-menu-2-active-background data-[active=true]:bg-menu-2-active-background",
28+
item: "has-[button[data-state=open]]:bg-menu-2-active-background",
29+
link: "hover:bg-menu-2-active-background focus-visible:bg-menu-2-active-background data-[active=true]:bg-menu-2-active-background",
2730
},
2831
3: {
2932
submenu: "grid-cols-1 bg-menu-3-background",
30-
item: "data-[active=true]:bg-menu-3-active-background hover:bg-menu-3-active-background",
33+
item: "has-[button[data-state=open]]:bg-menu-3-active-background",
34+
link: "data-[active=true]:bg-menu-3-active-background hover:bg-menu-3-active-background",
3135
},
3236
4: {
3337
submenu: "grid-cols-1 bg-menu-4-background",
34-
item: "data-[active=true]:bg-menu-4-active-background hover:bg-menu-4-active-background",
38+
item: "has-[button[data-state=open]]:bg-menu-4-active-background",
39+
link: "data-[active=true]:bg-menu-4-active-background hover:bg-menu-4-active-background",
3540
},
3641
},
3742
},
@@ -46,7 +51,7 @@ type MenuContentProps = {
4651
// Desktop Menu content
4752
const MenuContent = ({ items, isOpen, sections }: MenuContentProps) => {
4853
const { activeSection, containerVariants, onClose } = useNavMenu(sections)
49-
const { base } = navMenu()
54+
const { base } = navMenuVariants()
5055

5156
return (
5257
<Content asChild>

src/components/Nav/Menu/SubMenu.tsx

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { cleanPath } from "@/lib/utils/url"
2121
import type { Level, NavItem, NavSectionKey } from "../types"
2222

2323
import ItemContent from "./ItemContent"
24-
import { navMenu } from "./MenuContent"
24+
import { navMenuVariants } from "./MenuContent"
2525
import NextChevron from "./NextChevron"
2626
import { useSubMenu } from "./useSubMenu"
2727

@@ -43,7 +43,7 @@ type LvlContentProps = {
4343
*/
4444
const SubMenu = ({ lvl, items, activeSection, onClose }: LvlContentProps) => {
4545
const { asPath, locale, menuVariants } = useSubMenu()
46-
const { submenu, item: itemClasses } = navMenu({ level: lvl })
46+
const { submenu, item: itemClasses, link } = navMenuVariants({ level: lvl })
4747

4848
if (lvl > 3) return null
4949

@@ -65,26 +65,11 @@ const SubMenu = ({ lvl, items, activeSection, onClose }: LvlContentProps) => {
6565
const isLink = "href" in action
6666
const isActivePage = isLink && cleanPath(asPath) === action.href
6767

68-
const buttonClasses = cn(
69-
"no-underline text-body",
70-
itemClasses()
71-
)
68+
const buttonClasses = cn("no-underline text-body", link())
7269

7370
return (
7471
<Item key={label} asChild>
75-
<ListItem
76-
className="mb-2 last:mb-0"
77-
// TODO
78-
// sx={{
79-
// '&:has(button[data-state="open"])': {
80-
// roundedStart: "md",
81-
// roundedEnd: "none",
82-
// bg: menuColors.lvl[lvl].activeBackground,
83-
// me: -PADDING,
84-
// pe: PADDING,
85-
// },
86-
// }}
87-
>
72+
<ListItem className={cn("mb-2 last:mb-0", itemClasses())}>
8873
{isLink ? (
8974
<NextLink href={action.href!} passHref legacyBehavior>
9075
<NavigationMenuLink asChild>

0 commit comments

Comments
 (0)