diff --git a/src/components/common/StatusBadge.stories.ts b/src/components/common/StatusBadge.stories.ts new file mode 100644 index 000000000..39ef6253c --- /dev/null +++ b/src/components/common/StatusBadge.stories.ts @@ -0,0 +1,95 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import StatusBadge from './StatusBadge.vue' + +const meta = { + title: 'Common/StatusBadge', + component: StatusBadge, + tags: ['autodocs'], + argTypes: { + label: { control: 'text' }, + severity: { + control: 'select', + options: ['default', 'secondary', 'warn', 'danger', 'contrast'] + }, + variant: { + control: 'select', + options: ['label', 'dot', 'circle'] + } + }, + args: { + label: 'Status', + severity: 'default' + } +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const Failed: Story = { + args: { + label: 'Failed', + severity: 'danger' + } +} + +export const Finished: Story = { + args: { + label: 'Finished', + severity: 'contrast' + } +} + +export const Dot: Story = { + args: { + label: undefined, + variant: 'dot', + severity: 'danger' + } +} + +export const Circle: Story = { + args: { + label: '3', + variant: 'circle' + } +} + +export const AllSeverities: Story = { + render: () => ({ + components: { StatusBadge }, + template: ` +
+ + + + + +
+ ` + }) +} + +export const AllVariants: Story = { + render: () => ({ + components: { StatusBadge }, + template: ` +
+
+ + label +
+
+ + dot +
+
+ + circle +
+
+ ` + }) +} diff --git a/src/components/common/StatusBadge.vue b/src/components/common/StatusBadge.vue index 46ef7ac79..a29cd966d 100644 --- a/src/components/common/StatusBadge.vue +++ b/src/components/common/StatusBadge.vue @@ -1,30 +1,27 @@ diff --git a/src/components/common/statusBadge.variants.ts b/src/components/common/statusBadge.variants.ts new file mode 100644 index 000000000..479a0dda8 --- /dev/null +++ b/src/components/common/statusBadge.variants.ts @@ -0,0 +1,26 @@ +import type { VariantProps } from 'cva' +import { cva } from 'cva' + +export const statusBadgeVariants = cva({ + base: 'inline-flex items-center justify-center rounded-full', + variants: { + severity: { + default: 'bg-primary-background text-base-foreground', + secondary: 'bg-secondary-background text-base-foreground', + warn: 'bg-warning-background text-base-background', + danger: 'bg-destructive-background text-white', + contrast: 'bg-base-foreground text-base-background' + }, + variant: { + label: 'h-3.5 px-1 text-xxxs font-semibold uppercase', + dot: 'size-2', + circle: 'size-3.5 text-xxxs font-semibold' + } + }, + defaultVariants: { + severity: 'default', + variant: 'label' + } +}) + +export type StatusBadgeVariants = VariantProps