Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion unraid-ui/src/components/common/stepper/Stepper.vue
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
</script>

<template>
<StepperRoot v-slot="slotProps" :class="cn('flex gap-2', props.class)" v-bind="forwarded">
<StepperRoot
v-slot="slotProps"
:class="cn('flex flex-col gap-2 md:flex-row', props.class)"
v-bind="forwarded"
>
<slot v-bind="slotProps" />
</StepperRoot>
</template>
10 changes: 9 additions & 1 deletion unraid-ui/src/components/common/stepper/StepperItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,15 @@ const forwarded = useForwardProps(delegatedProps);
<StepperItem
v-slot="slotProps"
v-bind="forwarded"
:class="cn('flex items-center gap-2 group data-[disabled]:pointer-events-none', props.class)"
:class="
cn(
'flex flex-col items-start gap-1',
'md:flex-row md:items-center md:gap-2',
'group transition-all duration-200',
'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class
)
"
>
<slot v-bind="slotProps" />
</StepperItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const forwarded = useForwardProps(delegatedProps);
v-bind="forwarded"
:class="
cn(
'bg-muted',
'hidden md:block bg-muted md:w-24 md:h-px md:my-0',
Comment thread
mdatelle marked this conversation as resolved.
// Disabled
'group-data-[disabled]:bg-muted group-data-[disabled]:opacity-75',
// Completed
Expand Down
7 changes: 6 additions & 1 deletion unraid-ui/src/components/common/stepper/StepperTrigger.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ const forwarded = useForwardProps(delegatedProps);
<template>
<StepperTrigger
v-bind="forwarded"
:class="cn('p-2 flex flex-col items-center text-center gap-2 rounded-md', props.class)"
:class="
cn(
'flex flex-col items-center justify-center text-center gap-2 rounded-md w-full md:w-auto',
props.class
)
"
>
<slot />
</StepperTrigger>
Expand Down
71 changes: 71 additions & 0 deletions unraid-ui/stories/components/common/Stepper.stories.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import type { Meta, StoryObj } from '@storybook/vue3';
import {
Stepper as StepperComponent,
StepperDescription,
StepperIndicator,
StepperItem,
StepperSeparator,
StepperTitle,
StepperTrigger,
} from '../../../src/components/common/stepper';

const meta = {
title: 'Components/Common',
component: StepperComponent,
parameters: {
layout: 'padded',
viewport: {
defaultViewport: 'responsive',
viewports: {
responsive: {
name: 'Responsive',
styles: { width: '100%', height: '100%' },
},
mobile: {
name: 'Mobile',
styles: { width: '320px', height: '100%' },
},
},
},
},
} satisfies Meta<typeof StepperComponent>;

export default meta;

type Story = StoryObj<typeof meta>;

export const Stepper: Story = {
render: () => ({
components: {
StepperComponent,
StepperItem,
StepperTitle,
StepperDescription,
StepperIndicator,
StepperSeparator,
StepperTrigger,
},
template: `
<StepperComponent>
<template v-for="(step, index) in steps" :key="index">
<StepperItem :step="index + 1">
<StepperTrigger>
<StepperIndicator>{{ index + 1 }}</StepperIndicator>
<StepperTitle>{{ step.title }}</StepperTitle>
<StepperDescription>{{ step.description }}</StepperDescription>
</StepperTrigger>
<StepperSeparator v-if="index < steps.length - 1" />
</StepperItem>
</template>
</StepperComponent>
`,
setup() {
const steps = [
{ title: 'Account Setup', description: 'Create your account' },
{ title: 'Server Details', description: 'Configure your server' },
{ title: 'Review', description: 'Review and confirm' },
];
return { steps };
},
}),
};