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 Hello World Projects {{ item.name }} More 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 Hello World Platform2 Add Project Hello Lui ` }) }; 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 Hello World Projects {{ item.name }} More 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 Hello World Projects {{ item.name }} More Footer
` }) };