diff --git a/src/components/tabs/tabs.stories.ts b/src/components/tabs/tabs.stories.ts new file mode 100644 index 0000000..5a1a669 --- /dev/null +++ b/src/components/tabs/tabs.stories.ts @@ -0,0 +1,91 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite'; +import { ref } from 'vue'; +import Text from '../text/text.vue'; +import Tabs from './tabs.vue'; + +const meta = { + title: 'Common/Tabs', + component: Tabs, + argTypes: { + modelValue: { + control: 'text', + }, + tabs: { + control: 'object', + }, + }, + args: { + modelValue: 'home', + tabs: [ + { value: 'home', label: 'Home' }, + { value: 'profile', label: 'Profile' }, + { value: 'settings', label: 'Settings' }, + ], + }, + render: args => ({ + components: { Tabs }, + setup() { + const activeTab = ref(args.modelValue); + return { args, activeTab }; + }, + template: ``, + }), +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const DefaultTabs: Story = {}; + +export const TabsWithIcons: Story = { + args: { + tabs: [ + { value: 'home', label: 'Home', icon: 'i-ri-home-line' }, + { value: 'profile', label: 'Profile', icon: 'i-ri-user-line' }, + { value: 'settings', label: 'Settings', icon: 'i-ri-settings-line' }, + ], + }, +}; + +export const IconOnlyTabs: Story = { + args: { + tabs: [ + { value: 'home', icon: 'i-ri-home-line' }, + { value: 'profile', icon: 'i-ri-user-line' }, + { value: 'settings', icon: 'i-ri-settings-line' }, + ], + }, +}; + +export const TabsWithContent: Story = { + render: () => ({ + components: { Tabs, Text }, + setup() { + const tabs = [ + { value: 'home', label: 'Home' }, + { value: 'profile', label: 'Profile' }, + { value: 'settings', label: 'Settings' }, + ]; + + const selection = ref(tabs[0].value); + + return { selection, tabs }; + }, + template: ` + + + +

This is the home content. Welcome to the home tab!

+
+ + +

This is the profile content. Here you can manage your profile settings.

+
+ + +

This is the settings content. Configure your preferences here.

+
+ `, + }), +}; diff --git a/src/components/tabs/tabs.vue b/src/components/tabs/tabs.vue new file mode 100644 index 0000000..b64ab58 --- /dev/null +++ b/src/components/tabs/tabs.vue @@ -0,0 +1,36 @@ + + +