loading-spinner.stories.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import type { Meta, StoryObj } from '@storybook/react-webpack5'
  2. import LoadingSpinner, {
  3. FullSizeLoadingSpinner,
  4. } from '@/shared/components/loading-spinner'
  5. type Story = StoryObj<typeof LoadingSpinner>
  6. export const Default: Story = {
  7. args: {
  8. loadingText: 'Loading content...',
  9. },
  10. }
  11. export const WithDelay: Story = {
  12. args: {
  13. delay: 500,
  14. loadingText: 'This will appear after a 500ms delay...',
  15. },
  16. }
  17. export const FullSize: StoryObj<typeof FullSizeLoadingSpinner> = {
  18. render: args => <FullSizeLoadingSpinner {...args} />,
  19. args: {
  20. loadingText: 'Loading entire section...',
  21. size: 'sm',
  22. },
  23. }
  24. const meta: Meta<typeof LoadingSpinner> = {
  25. title: 'Shared / Components / Loading Spinner',
  26. component: LoadingSpinner,
  27. parameters: {
  28. layout: 'centered',
  29. controls: {
  30. include: ['loadingText', 'delay', 'size'],
  31. },
  32. },
  33. argTypes: {
  34. delay: {
  35. control: 'select',
  36. options: [0, 500],
  37. },
  38. size: {
  39. control: 'radio',
  40. options: ['lg', 'sm'],
  41. },
  42. },
  43. args: {
  44. size: 'sm',
  45. delay: 0,
  46. },
  47. render: args => <LoadingSpinner {...args} />,
  48. }
  49. export default meta