Skip to content

Commit 50f33f3

Browse files
authoredNov 6, 2024··
Accept tabClassName (#3663)
* Accept tabClassName * Add type import prefix * Add a changeset * Try to fix lint again
1 parent 6aa125d commit 50f33f3

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed
 

‎.changeset/slimy-shoes-poke.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'nextra': patch
3+
---
4+
5+
Add tabClassName to Tabs props

‎packages/nextra/src/client/components/tabs/tabs.tsx

+14-7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
TabPanels
99
} from '@headlessui/react'
1010
import type {
11+
TabProps as HeadlessTabProps,
1112
TabGroupProps,
1213
TabListProps,
1314
TabPanelProps
@@ -32,16 +33,18 @@ export const Tabs: FC<
3233
items: (TabItem | TabObjectItem)[]
3334
children: ReactNode
3435
storageKey?: string
35-
} & Pick<TabGroupProps, 'defaultIndex' | 'selectedIndex' | 'onChange'> &
36-
Pick<TabListProps, 'className'>
36+
className?: TabListProps['className']
37+
tabClassName?: HeadlessTabProps['className']
38+
} & Pick<TabGroupProps, 'defaultIndex' | 'selectedIndex' | 'onChange'>
3739
> = ({
3840
items,
3941
children,
4042
storageKey,
4143
defaultIndex = 0,
4244
selectedIndex: _selectedIndex,
4345
onChange,
44-
className
46+
className,
47+
tabClassName
4548
}) => {
4649
const [selectedIndex, setSelectedIndex] = useState(defaultIndex)
4750

@@ -109,8 +112,9 @@ export const Tabs: FC<
109112
<HeadlessTab
110113
key={index}
111114
disabled={isTabObjectItem(item) && item.disabled}
112-
className={({ selected, disabled, hover, focus }) =>
113-
cn(
115+
className={args => {
116+
const { selected, disabled, hover, focus } = args
117+
return cn(
114118
focus && 'nextra-focusable _ring-inset',
115119
selected && '_outline-none',
116120
'_whitespace-nowrap',
@@ -127,9 +131,12 @@ export const Tabs: FC<
127131
? '_text-gray-400 dark:_text-neutral-600 _pointer-events-none'
128132
: hover
129133
? '_text-black dark:_text-white'
130-
: '_text-gray-600 dark:_text-gray-200'
134+
: '_text-gray-600 dark:_text-gray-200',
135+
typeof tabClassName === 'function'
136+
? tabClassName(args)
137+
: tabClassName
131138
)
132-
}
139+
}}
133140
>
134141
{isTabObjectItem(item) ? item.label : item}
135142
</HeadlessTab>

0 commit comments

Comments
 (0)
Please sign in to comment.