vorteil/direktiv

View on GitHub
ui/src/design/Popover/index.stories.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { Meta, StoryObj } from "@storybook/react";
import { Popover, PopoverClose, PopoverContent, PopoverTrigger } from "./index";
import Button from "../Button";

const meta = {
  title: "Components/Popover",
  component: Popover,
} satisfies Meta<typeof Popover>;

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

export const Default: Story = {
  render: () => (
    <Popover>
      <PopoverTrigger>Open</PopoverTrigger>
      <PopoverContent className="p-4">
        Place content for the popover here.
      </PopoverContent>
    </Popover>
  ),
  tags: ["autodocs"],
  argTypes: {
    open: {
      description: "Is popover open",
      control: "boolean",
      type: { name: "boolean", required: false },
    },
    defaultOpen: {
      description: "Is popover open by default",
      control: "boolean",
      type: { name: "boolean", required: false },
    },
    modal: {
      description: "Is popover a modal",
      control: "boolean",
      type: { name: "boolean", required: false },
    },
  },
};

export const DefaultOpen = () => (
  <Popover defaultOpen>
    <PopoverTrigger>Open</PopoverTrigger>
    <PopoverContent className="flex flex-col gap-3 p-4">
      <div>Place content for the popover here.</div>
      <PopoverClose asChild>
        <Button>Close this popover</Button>
      </PopoverClose>
    </PopoverContent>
  </Popover>
);

export const AlignPopoverContent = () => (
  <div className="flex space-x-4">
    <Popover>
      <PopoverTrigger asChild>
        <Button>Align Start</Button>
      </PopoverTrigger>
      <PopoverContent align="start" className="p-4">
        Place content for the popover here.
      </PopoverContent>
    </Popover>
    <Popover>
      <PopoverTrigger asChild>
        <Button>Align Center</Button>
      </PopoverTrigger>
      <PopoverContent align="center" className="p-4">
        Place content for the popover here.
      </PopoverContent>
    </Popover>
    <Popover>
      <PopoverTrigger>
        <Button>Align End</Button>
      </PopoverTrigger>
      <PopoverContent align="end" className="p-4">
        Place content for the popover here.
      </PopoverContent>
    </Popover>
  </div>
);