import { commonArgTypes } from '@/lib/constants';
import { Meta } from '@storybook/vue3/*';
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupAction,
SidebarGroupLabel,
SidebarHeader,
SidebarInset,
SidebarMenu,
SidebarMenuAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarProvider,
SidebarRail,
SidebarTrigger
} from '@/lib/components/Sidebar';
import { Frame, Globe, Map, MoreHorizontal, PieChart, Plus } from 'lucide-vue-next';
const meta = {
title: 'Layout Component/Sidebar',
component: {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarInset,
SidebarMenu,
SidebarMenuAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarProvider,
SidebarRail,
SidebarTrigger
},
parameters: {
themes: {
themeOverride: 'dark'
},
docs: {
description: {
component: '시각적, 의미적으로 콘텐츠를 구분하는 선'
},
story: {
inline: false,
iframeHeight: 500
}
}
},
argTypes: {
scaling: {
...commonArgTypes.scaling,
description: 'Sidebar component 크기'
},
color: {
...commonArgTypes.color,
defaultValue: { summary: 'slate' },
description: 'Sidebar component 색상'
},
size: {
table: {
category: 'Props',
type: { summary: ['small', 'medium', 'large', 'fill-large'].join(' | ') }
},
control: { type: 'select' },
options: ['small', 'medium', 'large', 'fill-large'],
defaultValue: { summary: 'medium' },
description: 'Sidebar component 크기'
}
}
} as Meta;
export const Default = {
render: (args: any) => ({
components: {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarInset,
SidebarMenu,
SidebarMenuAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarProvider,
SidebarRail,
SidebarTrigger,
Frame,
Globe,
Map,
MoreHorizontal,
PieChart
},
setup() {
const data = {
projects: [
{
name: 'Design Engineering',
url: '#',
icon: Frame
},
{
name: 'Sales & Marketing',
url: '#',
icon: PieChart
},
{
name: 'Travel',
url: '#',
icon: Map
}
]
};
return { args, data };
},
template: `
Sidebar Header
Platform
Projects
{{ item.name }}
Footer
`
})
};
export default meta;
export const SidebarGroupEx = {
render: (args: any) => ({
components: {
Sidebar,
SidebarContent,
SidebarGroup,
SidebarGroupLabel,
SidebarMenu,
SidebarGroupAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarProvider,
Plus
},
setup() {
const data = {
projects: [
{
name: 'Design Engineering',
url: '#',
icon: Frame
},
{
name: 'Sales & Marketing',
url: '#',
icon: PieChart
},
{
name: 'Travel',
url: '#',
icon: Map
}
]
};
return { args, data };
},
template: `
Platform
Add Project
Platform2
Add Project
`
})
};
export const SidebarSubEx = {
render: (args: any) => ({
components: {
Sidebar,
SidebarContent,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarProvider,
SidebarMenuSub,
SidebarMenuSubItem,
SidebarMenuSubButton,
Plus
},
setup() {
const data = {
projects: [
{
name: 'Design Engineering',
url: '#',
icon: Frame
},
{
name: 'Sales & Marketing',
url: '#',
icon: PieChart
},
{
name: 'Travel',
url: '#',
icon: Map
}
]
};
return { args, data };
},
template: `
Getting Started
Introduction
Installation
Input component
DatePicker
TagsInput
TextArea
`
})
};
export const Small = {
render: (args: any) => ({
components: {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarInset,
SidebarMenu,
SidebarMenuAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarProvider,
SidebarRail,
SidebarTrigger,
Frame,
Globe,
Map,
MoreHorizontal,
PieChart
},
setup() {
const data = {
projects: [
{
name: 'Design Engineering',
url: '#',
icon: Frame
},
{
name: 'Sales & Marketing',
url: '#',
icon: PieChart
},
{
name: 'Travel',
url: '#',
icon: Map
}
]
};
return { args, data };
},
template: `
Sidebar Header
Platform
Projects
{{ item.name }}
Footer
`
})
};
export const Color = {
render: (args: any) => ({
components: {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarInset,
SidebarMenu,
SidebarMenuAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarProvider,
SidebarRail,
SidebarTrigger,
Frame,
Globe,
Map,
MoreHorizontal,
PieChart
},
setup() {
const data = {
projects: [
{
name: 'Design Engineering',
url: '#',
icon: Frame
},
{
name: 'Sales & Marketing',
url: '#',
icon: PieChart
},
{
name: 'Travel',
url: '#',
icon: Map
}
]
};
return { args, data };
},
template: `
Sidebar Header
Platform
Projects
{{ item.name }}
Footer
`
})
};