import VBadge from './VBadge.vue'; import type { Meta, StoryObj } from '@storybook/vue3'; const meta: Meta = { title: 'Valerie/VBadge', component: VBadge, tags: ['autodocs'], argTypes: { text: { control: 'text' }, variant: { control: 'select', options: ['secondary', 'accent', 'settled', 'pending'], }, sticky: { control: 'boolean' }, }, parameters: { // Optional: Add notes about sticky behavior if it requires parent positioning notes: 'The `sticky` prop adds a `badge-sticky` class when the variant is `accent`. Actual sticky positioning (e.g., `position: absolute` or `position: sticky`) should be handled by the parent component or additional global styles if needed, as the component itself does not enforce absolute positioning.', }, }; export default meta; type Story = StoryObj; export const Secondary: Story = { args: { text: 'Secondary', variant: 'secondary', }, }; export const Accent: Story = { args: { text: 'Accent', variant: 'accent', }, }; export const Settled: Story = { args: { text: 'Settled', variant: 'settled', }, }; export const Pending: Story = { args: { text: 'Pending', variant: 'pending', }, }; export const AccentSticky: Story = { args: { text: 'Sticky', variant: 'accent', sticky: true, }, // To demonstrate the intended sticky positioning from the design, // we can wrap the component in a relatively positioned div for the story. decorators: [ () => ({ template: `
Parent Element
`, }), ], // parameters: { // notes: 'This story demonstrates the sticky badge in a positioned context. The `badge-sticky` class itself only adds a border in this example. The absolute positioning shown (top: -4px, right: -4px relative to parent) needs to be applied by the parent or via styles targeting `.badge-sticky` in context.', // } // The following is a more direct way to show the absolute positioning if we add it to the component for the sticky case // For now, the component itself doesn't add absolute positioning, so this shows how a parent might do it. // If VBadge itself were to handle `position:absolute` when `sticky` and `variant=='accent'`, this would be different. }; // Story to show that `sticky` prop only affects `accent` variant export const StickyWithNonAccentVariant: Story = { args: { text: 'Not Sticky', variant: 'secondary', // Not 'accent' sticky: true, }, parameters: { notes: 'The `sticky` prop only applies the `.badge-sticky` class (and its associated styles like a border) when the variant is `accent`. For other variants, `sticky: true` has no visual effect on the badge itself.', } }; export const LongText: Story = { args: { text: 'This is a very long badge text', variant: 'primary', // Assuming primary is a valid variant or falls back to default }, };