summaryrefslogtreecommitdiffstats
path: root/src/components/molecules/modals/modal.stories.tsx
blob: f6dd36404c8df7f79cd2a4ac016cc5e21443b636 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; pa
import { ComponentMeta, ComponentStory } from '@storybook/react';
import Modal from './modal';

/**
 * Widget - Storybook Meta
 */
export default {
  title: 'Molecules/Modals/Modal',
  component: Modal,
  argTypes: {
    children: {
      control: {
        type: 'text',
      },
      description: 'The modal body.',
      type: {
        name: 'string',
        required: true,
      },
    },
    className: {
      control: {
        type: 'text',
      },
      description: 'Set additional classnames to the modal.',
      table: {
        category: 'Styles',
      },
      type: {
        name: 'string',
        required: false,
      },
    },
    headingClassName: {
      control: {
        type: 'text',
      },
      description: 'Set additional classnames to the modal heading.',
      table: {
        category: 'Styles',
      },
      type: {
        name: 'string',
        required: false,
      },
    },
    icon: {
      control: {
        type: 'select',
      },
      description: 'The title icon.',
      options: ['', 'cogs', 'search'],
      table: {
        category: 'Options',
      },
      type: {
        name: 'string',
        required: false,
      },
    },
    title: {
      control: {
        type: 'text',
      },
      description: 'The modal title.',
      table: {
        category: 'Options',
      },
      type: {
        name: 'string',
        required: false,
      },
    },
  },
} as ComponentMeta<typeof Modal>;

const Template: ComponentStory<typeof Modal> = (args) => <Modal {...args} />;

/**
 * Modal Stories - Default
 */
export const Default = Template.bind({});
Default.args = {
  children:
    'Inventore natus dignissimos aut illum modi asperiores. Et voluptatibus delectus.',
};

/**
 * Modal Stories - With title
 */
export const WithTitle = Template.bind({});
WithTitle.args = {
  children:
    'Inventore natus dignissimos aut illum modi asperiores. Et voluptatibus delectus.',
  title: 'Alias praesentium corporis',
};
ss="w"> 0 fun.convert-px(-2) fun.convert-px(3) fun.convert-px(-1) var(--color-shadow); @include mix.media("screen") { @include mix.dimensions(null, "2xs", "height") { --toolbar-size: #{fun.convert-px(52)}; --btn-size: #{fun.convert-px(42)}; } @include mix.dimensions("sm") { --toolbar-size: auto; justify-content: flex-end; gap: var(--spacing-sm); width: auto; background: inherit; box-shadow: none; position: relative; left: unset; margin-right: unset; transform: unset; } } } .search { padding: var(--spacing-md); position: absolute; bottom: 100%; left: 0; right: 0; background: var(--color-bg); box-shadow: fun.convert-px(2) fun.convert-px(-2) fun.convert-px(3) fun.convert-px(-1) var(--color-shadow); transition: all 0.7s ease-in-out 0s; &--closed { transform: translateX(-100%); visibility: hidden; } &--opened { transform: translateX(0); visibility: visible; } @include mix.media("screen") { @include mix.dimensions("sm") { width: fun.convert-px(500); left: unset; right: unset; top: 120%; bottom: unset; background: var(--color-bg-opacity); box-shadow: fun.convert-px(2) fun.convert-px(2) fun.convert-px(3) fun.convert-px(1) var(--color-shadow); transform-origin: 50% -200%; transition: all 0.8s ease-in-out 0s; &--closed { opacity: 0; transform: perspective(20rem) translate3d(0, 100%, -20rem); visibility: hidden; } &--opened { opacity: 1; transform: none; } } } }