import type { Meta, StoryObj } from '@storybook/vue3-vite' import { ChevronLeft, ChevronRight, Download, Package, Save, Settings, Trash2, X } from 'lucide-vue-next' import IconTextButton from './IconTextButton.vue' const meta: Meta = { title: 'Components/Button/IconTextButton', component: IconTextButton, tags: ['autodocs'], argTypes: { label: { control: 'text' }, size: { control: { type: 'select' }, options: ['sm', 'md'] }, type: { control: { type: 'select' }, options: ['primary', 'secondary', 'transparent'] }, iconPosition: { control: { type: 'select' }, options: ['left', 'right'] }, onClick: { action: 'clicked' } } } export default meta type Story = StoryObj export const Primary: Story = { render: (args) => ({ components: { IconTextButton, Package }, setup() { return { args } }, template: ` ` }), args: { label: 'Deploy', type: 'primary', size: 'md' } } export const Secondary: Story = { render: (args) => ({ components: { IconTextButton, Settings }, setup() { return { args } }, template: ` ` }), args: { label: 'Settings', type: 'secondary', size: 'md' } } export const Transparent: Story = { render: (args) => ({ components: { IconTextButton, X }, setup() { return { args } }, template: ` ` }), args: { label: 'Cancel', type: 'transparent', size: 'md' } } export const WithIconRight: Story = { render: (args) => ({ components: { IconTextButton, ChevronRight }, setup() { return { args } }, template: ` ` }), args: { label: 'Next', type: 'primary', size: 'md', iconPosition: 'right' } } export const Small: Story = { render: (args) => ({ components: { IconTextButton, Save }, setup() { return { args } }, template: ` ` }), args: { label: 'Save', type: 'primary', size: 'sm' } } export const AllVariants: Story = { render: () => ({ components: { IconTextButton, Download, Settings, Trash2, ChevronRight, ChevronLeft, Save }, template: `
` }), parameters: { controls: { disable: true }, actions: { disable: true } } }