Skip to content

Commit cfa7e2b

Browse files
authored
Merge pull request #57 from oasisprotocol/mz/tabs-2
Add new variant to tabs
2 parents 82ac4a3 + 4d92623 commit cfa7e2b

2 files changed

Lines changed: 33 additions & 26 deletions

File tree

src/components/tabs/index.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,21 @@ import {
55
TabsTrigger as BaseTabsTrigger,
66
TabsContent as BaseTabsContent,
77
} from '../ui/tabs'
8+
import { cva, type VariantProps } from 'class-variance-authority'
89
import { cn } from '../../lib/utils'
910

11+
const tabsListVariants = cva('p-1 radius-md', {
12+
variants: {
13+
variant: {
14+
default: 'h-10 bg-muted',
15+
layout: 'w-full h-12 rounded-b-none bg-border',
16+
},
17+
},
18+
defaultVariants: {
19+
variant: 'default',
20+
},
21+
})
22+
1023
type TabsProps = React.ComponentProps<typeof BaseTabs>
1124

1225
export const Tabs = ({ className, children, ...props }: TabsProps) => (
@@ -15,10 +28,10 @@ export const Tabs = ({ className, children, ...props }: TabsProps) => (
1528
</BaseTabs>
1629
)
1730

18-
type TabsListProps = React.ComponentProps<typeof BaseTabsList>
31+
type TabsListProps = React.ComponentProps<typeof BaseTabsList> & VariantProps<typeof tabsListVariants>
1932

20-
export const TabsList = ({ className, children, ...props }: TabsListProps) => (
21-
<BaseTabsList className={cn('p-1 h-10 bg-muted radius-lg', className)} {...props}>
33+
export const TabsList = ({ className, children, variant, ...props }: TabsListProps) => (
34+
<BaseTabsList className={cn(tabsListVariants({ variant }), className)} {...props}>
2235
{children}
2336
</BaseTabsList>
2437
)

src/stories/Tabs/Tabs.stories.tsx

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,18 @@ export const Default: Story = {
4141
<TabsTrigger value="transactions">Transactions</TabsTrigger>
4242
<TabsTrigger value="events">Events</TabsTrigger>
4343
<TabsTrigger value="transfers">Transfers</TabsTrigger>
44+
<TabsTrigger value="disabled" disabled>
45+
Disabled
46+
</TabsTrigger>
4447
</TabsList>
4548
<TabsContent value="transactions">
46-
<div className="p-4 border rounded-lg">
47-
<p className="text-sm text-muted-foreground mt-2">TabsContent 1</p>
48-
</div>
49+
<p className="p-4 text-sm text-muted-foreground mt-2">TabsContent 1</p>
4950
</TabsContent>
5051
<TabsContent value="events">
51-
<div className="p-4 border rounded-lg">
52-
<p className="text-sm text-muted-foreground mt-2">TabsContent 2</p>
53-
</div>
52+
<p className="p-4 text-sm text-muted-foreground mt-2">TabsContent 2</p>
5453
</TabsContent>
5554
<TabsContent value="transfers">
56-
<div className="p-4 border rounded-lg">
57-
<p className="text-sm text-muted-foreground mt-2">TabsContent 3</p>
58-
</div>
55+
<p className="p-4 text-sm text-muted-foreground mt-2">TabsContent 3</p>
5956
</TabsContent>
6057
</>
6158
),
@@ -67,28 +64,25 @@ export const Default: Story = {
6764
},
6865
}
6966

70-
export const Disabled: Story = {
71-
args: {
72-
defaultValue: 'account',
73-
children: (
74-
<>
75-
<TabsList>
67+
export const LayoutVariant: Story = {
68+
render: () => (
69+
<div className="space-y-8 w-[600px]">
70+
<Tabs defaultValue="transactions">
71+
<TabsList variant="layout">
7672
<TabsTrigger value="transactions">Transactions</TabsTrigger>
77-
<TabsTrigger value="events" disabled>
78-
Events
79-
</TabsTrigger>
73+
<TabsTrigger value="events">Events</TabsTrigger>
8074
</TabsList>
8175
<TabsContent value="transactions">
82-
<div className="p-4 border rounded-lg">
76+
<div className="p-4 border rounded-b-md">
8377
<p className="text-sm text-muted-foreground mt-2">TabsContent 1</p>
8478
</div>
8579
</TabsContent>
8680
<TabsContent value="events">
87-
<div className="p-4 border rounded-lg">
81+
<div className="p-4 border rounded-b-md">
8882
<p className="text-sm text-muted-foreground mt-2">TabsContent 2</p>
8983
</div>
9084
</TabsContent>
91-
</>
92-
),
93-
},
85+
</Tabs>
86+
</div>
87+
),
9488
}

0 commit comments

Comments
 (0)