import type { Meta } from '@storybook/vue3';
import { commonArgTypes } from '@/lib/constants';
import DropdownMenu from '@/lib/components/DropdownMenu';
import Button from '@/lib/components/Button';
import { Icon } from '@iconify/vue';
import Gnb from '@/lib/components/Gnb';
const meta = {
title: 'Navigation Component/Gnb',
component: Gnb.Root,
parameters: {
layout: 'centered',
themes: {
themeOverride: 'dark'
},
docs: {
description: {
component:
'상단에 위치하며 주요 네비게이션 링크와 로고, 사용자 메뉴 등을 포함하는 UI 요소입니다.'
}
}
},
argTypes: {
size: {
table: {
category: 'Props',
type: { summary: ['small', 'medium', 'large'].join(' | ') }
},
control: { type: 'select' },
options: ['small', 'medium', 'large'],
defaultValue: { summary: 'medium' },
description: 'gnb 크기'
},
scaling: {
...commonArgTypes.scaling,
description: 'gnb 비율'
},
color: {
...commonArgTypes.color,
description: 'gnb 색상',
defaultValue: { summary: 'none' }
},
default: { table: { disable: true } }
}
} as Meta;
export default meta;
const commonComponents = {
GnbRoot: Gnb.Root,
GnbLogo: Gnb.Logo,
GnbMenu: Gnb.Menu,
GnbMenuItem: Gnb.MenuItem,
GnbInfo: Gnb.Info,
Button,
Icon
};
export const Default = {
render: (args: any) => ({
components: commonComponents,
setup() {
return { args };
},
template: `
Document
Components
Themes
Colors
`
}),
parameters: {
docs: {
source: {
code: `
Document
Components
Themes
Colors
`
}
}
}
};
export const CustomContent = {
render: (args: any) => ({
components: {
...commonComponents,
DropdownMenuRoot: DropdownMenu.Root,
DropdownMenuTrigger: DropdownMenu.Trigger,
DropdownMenuContent: DropdownMenu.Content,
DropdownMenuItem: DropdownMenu.Item
},
setup() {
return { args };
},
template: `
Document
Components
Themes
Colors
Light
Dark
`
}),
parameters: {
docs: {
source: {
code: `
Document
Components
Themes
Colors
Light
Dark
`
}
}
}
};