import type { Meta, StoryObj } from '@storybook/vue3' import TitanIcon from './TitanIcon.vue' const meta = { component: TitanIcon, title: 'UI/TitanIcon', tags: ['autodocs'], argTypes: { name: { control: 'select', options: [ 'ui/casket', 'ui/casket-open', 'ui/casket-closed', 'ui/family', 'ui/fire', 'ui/question-mark', 'ui/tombstone', 'ui/urn', 'benefits/cart', 'benefits/truck', 'benefits/casket', 'benefits/heart' ], description: 'Icon name in namespace/name format' }, ariaLabel: { control: 'text', description: 'Accessibility label for screen readers' } } } satisfies Meta export default meta type Story = StoryObj /** * Default icon rendering with basic styling */ export const Default: Story = { args: { name: 'ui/casket' }, render: (args) => ({ components: { TitanIcon }, setup() { return { args } }, template: `
` }) } /** * All UI namespace icons */ export const UIIcons: Story = { render: () => ({ components: { TitanIcon }, setup() { const icons = [ 'ui/casket', 'ui/casket-open', 'ui/casket-closed', 'ui/family', 'ui/fire', 'ui/question-mark', 'ui/tombstone', 'ui/urn' ] return { icons } }, template: `

{{ icon }}

` }) } /** * All benefits namespace icons */ export const BenefitsIcons: Story = { render: () => ({ components: { TitanIcon }, setup() { const icons = [ 'benefits/cart', 'benefits/truck', 'benefits/casket', 'benefits/heart' ] return { icons } }, template: `

{{ icon }}

` }) } /** * Color variations using brand colors */ export const ColorVariations: Story = { render: () => ({ components: { TitanIcon }, template: `

Green

Yellow

Purple

Gray

` }) } /** * Size variations controlled by parent container */ export const SizeVariations: Story = { render: () => ({ components: { TitanIcon }, template: `

16px

24px

48px

96px

` }) } /** * Interactive playground with all controls */ export const Playground: Story = { args: { name: 'ui/family', ariaLabel: 'Family icon' }, render: (args) => ({ components: { TitanIcon }, setup() { return { args } }, template: `
` }) }