diff --git a/packages/components/src/modal/modal.tsx b/packages/components/src/modal/modal.tsx index f58e2bf658..742fc4bb5a 100644 --- a/packages/components/src/modal/modal.tsx +++ b/packages/components/src/modal/modal.tsx @@ -7,7 +7,6 @@ import { Container } from '../content' /** * Modal containers allow users to view content that demands attention through an overlay window that opens on top of the current page. * - * @playground * @example * ```jsx * function Example() { diff --git a/packages/components/src/modal/stories/examples/modal-size.stories.tsx b/packages/components/src/modal/stories/examples/modal-size.stories.tsx new file mode 100644 index 0000000000..68ecbee973 --- /dev/null +++ b/packages/components/src/modal/stories/examples/modal-size.stories.tsx @@ -0,0 +1,82 @@ +import React, { useState } from 'react' + +import { + Modal, + ModalContent, + ModalDismiss, + ModalFooter, + ModalHeader, + ModalHeading, +} from '../../index' + +import '../stories.css' +import { Button } from '../../../button' +import { Slot } from '../../../slot' + +export default { + title: 'components/modal/examples', + parameters: { + chromatic: { + disableSnapshot: true, + }, + }, +} + +export function Size() { + const [modal, setModal] = useState({ open: false, size: 'medium' }) + + return ( + <> + + + + setModal((prev) => ({ ...prev, open: false }))} + > + + Confirm action + + + + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. In nulla + posuere sollicitudin aliquam ultrices sagittis orci. Vel risus commodo + viverra maecenas. Montes nascetur ridiculus mus mauris vitae ultricies + leo. Nibh cras pulvinar mattis nunc. Mattis aliquam faucibus purus in + massa tempor nec. Cursus mattis molestie a iaculis at. Dolor sed + viverra ipsum nunc aliquet bibendum. In eu mi bibendum neque egestas + congue. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras + fermentum odio. At tellus at urna condimentum mattis pellentesque id. + + + + + + + + ) +} diff --git a/packages/components/src/modal/stories/modal.play.stories.tsx b/packages/components/src/modal/stories/modal.play.stories.tsx new file mode 100644 index 0000000000..9ba06e106c --- /dev/null +++ b/packages/components/src/modal/stories/modal.play.stories.tsx @@ -0,0 +1,108 @@ +import React, { useState } from 'react' + +import { + Modal, + ModalContent, + ModalDismiss, + ModalFooter, + ModalHeader, + ModalHeading, +} from '../index' + +import './stories.css' +import { Button } from '../../button' +import { Text } from '../../text' + +export default { + title: 'components/modal', + argTypes: { + size: { + control: 'select', + options: ['small', 'medium', 'large'], + description: 'Modal size', + }, + heading: { + control: 'text', + description: 'Represents the modal heading', + }, + content: { + control: 'text', + description: 'Content to be displayed in the modal', + }, + withFooter: { + control: 'boolean', + description: 'Whether should render modal footer or not', + }, + cancelText: { + control: 'text', + description: 'Modal cancel text', + }, + confirmText: { + control: 'text', + description: 'Modal confirmation text', + }, + }, + args: { + size: 'medium', + heading: 'Modal heading', + content: `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. In nulla + posuere sollicitudin aliquam ultrices sagittis orci.`, + withFooter: true, + cancelText: 'Close', + confirmText: 'Ok', + }, + parameters: { + chromatic: { + disableSnapshot: true, + }, + }, +} + +interface StoryArgs { + size: 'small' | 'medium' | 'large' + content: string + heading: string + cancelText: string + confirmText: string + withFooter: boolean +} + +export function Play(args: StoryArgs) { + const [open, setOpen] = useState(true) + + return ( + <> + + { + setOpen(false) + }} + > + + {args.heading} + + + + {args.content} + + {args.withFooter && ( + + + + + )} + + + ) +} diff --git a/packages/components/src/modal/stories/modal.show.stories.tsx b/packages/components/src/modal/stories/modal.show.stories.tsx new file mode 100644 index 0000000000..ff55c66d34 --- /dev/null +++ b/packages/components/src/modal/stories/modal.show.stories.tsx @@ -0,0 +1,133 @@ +import React from 'react' + +import { + Modal, + ModalContent, + ModalDismiss, + ModalFooter, + ModalHeader, + ModalHeading, +} from '../index' + +import './stories.css' +import { Button } from '../../button' +import { Slot } from '../../slot' +import { Bleed } from '../../bleed' +import { IconImageSquareFill } from '@vtex/shoreline-icons' +import { Tag } from '../../tag' + +export default { + title: 'components/modal', + parameters: { + chromatic: { + disableSnapshot: true, + }, + }, +} + +export function Show() { + return ( + null}> + + + +
+ +
+
+ Confirm action + Short text +
+ + + + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Elit scelerisque + mauris pellentesque pulvinar pellentesque habitant morbi tristique + senectus. Morbi tristique senectus et netus et. Nec tincidunt praesent + semper feugiat nibh sed pulvinar proin gravida. Morbi tristique senectus + et netus et malesuada fames ac. Ultricies leo integer malesuada nunc vel + risus commodo viverra maecenas. Nunc congue nisi vitae suscipit tellus + mauris a diam maecenas. Dui accumsan sit amet nulla facilisi morbi + tempus. Venenatis lectus magna fringilla urna. Mus mauris vitae + ultricies leo integer malesuada nunc. Ac ut consequat semper viverra. + Fusce id velit ut tortor pretium viverra. Ut etiam sit amet nisl purus + in mollis nunc. Nunc mi ipsum faucibus vitae aliquet nec ullamcorper. Ac + ut consequat semper viverra nam libero. Sed id semper risus in hendrerit + gravida rutrum quisque non. Quis commodo odio aenean sed adipiscing diam + donec adipiscing. Urna et pharetra pharetra massa massa ultricies mi + quis. Amet purus gravida quis blandit. Nunc lobortis mattis aliquam + faucibus purus in. Vulputate sapien nec sagittis aliquam malesuada + bibendum arcu vitae elementum. Risus sed vulputate odio ut. Elementum + curabitur vitae nunc sed velit. Tristique et egestas quis ipsum + suspendisse. Aliquet sagittis id consectetur purus ut. Sit amet mattis + vulputate enim nulla. Morbi non arcu risus quis varius quam quisque. Non + quam lacus suspendisse faucibus interdum posuere lorem. Ut ornare lectus + sit amet est. Aliquet enim tortor at auctor urna nunc id cursus. Non + pulvinar neque laoreet suspendisse interdum consectetur. Pulvinar neque + laoreet suspendisse interdum consectetur libero. At quis risus sed + vulputate odio ut. Egestas dui id ornare arcu odio ut. Dictum sit amet + justo donec enim diam. Egestas integer eget aliquet nibh praesent + tristique magna sit. Nulla posuere sollicitudin aliquam ultrices + sagittis. Vestibulum lorem sed risus ultricies tristique nulla aliquet + enim. Ut porttitor leo a diam sollicitudin tempor id. Cum sociis natoque + penatibus et magnis dis parturient montes nascetur. Enim ut sem viverra + aliquet. Et netus et malesuada fames ac. Orci dapibus ultrices in + iaculis nunc sed augue. Gravida arcu ac tortor dignissim convallis + aenean. Nunc vel risus commodo viverra maecenas. Sagittis vitae et leo + duis ut. Sit amet nisl suscipit adipiscing bibendum est ultricies + integer quis. Donec enim diam vulputate ut pharetra. Pretium fusce id + velit ut. Elementum pulvinar etiam non quam lacus suspendisse faucibus + interdum posuere. Ac tortor dignissim convallis aenean et tortor at. + Molestie nunc non blandit massa enim nec dui nunc. Odio pellentesque + diam volutpat commodo. Sit amet consectetur adipiscing elit ut aliquam + purus. Turpis tincidunt id aliquet risus feugiat in ante metus dictum. + Sit amet volutpat consequat mauris nunc congue nisi. Orci phasellus + egestas tellus rutrum tellus pellentesque. Est velit egestas dui id. + Fermentum odio eu feugiat pretium nibh ipsum consequat nisl. Lorem dolor + sed viverra ipsum nunc aliquet bibendum enim. Semper auctor neque vitae + tempus quam pellentesque nec nam aliquam. Volutpat diam ut venenatis + tellus in metus vulputate eu. Facilisi nullam vehicula ipsum a arcu + cursus vitae congue. Feugiat in fermentum posuere urna nec tincidunt. + Donec massa sapien faucibus et. Ac placerat vestibulum lectus mauris + ultrices eros. Volutpat lacus laoreet non curabitur gravida. Vitae + aliquet nec ullamcorper sit amet risus nullam. Et malesuada fames ac + turpis egestas maecenas pharetra convallis posuere. Erat pellentesque + adipiscing commodo elit at imperdiet. Ultricies integer quis auctor elit + sed vulputate. Nisi porta lorem mollis aliquam ut porttitor leo a. Urna + id volutpat lacus laoreet. Sagittis purus sit amet volutpat consequat. + Nibh venenatis cras sed felis. Amet consectetur adipiscing elit + pellentesque. Montes nascetur ridiculus mus mauris vitae ultricies leo + integer malesuada. Montes nascetur ridiculus mus mauris vitae ultricies. + Arcu dictum varius duis at. Quam elementum pulvinar etiam non. Purus + viverra accumsan in nisl nisi scelerisque eu ultrices. Congue mauris + rhoncus aenean vel elit scelerisque mauris. Pharetra sit amet aliquam id + diam maecenas. Sed odio morbi quis commodo odio aenean sed. Sed odio + morbi quis commodo odio aenean sed adipiscing diam. Eu non diam + phasellus vestibulum lorem sed risus ultricies. Aliquet enim tortor at + auctor. Id diam maecenas ultricies mi eget mauris pharetra et ultrices. + Risus ultricies tristique nulla aliquet enim. Pharetra massa massa + ultricies mi quis hendrerit. Vitae suscipit tellus mauris a diam + maecenas sed enim. Euismod nisi porta lorem mollis aliquam ut porttitor + leo. Suscipit adipiscing bibendum est ultricies integer quis auctor elit + sed. Ut faucibus pulvinar elementum integer. Fames ac turpis egestas + maecenas pharetra convallis posuere morbi. Varius duis at consectetur + lorem donec massa sapien. Montes nascetur ridiculus mus mauris. + Sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula. Non + arcu risus quis varius quam quisque. Ut tristique et egestas quis ipsum + suspendisse ultrices. + + + + + +
+ ) +} diff --git a/packages/components/src/modal/stories/modal.stories.tsx b/packages/components/src/modal/stories/modal.stories.tsx deleted file mode 100644 index 00af5b83e8..0000000000 --- a/packages/components/src/modal/stories/modal.stories.tsx +++ /dev/null @@ -1,353 +0,0 @@ -import React, { useState } from 'react' - -import { - Modal, - ModalContent, - ModalDismiss, - ModalFooter, - ModalHeader, - ModalHeading, -} from '../index' - -import './stories.css' -import { Slot } from '../../slot' -import { Button } from '../../button' -import { Bleed } from '../../bleed' -import { Tag } from '../../tag' -import { Text } from '../../text' -import { IconImageSquareFill } from '@vtex/shoreline-icons' - -export default { - title: 'shoreline-components/modal', - argTypes: { - size: { - control: 'select', - options: ['small', 'medium', 'large'], - description: 'Modal size', - }, - heading: { - control: 'text', - description: 'Represents the modal heading', - }, - content: { - control: 'text', - description: 'Content to be displayed in the modal', - }, - withFooter: { - control: 'boolean', - description: 'Whether should render modal footer or not', - }, - cancelText: { - control: 'text', - description: 'Modal cancel text', - }, - confirmText: { - control: 'text', - description: 'Modal confirmation text', - }, - }, - args: { - size: 'medium', - heading: 'Modal heading', - content: `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. In nulla - posuere sollicitudin aliquam ultrices sagittis orci.`, - withFooter: true, - cancelText: 'Close', - confirmText: 'Ok', - }, - parameters: { - chromatic: { disableSnapshot: true }, - }, -} - -interface StoryArgs { - size: 'small' | 'medium' | 'large' - content: string - heading: string - cancelText: string - confirmText: string - withFooter: boolean -} - -export function Playground(args: StoryArgs) { - const [open, setOpen] = useState(true) - - return ( - <> - - { - setOpen(false) - }} - > - - {args.heading} - - - - {args.content} - - {args.withFooter && ( - - - - - )} - - - ) -} - -export function Complete(args: StoryArgs) { - const [open, setOpen] = useState(false) - - return ( - <> - - setOpen(false)}> - - Confirm action - - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. In nulla - posuere sollicitudin aliquam ultrices sagittis orci. Vel risus commodo - viverra maecenas. Montes nascetur ridiculus mus mauris vitae ultricies - leo. Nibh cras pulvinar mattis nunc. Mattis aliquam faucibus purus in - massa tempor nec. Cursus mattis molestie a iaculis at. Dolor sed - viverra ipsum nunc aliquet bibendum. In eu mi bibendum neque egestas - congue. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras - fermentum odio. At tellus at urna condimentum mattis pellentesque id. - - - - - - - - ) -} - -export function WithScroll(args: StoryArgs) { - const [open, setOpen] = useState(false) - - return ( - <> - - setOpen(false)}> - - Confirm action - - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Elit - scelerisque mauris pellentesque pulvinar pellentesque habitant morbi - tristique senectus. Morbi tristique senectus et netus et. Nec - tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. - Morbi tristique senectus et netus et malesuada fames ac. Ultricies leo - integer malesuada nunc vel risus commodo viverra maecenas. Nunc congue - nisi vitae suscipit tellus mauris a diam maecenas. Dui accumsan sit - amet nulla facilisi morbi tempus. Venenatis lectus magna fringilla - urna. Mus mauris vitae ultricies leo integer malesuada nunc. Ac ut - consequat semper viverra. Fusce id velit ut tortor pretium viverra. Ut - etiam sit amet nisl purus in mollis nunc. Nunc mi ipsum faucibus vitae - aliquet nec ullamcorper. Ac ut consequat semper viverra nam libero. - Sed id semper risus in hendrerit gravida rutrum quisque non. Quis - commodo odio aenean sed adipiscing diam donec adipiscing. Urna et - pharetra pharetra massa massa ultricies mi quis. Amet purus gravida - quis blandit. Nunc lobortis mattis aliquam faucibus purus in. - Vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae - elementum. Risus sed vulputate odio ut. Elementum curabitur vitae nunc - sed velit. Tristique et egestas quis ipsum suspendisse. Aliquet - sagittis id consectetur purus ut. Sit amet mattis vulputate enim - nulla. Morbi non arcu risus quis varius quam quisque. Non quam lacus - suspendisse faucibus interdum posuere lorem. Ut ornare lectus sit amet - est. Aliquet enim tortor at auctor urna nunc id cursus. Non pulvinar - neque laoreet suspendisse interdum consectetur. Pulvinar neque laoreet - suspendisse interdum consectetur libero. At quis risus sed vulputate - odio ut. Egestas dui id ornare arcu odio ut. Dictum sit amet justo - donec enim diam. Egestas integer eget aliquet nibh praesent tristique - magna sit. Nulla posuere sollicitudin aliquam ultrices sagittis. - Vestibulum lorem sed risus ultricies tristique nulla aliquet enim. Ut - porttitor leo a diam sollicitudin tempor id. Cum sociis natoque - penatibus et magnis dis parturient montes nascetur. Enim ut sem - viverra aliquet. Et netus et malesuada fames ac. Orci dapibus ultrices - in iaculis nunc sed augue. Gravida arcu ac tortor dignissim convallis - aenean. Nunc vel risus commodo viverra maecenas. Sagittis vitae et leo - duis ut. Sit amet nisl suscipit adipiscing bibendum est ultricies - integer quis. Donec enim diam vulputate ut pharetra. Pretium fusce id - velit ut. Elementum pulvinar etiam non quam lacus suspendisse faucibus - interdum posuere. Ac tortor dignissim convallis aenean et tortor at. - Molestie nunc non blandit massa enim nec dui nunc. Odio pellentesque - diam volutpat commodo. Sit amet consectetur adipiscing elit ut aliquam - purus. Turpis tincidunt id aliquet risus feugiat in ante metus dictum. - Sit amet volutpat consequat mauris nunc congue nisi. Orci phasellus - egestas tellus rutrum tellus pellentesque. Est velit egestas dui id. - Fermentum odio eu feugiat pretium nibh ipsum consequat nisl. Lorem - dolor sed viverra ipsum nunc aliquet bibendum enim. Semper auctor - neque vitae tempus quam pellentesque nec nam aliquam. Volutpat diam ut - venenatis tellus in metus vulputate eu. Facilisi nullam vehicula ipsum - a arcu cursus vitae congue. Feugiat in fermentum posuere urna nec - tincidunt. Donec massa sapien faucibus et. Ac placerat vestibulum - lectus mauris ultrices eros. Volutpat lacus laoreet non curabitur - gravida. Vitae aliquet nec ullamcorper sit amet risus nullam. Et - malesuada fames ac turpis egestas maecenas pharetra convallis posuere. - Erat pellentesque adipiscing commodo elit at imperdiet. Ultricies - integer quis auctor elit sed vulputate. Nisi porta lorem mollis - aliquam ut porttitor leo a. Urna id volutpat lacus laoreet. Sagittis - purus sit amet volutpat consequat. Nibh venenatis cras sed felis. Amet - consectetur adipiscing elit pellentesque. Montes nascetur ridiculus - mus mauris vitae ultricies leo integer malesuada. Montes nascetur - ridiculus mus mauris vitae ultricies. Arcu dictum varius duis at. Quam - elementum pulvinar etiam non. Purus viverra accumsan in nisl nisi - scelerisque eu ultrices. Congue mauris rhoncus aenean vel elit - scelerisque mauris. Pharetra sit amet aliquam id diam maecenas. Sed - odio morbi quis commodo odio aenean sed. Sed odio morbi quis commodo - odio aenean sed adipiscing diam. Eu non diam phasellus vestibulum - lorem sed risus ultricies. Aliquet enim tortor at auctor. Id diam - maecenas ultricies mi eget mauris pharetra et ultrices. Risus - ultricies tristique nulla aliquet enim. Pharetra massa massa ultricies - mi quis hendrerit. Vitae suscipit tellus mauris a diam maecenas sed - enim. Euismod nisi porta lorem mollis aliquam ut porttitor leo. - Suscipit adipiscing bibendum est ultricies integer quis auctor elit - sed. Ut faucibus pulvinar elementum integer. Fames ac turpis egestas - maecenas pharetra convallis posuere morbi. Varius duis at consectetur - lorem donec massa sapien. Montes nascetur ridiculus mus mauris. - Sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula. Non - arcu risus quis varius quam quisque. Ut tristique et egestas quis - ipsum suspendisse ultrices. - - - - - - - - ) -} - -export function CompleteHeader(args: StoryArgs) { - const [open, setOpen] = useState(false) - - return ( - <> - - setOpen(false)}> - - - -
- -
-
- Confirm action - Short text -
- - - - -
- - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. In nulla - posuere sollicitudin aliquam ultrices sagittis orci. Vel risus commodo - viverra maecenas. Montes nascetur ridiculus mus mauris vitae ultricies - leo. Nibh cras pulvinar mattis nunc. Mattis aliquam faucibus purus in - massa tempor nec. Cursus mattis molestie a iaculis at. Dolor sed - viverra ipsum nunc aliquet bibendum. In eu mi bibendum neque egestas - congue. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras - fermentum odio. At tellus at urna condimentum mattis pellentesque id. - - - - - -
- - ) -} - -export function Size(args: StoryArgs) { - const [modal, setModal] = useState({ open: false, size: 'medium' }) - - return ( - <> - - - - setModal((prev) => ({ ...prev, open: false }))} - > - - Confirm action - - - - - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. In nulla - posuere sollicitudin aliquam ultrices sagittis orci. Vel risus commodo - viverra maecenas. Montes nascetur ridiculus mus mauris vitae ultricies - leo. Nibh cras pulvinar mattis nunc. Mattis aliquam faucibus purus in - massa tempor nec. Cursus mattis molestie a iaculis at. Dolor sed - viverra ipsum nunc aliquet bibendum. In eu mi bibendum neque egestas - congue. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras - fermentum odio. At tellus at urna condimentum mattis pellentesque id. - - - - - - - - ) -}