import {
DownloadIcon,
ExternalIcon,
MoreVerticalIcon,
SettingsIcon,
TrashIcon,
} from '@modrinth/assets'
import type { Meta, StoryObj } from '@storybook/vue3-vite'
import TeleportOverflowMenu from '../../components/base/buttons/TeleportOverflowMenu.vue'
import type { OverflowMenuOption } from '../../components/base/buttons/types'
const options: OverflowMenuOption[] = [
{
id: 'download',
label: 'Download',
icon: DownloadIcon,
action: () => undefined,
},
{
id: 'settings',
label: 'Project settings',
icon: SettingsIcon,
type: 'link',
to: '/settings',
},
{
id: 'website',
label: 'Open website',
icon: ExternalIcon,
type: 'link',
href: 'https://modrinth.com',
target: '_blank',
},
{
id: 'unavailable',
label: 'Unavailable action',
disabled: true,
tooltip: 'This action is currently unavailable',
action: () => undefined,
},
{ type: 'divider' },
{
id: 'delete',
label: 'Delete project',
icon: TrashIcon,
tone: 'red',
action: () => undefined,
},
]
const meta = {
title: 'Buttons/Teleport Overflow Menu',
component: TeleportOverflowMenu,
args: {
label: 'More actions',
options,
type: 'base',
size: 'md',
placement: 'bottom-end',
disabled: false,
hoverable: false,
},
render: (args) => ({
components: { MoreVerticalIcon, TeleportOverflowMenu },
setup() {
return { args }
},
template: /*html*/ `
`,
}),
} satisfies Meta
export default meta
type Story = StoryObj
export const Default: Story = {}
export const ColoredTrigger: Story = {
args: {
type: 'colored',
},
}
export const OutlinedTrigger: Story = {
args: {
type: 'outlined',
},
}
export const QuietTrigger: Story = {
args: {
type: 'quiet',
},
}
export const Hoverable: Story = {
args: {
hoverable: true,
},
}