import type { Meta, StoryObj } from '@storybook/react-vite';

import { Button } from '@mantine/core';
import { fn } from 'storybook/test';

import { MantineBetterMenusProvider, useMantineBetterMenus } from './';

const Renderable = (props: Record<string, unknown>) => {
  return (
    <MantineBetterMenusProvider providerID="test" {...props}>
      <Menu />
    </MantineBetterMenusProvider>
  );
};

const Menu = () => {
  const menus = useMantineBetterMenus();
  //menus.setState("menus",[{id:"test",items:[{id:"1",label:"Test",onClick:()=>{console.log("Clicked")}}]}])

  return <Button onClick={() => menus.show('test', {})}>Menu</Button>;
};

const meta = {
  // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
  args: { onClick: fn() },
  // More on argTypes: https://storybook.js.org/docs/api/argtypes
  argTypes: {
    backgroundColor: { control: 'color' },
  },
  component: Renderable,
  parameters: {
    // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
    //layout: 'centered',
  },
  // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
  tags: ['autodocs'],
  title: 'UI/Mantine Better Menu',
} satisfies Meta<typeof Renderable>;

export default meta;
type Story = StoryObj<typeof meta>;

// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
export const BasicExample: Story = {
  args: {
    label: 'Test',
  },
};
