feat: storybook 추가

This commit is contained in:
2026-04-14 10:38:36 +09:00
parent 52f8c30b2e
commit 8d6bff88d6
23 changed files with 1687 additions and 10 deletions

View File

@@ -0,0 +1,106 @@
import type { Meta, StoryObj } from '@storybook/react'
import { Button, TooltipTrigger } from 'react-aria-components'
import { Tooltip } from './Tooltip'
const meta = {
title: 'Components/Tooltip',
component: Tooltip,
args: {
children: '툴팁 내용',
},
argTypes: {
bgColor: {
control: 'select',
options: ['white', 'tertiary'],
},
},
} satisfies Meta<typeof Tooltip>
export default meta
type Story = StoryObj<typeof meta>
export const Default: Story = {
render: () => (
<TooltipTrigger>
<Button className="px-4 py-2 bg-primary text-white rounded"> </Button>
<Tooltip> .</Tooltip>
</TooltipTrigger>
),
}
export const WhiteBackground: Story = {
render: () => (
<TooltipTrigger>
<Button className="px-4 py-2 bg-primary text-white rounded"> </Button>
<Tooltip bgColor="white"> .</Tooltip>
</TooltipTrigger>
),
}
export const TertiaryBackground: Story = {
render: () => (
<TooltipTrigger>
<Button className="px-4 py-2 bg-primary text-white rounded">Tertiary </Button>
<Tooltip bgColor="tertiary">Tertiary .</Tooltip>
</TooltipTrigger>
),
}
export const LongContent: Story = {
render: () => (
<TooltipTrigger>
<Button className="px-4 py-2 bg-primary text-white rounded"> </Button>
<Tooltip>
. 200px로 .
.
</Tooltip>
</TooltipTrigger>
),
}
export const MultilineContent: Story = {
render: () => (
<TooltipTrigger>
<Button className="px-4 py-2 bg-primary text-white rounded"> </Button>
<Tooltip>{`첫 번째 줄\n두 번째 줄\n세 번째 줄`}</Tooltip>
</TooltipTrigger>
),
}
export const PlacementVariants: Story = {
render: () => (
<div className="flex gap-8 p-16">
<TooltipTrigger>
<Button className="px-4 py-2 bg-gray-200 rounded">Top ()</Button>
<Tooltip placement="top"> </Tooltip>
</TooltipTrigger>
<TooltipTrigger>
<Button className="px-4 py-2 bg-gray-200 rounded">Bottom</Button>
<Tooltip placement="bottom"> </Tooltip>
</TooltipTrigger>
<TooltipTrigger>
<Button className="px-4 py-2 bg-gray-200 rounded">Left</Button>
<Tooltip placement="left"> </Tooltip>
</TooltipTrigger>
<TooltipTrigger>
<Button className="px-4 py-2 bg-gray-200 rounded">Right</Button>
<Tooltip placement="right"> </Tooltip>
</TooltipTrigger>
</div>
),
}
export const AllBackgroundColors: Story = {
render: () => (
<div className="flex gap-8 p-8">
<TooltipTrigger>
<Button className="px-4 py-2 bg-gray-200 rounded">White</Button>
<Tooltip bgColor="white">White </Tooltip>
</TooltipTrigger>
<TooltipTrigger>
<Button className="px-4 py-2 bg-gray-200 rounded">Tertiary</Button>
<Tooltip bgColor="tertiary">Tertiary </Tooltip>
</TooltipTrigger>
</div>
),
}

View File

@@ -1,4 +1,4 @@
import React from 'react';
import type { ReactNode } from 'react';
import {
Tooltip as AriaTooltip,
TooltipProps as AriaTooltipProps,
@@ -21,7 +21,7 @@ const style = tv({
export interface TooltipProps extends Omit<AriaTooltipProps, 'children'> {
bgColor?: 'white' | 'tertiary';
children: React.ReactNode;
children: ReactNode;
}
export function Tooltip({ children, ...props }: TooltipProps) {