1
+ 'use client'
2
+
1
3
import {
2
4
Tab as HeadlessTab ,
3
5
TabGroup ,
@@ -20,7 +22,7 @@ function isTabObjectItem(item: unknown): item is TabObjectItem {
20
22
return ! ! item && typeof item === 'object' && 'label' in item
21
23
}
22
24
23
- function Tabs_ ( {
25
+ export function Tabs ( {
24
26
items,
25
27
selectedIndex : _selectedIndex ,
26
28
defaultIndex = 0 ,
@@ -97,14 +99,25 @@ function Tabs_({
97
99
< HeadlessTab
98
100
key = { index }
99
101
disabled = { isTabObjectItem ( item ) && item . disabled }
100
- className = { cn (
101
- '_ring-inset' ,
102
- '_rounded-t _p-2 _font-medium _leading-5 _transition-colors' ,
103
- '_-mb-0.5 _select-none _border-b-2' ,
104
- 'data-[selected]:!_border-current data-[selected]:!_text-primary-600' ,
105
- '_border-transparent _text-gray-600 hover:_border-gray-200 hover:_text-black dark:_text-gray-200 dark:hover:_border-neutral-800 dark:hover:_text-white' ,
106
- 'disabled:_pointer-events-none disabled:_text-gray-400 disabled:dark:_text-neutral-600'
107
- ) }
102
+ className = { ( { selected, disabled, hover } ) =>
103
+ cn (
104
+ '_ring-inset' ,
105
+ '_rounded-t _p-2 _font-medium _leading-5 _transition-colors' ,
106
+ '_-mb-0.5 _select-none _border-b-2' ,
107
+ selected
108
+ ? '_border-current'
109
+ : hover
110
+ ? '_border-gray-200 dark:_border-neutral-800'
111
+ : '_border-transparent' ,
112
+ selected
113
+ ? '_text-primary-600'
114
+ : disabled
115
+ ? '_text-gray-400 dark:_text-neutral-600 _pointer-events-none'
116
+ : hover
117
+ ? '_text-black dark:_text-white'
118
+ : '_text-gray-600 dark:_text-gray-200'
119
+ )
120
+ }
108
121
>
109
122
{ isTabObjectItem ( item ) ? item . label : item }
110
123
</ HeadlessTab >
@@ -115,7 +128,7 @@ function Tabs_({
115
128
)
116
129
}
117
130
118
- function Tab ( {
131
+ export function Tab ( {
119
132
children,
120
133
// For SEO display all the Panel in the DOM and set `display: none;` for those that are not selected
121
134
unmount = false ,
@@ -127,5 +140,3 @@ function Tab({
127
140
</ TabPanel >
128
141
)
129
142
}
130
-
131
- export const Tabs = Object . assign ( Tabs_ , { displayName : 'Tabs' , Tab } )
0 commit comments