split-button.stories.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { Fragment } from 'react'
  2. import type { Meta } from '@storybook/react-webpack5'
  3. import { useTranslation } from 'react-i18next'
  4. import {
  5. Dropdown,
  6. DropdownHeader,
  7. DropdownItem,
  8. DropdownMenu,
  9. DropdownToggle,
  10. } from '@/shared/components/dropdown/dropdown-menu'
  11. import Button from '@/shared/components/button/button'
  12. import { ButtonGroup } from 'react-bootstrap'
  13. import { figmaDesignUrl } from '../../../.storybook/utils/figma-design-url'
  14. export const Sizes = () => {
  15. const { t } = useTranslation()
  16. const sizes = {
  17. Large: 'lg',
  18. Regular: undefined,
  19. Small: 'sm',
  20. } as const
  21. const variants = ['primary', 'secondary', 'danger'] as const
  22. return Object.entries(sizes).map(([label, size]) => (
  23. <Fragment key={`${label}-${size}`}>
  24. <h4>{label}</h4>
  25. <div style={{ display: 'inline-flex', gap: '10px' }}>
  26. {variants.map(variant => (
  27. <Dropdown key={variant} as={ButtonGroup}>
  28. <Button variant={variant} size={size}>
  29. Split Button
  30. </Button>
  31. <DropdownToggle
  32. split
  33. variant={variant}
  34. id={`split-btn-${variant}-${size}`}
  35. size={size}
  36. aria-label={t('expand')}
  37. />
  38. <DropdownMenu>
  39. <DropdownHeader>Header</DropdownHeader>
  40. <DropdownItem as="button">Action 1</DropdownItem>
  41. <DropdownItem as="button">Action 2</DropdownItem>
  42. <DropdownItem as="button">Action 3</DropdownItem>
  43. </DropdownMenu>
  44. </Dropdown>
  45. ))}
  46. </div>
  47. </Fragment>
  48. ))
  49. }
  50. const meta: Meta<typeof Dropdown> = {
  51. title: 'Shared/Components/SplitButton',
  52. component: Dropdown,
  53. args: {
  54. align: { sm: 'start' },
  55. },
  56. parameters: figmaDesignUrl(
  57. 'https://www.figma.com/design/V7Ogph1Ocs4ux2A4WMNAh7/Overleaf---Components?node-id=3460-194077&m=dev'
  58. ),
  59. }
  60. export default meta