From 6d235a0e044aff067bfc52554f8aa7e166a31fa6 Mon Sep 17 00:00:00 2001 From: Prince Rajpoot <44585452+princerajpoot20@users.noreply.github.com> Date: Tue, 4 Jul 2023 15:48:49 +0530 Subject: [PATCH] feat: add slideover component (#711) --- .../src/components/SlideOver.stories.tsx | 29 +++++++++++++++++++ packages/ui/components/SlideOver.tsx | 29 +++++++++++++++++++ packages/ui/components/index.tsx | 1 + 3 files changed, 59 insertions(+) create mode 100644 apps/design-system/src/components/SlideOver.stories.tsx create mode 100644 packages/ui/components/SlideOver.tsx diff --git a/apps/design-system/src/components/SlideOver.stories.tsx b/apps/design-system/src/components/SlideOver.stories.tsx new file mode 100644 index 000000000..f2adacd49 --- /dev/null +++ b/apps/design-system/src/components/SlideOver.stories.tsx @@ -0,0 +1,29 @@ +import { useState } from "react"; +import { SlideOver } from "ui"; + +export default { + component: SlideOver, + parameters: { + layout: 'fullscreen', + backgrounds: { + default: 'dark' + } + }, +}; + +export const Example = () => { + const [isOpen, setIsOpen] = useState(false); + + const handleOpen = () => setIsOpen(true); + const handleClose = () => setIsOpen(false); + + return ( +
+ + + +

Content of the SlideOver

+
+
+ ); +}; diff --git a/packages/ui/components/SlideOver.tsx b/packages/ui/components/SlideOver.tsx new file mode 100644 index 000000000..bbe49c05b --- /dev/null +++ b/packages/ui/components/SlideOver.tsx @@ -0,0 +1,29 @@ +import { XMarkIcon } from './icons'; + +interface SlideOverProps { + isOpen: boolean; + onClose: () => void; + children: React.ReactNode; +} + +export const SlideOver: React.FC = ({ isOpen, onClose, children }) => { + + if (!isOpen) return null; + + const handleKeyDown = (event: React.KeyboardEvent) => { + if (event.key === 'Escape') { + onClose(); + } + }; + + return ( +
+ + {children} +
+ ); +}; + +export default SlideOver; \ No newline at end of file diff --git a/packages/ui/components/index.tsx b/packages/ui/components/index.tsx index c3d7761d3..b3c61c442 100644 --- a/packages/ui/components/index.tsx +++ b/packages/ui/components/index.tsx @@ -7,5 +7,6 @@ export * from "./Logo" export * from "./Modal" export * from "./OperationIcon" export * from "./Sidebar" +export * from "./SlideOver" export * from "./Toolbar" export { default as Tooltip } from "./Tooltip" \ No newline at end of file