diff --git a/src/pages/projects/sistent/components/drawer/code.js b/src/pages/projects/sistent/components/drawer/code.js new file mode 100644 index 000000000000..f82a26bf8b46 --- /dev/null +++ b/src/pages/projects/sistent/components/drawer/code.js @@ -0,0 +1,8 @@ +import React from "react"; +import { DrawerCode } from "../../../../../sections/Projects/Sistent/components/drawer/code"; + +const DrawerCodePage = () => { + return ; +}; + +export default DrawerCodePage; diff --git a/src/pages/projects/sistent/components/drawer/guidance.js b/src/pages/projects/sistent/components/drawer/guidance.js new file mode 100644 index 000000000000..f4c2bef77c09 --- /dev/null +++ b/src/pages/projects/sistent/components/drawer/guidance.js @@ -0,0 +1,8 @@ +import React from "react"; +import { DrawerGuidance } from "../../../../../sections/Projects/Sistent/components/drawer/guidance"; + +const DrawerGuidancePage = () => { + return ; +}; + +export default DrawerGuidancePage; diff --git a/src/pages/projects/sistent/components/drawer/index.js b/src/pages/projects/sistent/components/drawer/index.js new file mode 100644 index 000000000000..f8b2749d03f3 --- /dev/null +++ b/src/pages/projects/sistent/components/drawer/index.js @@ -0,0 +1,8 @@ +import React from "react"; +import SistentDrawer from "../../../../../sections/Projects/Sistent/components/drawer/index"; + +const SistentDrawerPage = () => { + return ; +}; + +export default SistentDrawerPage; diff --git a/src/sections/Projects/Sistent/components/drawer/DrawerComponent/PersistentDrawer.js b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/PersistentDrawer.js new file mode 100644 index 000000000000..84cfebe13d38 --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/PersistentDrawer.js @@ -0,0 +1,164 @@ +import React, { useEffect, useRef } from "react"; +import { Drawer, Button, SistentThemeProvider } from "@layer5/sistent"; +import { + Inbox as InboxIcon, + Mail as MailIcon, + Menu as MenuIcon, + ChevronLeft as ChevronLeftIcon, +} from "@mui/icons-material"; +import { useStyledDarkMode } from "../../../../../../theme/app/useStyledDarkMode"; + +const drawerWidth = 240; + +export default function PersistentDrawer() { + const { isDark } = useStyledDarkMode(); + const [open, setOpen] = React.useState(false); + const wrapperRef = useRef(null); + + useEffect(() => { + function handleClickOutside(event) { + if ( + wrapperRef.current && + !wrapperRef.current.contains(event.target) && + !event.target.closest(".MuiButton-root") + ) { + setOpen(false); + } + } + + if (open) { + document.addEventListener("mousedown", handleClickOutside); + } + + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [open]); + + const toggleDrawer = (event) => { + event.stopPropagation(); + setOpen(!open); + }; + + return ( + +
+
+
+ + + Persistent Drawer + +
+ + + +
+
Menu
+
+ {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => ( +
+
{index % 2 === 0 ? : }
+ {text} +
+ ))} +
+
+
+ {["All mail", "Trash"].map((text, index) => ( +
+
{index % 2 === 0 ? : }
+ {text} +
+ ))} +
+
+
+ +
+

Main Content

+

This is the main content area. Click anywhere outside the drawer to close it.

+ {Array.from({ length: 20 }).map((_, index) => ( +

+ This is additional content for scrolling demonstration. Even as you scroll, the drawer will remain persistent. +

+ ))} +
+
+
+
+ ); +} diff --git a/src/sections/Projects/Sistent/components/drawer/DrawerComponent/TempDrawer.js b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/TempDrawer.js new file mode 100644 index 000000000000..fd5b8475e601 --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/TempDrawer.js @@ -0,0 +1,130 @@ +import React from "react"; +import { SistentThemeProvider } from "@layer5/sistent"; +import { useStyledDarkMode } from "../../../../../../theme/app/useStyledDarkMode"; +import { + Box, + Drawer, + Button, + Divider, + ListItemIcon, + ListItemText +} from "@layer5/sistent"; +import { MoveToInbox as InboxIcon, Mail as MailIcon, Close as CloseIcon } from "@mui/icons-material"; + +const drawerWidth = 240; + +export default function TemporaryDrawer() { + const { isDark } = useStyledDarkMode(); + const [open, setOpen] = React.useState(false); + + const toggleDrawer = (newOpen) => () => { + setOpen(newOpen); + }; + + const DrawerContent = () => ( + + + Menu + + + +
+ {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + + +
+ ))} +
+ +
+ {["All mail", "Trash", "Spam"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + + +
+ ))} +
+
+ ); + + return ( + + + + + Drawer Demo + + + + + + + + + This is a demonstration of a temporary drawer. You can add a button to trigger the drawer's opening, making it easy for users to access additional content or navigation options when needed. + + + + + ); +} diff --git a/src/sections/Projects/Sistent/components/drawer/DrawerComponent/data.js b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/data.js new file mode 100644 index 000000000000..f25bd5ace235 --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/data.js @@ -0,0 +1,421 @@ + +export const codes = [ +`export default function TemporaryDrawer() { + const { isDark } = useStyledDarkMode(); + const [open, setOpen] = React.useState(false); + + const toggleDrawer = (newOpen) => () => { + setOpen(newOpen); + }; + + const DrawerContent = () => ( + + + Menu + + + + {["Inbox", "Starred", "Send email", "Drafts", "All mail", "Trash", "Spam"].map((text, index) => ( + + {index % 2 === 0 ? : } + + + ))} + + ); + + return ( + + + + Drawer Demo + + + + + + + + + This is a demonstration of a temporary drawer. You can add a button to trigger the drawer's opening, making it easy for users to access additional content or navigation options when needed. + + + + ); +} +`, +`export default function MiniVariantDrawer() { + const { isDark } = useStyledDarkMode(); + const [open, setOpen] = React.useState(false); + + const toggleDrawer = (newOpen) => () => { + setOpen(newOpen); + }; + + const DrawerContent = () => ( + + + + + + {["Inbox", "Starred", "Send email", "Drafts", "All mail", "Trash", "Spam"].map((text, index) => ( + + {index % 2 === 0 ? : } + + ))} + + ); + + return ( + + + + + Mini Variant Drawer Demo + + + + + + + + +

Main Content

+

This is the main content area. Click the button above to open the drawer.

+
+
+
+ ); +} +`, +`export default function PersistentDrawer() { + const { isDark } = useStyledDarkMode(); + const [open, setOpen] = React.useState(false); + const wrapperRef = useRef(null); + + useEffect(() => { + + if (open) { + document.addEventListener("mousedown", handleClickOutside); + } + + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [open]); + + const toggleDrawer = (event) => { + event.stopPropagation(); + setOpen(!open); + }; + + return ( +
+
+
+ + + Persistent Drawer + +
+ + + +
+
Menu
+
+ {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => ( +
+
{index % 2 === 0 ? : }
+ {text} +
+ ))} +
+
+
+ {["All mail", "Trash"].map((text, index) => ( +
+
{index % 2 === 0 ? : }
+ {text} +
+ ))} +
+
+
+ +
+

Main Content

+

This is the main content area. Click anywhere outside the drawer to close it.

+ {Array.from({ length: 20 }).map((_, index) => ( +

+ This is additional content for scrolling demonstration. Even as you scroll, the drawer will remain persistent. +

+ ))} +
+
+
+ ); +} + +`, +`export default function PermanentDrawer() { + const { isDark } = useStyledDarkMode(); + + const DrawerContent = () => ( + + + Menu + + + {["Inbox", "Starred", "Send email", "Drafts", "All mail", "Trash", "Spam"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + + +
+ ))} +
+ ); + + return ( + + + + + + +

Main Content

+

This is the main content area. The drawer on the left is permanent.

+

Additional content to demonstrate scrolling.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pharetra nulla vitae nisi pulvinar, sed congue magna feugiat.

+

Quisque dapibus metus sit amet arcu fermentum, sit amet gravida felis sodales.

+ {Array.from({ length: 20 }).map((_, index) => ( +

+ This is additional content for scrolling demonstration. Even as you scroll, the drawer will remain persistent. +

+ ))} +
+
+ ); +} +`, +]; diff --git a/src/sections/Projects/Sistent/components/drawer/DrawerComponent/miniVariant.js b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/miniVariant.js new file mode 100644 index 000000000000..89f119f1606c --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/miniVariant.js @@ -0,0 +1,132 @@ +import React from "react"; +import { SistentThemeProvider } from "@layer5/sistent"; +import { useStyledDarkMode } from "../../../../../../theme/app/useStyledDarkMode"; + +import { + Box, + Drawer, + Button, + Divider, + ListItemIcon +} from "@layer5/sistent"; +import { MoveToInbox as InboxIcon, Mail as MailIcon, Close as CloseIcon } from "@mui/icons-material"; + +const drawerWidth = 10; // Mini drawer width +const fullDrawerWidth = 60; // Full width when expanded + +export default function MiniVariantDrawer() { + const { isDark } = useStyledDarkMode(); + const [open, setOpen] = React.useState(false); + + const toggleDrawer = (newOpen) => () => { + setOpen(newOpen); + }; + + const DrawerContent = () => ( + + + + + +
+ {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + +
+ ))} +
+ +
+ {["All mail", "Trash", "Spam"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + +
+ ))} +
+
+ ); + + return ( + + + + + Mini Variant Drawer Demo + + + + + + + + +

Main Content

+

This is the main content area. Click the button above to open the drawer.

+
+
+
+
+ ); +} diff --git a/src/sections/Projects/Sistent/components/drawer/DrawerComponent/permanentDrawer.js b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/permanentDrawer.js new file mode 100644 index 000000000000..4d2359e3072f --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/DrawerComponent/permanentDrawer.js @@ -0,0 +1,105 @@ +import React from "react"; +import { SistentThemeProvider } from "@layer5/sistent"; +import { useStyledDarkMode } from "../../../../../../theme/app/useStyledDarkMode"; +import { + Box, + Drawer, + Divider, + ListItemIcon, + ListItemText +} from "@layer5/sistent"; +import { MoveToInbox as InboxIcon, Mail as MailIcon } from "@mui/icons-material"; + +const drawerWidth = 240; + +export default function PermanentDrawer() { + const { isDark } = useStyledDarkMode(); + + const DrawerContent = () => ( + + + Menu + + +
+ {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + + +
+ ))} +
+ +
+ {["All mail", "Trash", "Spam"].map((text, index) => ( +
+ + {index % 2 === 0 ? : } + + +
+ ))} +
+
+ ); + + return ( + + + + + + + +

Main Content

+

This is the main content area. The drawer on the left is permanent.

+

Additional content to demonstrate scrolling.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pharetra nulla vitae nisi pulvinar, sed congue magna feugiat.

+

Quisque dapibus metus sit amet arcu fermentum, sit amet gravida felis sodales.

+ {Array.from({ length: 20 }).map((_, index) => ( +

+ This is additional content for scrolling demonstration. Even as you scroll, the drawer will remain persistent. +

+ ))} +
+
+
+ ); +} diff --git a/src/sections/Projects/Sistent/components/drawer/code.js b/src/sections/Projects/Sistent/components/drawer/code.js new file mode 100644 index 000000000000..227f54243e36 --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/code.js @@ -0,0 +1,125 @@ +import React from "react"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; + +import { SistentThemeProvider } from "@layer5/sistent"; +import { CodeBlock } from "../button/code-block"; +import { SistentLayout } from "../../sistent-layout"; + +import TabButton from "../../../../../reusecore/Button"; +import { useStyledDarkMode } from "../../../../../theme/app/useStyledDarkMode"; +import { codes } from "./DrawerComponent/data"; +import TemporaryDrawer from "./DrawerComponent/TempDrawer"; +import MiniVariantDrawer from "./DrawerComponent/miniVariant"; +import PersistentDrawer from "./DrawerComponent/PersistentDrawer"; +import PermanentDrawer from "./DrawerComponent/permanentDrawer"; + +export const DrawerCode = () => { + const location = useLocation(); + const { isDark } = useStyledDarkMode(); + + return ( + +
+ +

Drawer

+
+

+ A drawer is a navigation component that slides in from the side of the screen, providing quick access to additional content or options without disrupting the main view. It helps users explore different sections or perform actions while keeping the primary content accessible and uninterrupted. +

+
+ navigate("/projects/sistent/components/anchor")} + title="Overview" + /> + + navigate("/projects/sistent/components/anchor/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/identity/color/code")} + title="Code" + /> +
+
+

+ Drawers provide a convenient way to organize and display additional content or navigation options. They can be placed in various locations within the user interface, allowing users to access essential information and actions as needed. +

+ +

Drawers

+
+

+ The button comes in Various types: +

+

Temporary Drawers

+

+ Temporary drawers are a type of navigation panel that slides in from the edge of the screen and overlays the main content. +

+
+
+ + + +
+ +
+

Mini-Variant Drawers

+

+ Mini-variant drawers are compact versions of side navigation drawers that provide quick access to essential items while occupying minimal screen space. +

+
+
+ + + +
+ +
+

Persistent Drawer

+

+ Persistent navigation drawers can toggle open or closed. The drawer sits on the same surface elevation as the content. +

+
+
+ + + +
+ +
+ +

Permanent Drawer

+

+ Permanent navigation drawers are always visible and pinned to the left edge, at the same elevation as the content or background. They cannot be closed. +

+
+
+ + + +
+ +
+
+
+
+ ); +}; diff --git a/src/sections/Projects/Sistent/components/drawer/guidance.js b/src/sections/Projects/Sistent/components/drawer/guidance.js new file mode 100644 index 000000000000..f7bbd062f8a0 --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/guidance.js @@ -0,0 +1,145 @@ +import React from "react"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; +// import { SistentThemeProvider } from "@layer5/sistent"; +import { SistentLayout } from "../../sistent-layout"; + +import TabButton from "../../../../../reusecore/Button"; +import { useStyledDarkMode } from "../../../../../theme/app/useStyledDarkMode"; + +export const DrawerGuidance = () => { + const location = useLocation(); + const { isDark } = useStyledDarkMode(); + + return ( + +
+ +

Drawer

+
+

+ The Drawer component serves as a slide-out panel that provides additional content or navigation options without navigating away from the current page. +

+
+ navigate("/projects/sistent/components/drawer")} + title="Overview" + /> + + navigate("/projects/sistent/components/drawer/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/components/drawer/code")} + title="Code" + /> +
+
+

+ For proper application, these Drawers can be used for different + purposes to enable easier and consistent combination when guiding + users across digital experiences. +

+ +

Function

+
+

+ The function of different drawers is determined by their specific role in a + design and how well they provide access to information, assist in navigation, + or support task completion. Functions or roles that can be assigned to + drawers in a particular design include: +

+ +

Primary Drawer

+

+ The primary drawer is used to house the most important navigation options or + frequently accessed content within an application. It typically includes core + sections or main categories, helping users move efficiently through the app’s + structure. The primary drawer is often persistent to ensure consistent access + and can be especially helpful for users who need to switch between key areas + regularly. +

+ +

Secondary Drawer

+

+ Secondary drawers are used for supporting or auxiliary content, providing + access to settings, options, or filters that enhance the user's experience + without overwhelming the main interface. Secondary drawers are often + temporary or slide out when needed, keeping the interface clean while still + allowing quick access to additional functionality. +

+ +

Persistent Drawer

+

+ A persistent drawer remains visible and accessible even as users interact + with the main content. This type of drawer is beneficial for applications + where constant navigation options are needed without taking the user away + from their current task, helping maintain focus and accessibility. +

+ +

Action Drawer

+

+ Action drawers are used for task-specific actions such as a shopping cart, + notifications, or chat messages, allowing users to see real-time updates or + make selections. These drawers often have their own unique styling to make + them easily identifiable from other types and are designed to streamline + specific workflows. +

+ + +

Labeling

+
+

+ The drawer component provides an interactive way to display additional content or navigation options without navigating away from the current page. To ensure clarity and usability, the following guidelines should be considered: +

+ +

Visibility and Accessibility

+
    +
  • + The drawer should be easily opened and closed, with visual indicators such as buttons or icons to indicate its function. +
  • +
  • + Ensure that the drawer is accessible via keyboard navigation and screen readers to accommodate all users. +
  • +
+

Content Organization

+
    +
  • + Content within the drawer should be well-organized and categorized, allowing users to find what they need quickly and efficiently. +
  • +
  • + Use headings and dividers to separate different sections of content, making the drawer more scannable. +
  • +
+

Visual Design

+
    +
  • + The drawer’s design should be consistent with the overall application theme, including colors, typography, and spacing. +
  • +
  • + Consider the use of animations for opening and closing the drawer to enhance the user experience without causing distraction. +
  • +
+
+
+
+ ); +}; diff --git a/src/sections/Projects/Sistent/components/drawer/index.js b/src/sections/Projects/Sistent/components/drawer/index.js new file mode 100644 index 000000000000..08d7a74702c7 --- /dev/null +++ b/src/sections/Projects/Sistent/components/drawer/index.js @@ -0,0 +1,274 @@ +import React from "react"; +import { navigate } from "gatsby"; +import { useLocation } from "@reach/router"; +import { SistentThemeProvider } from "@layer5/sistent"; +import TabButton from "../../../../../reusecore/Button"; +import { SistentLayout } from "../../sistent-layout"; +import { Row } from "../../../../../reusecore/Layout"; +import { useStyledDarkMode } from "../../../../../theme/app/useStyledDarkMode"; +import { Table } from "@layer5/sistent"; + +import TemporaryDrawer from "./DrawerComponent/TempDrawer"; +import PersistentDrawer from "./DrawerComponent/PersistentDrawer"; +import MiniDrawer from "./DrawerComponent/miniVariant"; +import PermanentDrawer from "./DrawerComponent/permanentDrawer"; + +// testing drawer + +const SistentDrawer = () => { + const props = [ + { + name: "anchor", + type: "\"left\" | \"right\" | \"top\" | \"bottom\"", + defaultValue: "\"left\"", + description: "Determines which edge of the screen the drawer will slide in from.", + }, + { + name: "open", + type: "boolean", + defaultValue: "", + description: "Controls whether the drawer is open or closed.", + }, + { + name: "onClose", + type: "(event: MouseEvent | KeyboardEvent) => void", + defaultValue: "", + description: "Callback fired when the drawer requests to be closed.", + }, + { + name: "onOpen", + type: "(event: MouseEvent | KeyboardEvent) => void", + defaultValue: "", + description: "Callback fired when the drawer requests to be opened (used in SwipeableDrawer).", + }, + { + name: "variant", + type: "\"permanent\" | \"persistent\" | \"temporary\"", + defaultValue: "\"temporary\"", + description: "Defines the behavior of the drawer (e.g., persistent drawers stay open).", + }, + { + name: "ModalProps", + type: "object", + defaultValue: "", + description: "Properties applied to the modal component used internally by the drawer.", + }, + { + name: "keepMounted", + type: "boolean", + defaultValue: "true", + description: "When set to true, the drawer's contents remain mounted in the DOM when closed.", + }, + { + name: "disableBackdropTransition", + type: "boolean", + defaultValue: "false", + description: "If true, disables the transition effect when the backdrop is shown or hidden.", + }, + { + name: "children", + type: "ReactNode", + defaultValue: "", + description: "The content to be rendered inside the drawer.", + }, + { + name: "className", + type: "string", + defaultValue: "", + description: "The CSS class applied to the drawer's root element.", + }, + { + name: "style", + type: "object", + defaultValue: "", + description: "Inline styles applied to the drawer's root element.", + }, + ]; + + const location = useLocation(); + const { isDark } = useStyledDarkMode(); + + return ( + +
+ +

Drawer

+
+

+ A Drawer is an interactive component that serves as a sliding panel, providing users with quick access to additional content or navigation options. It helps streamline the user experience by allowing seamless transitions between different sections of an application or website, guiding users effortlessly through their tasks. +

+
+ navigate("/projects/sistent/components/drawer")} + title="Overview" + /> + + navigate("/projects/sistent/components/drawer/guidance") + } + title="Guidance" + /> + navigate("/projects/sistent/components/drawer/code")} + title="Code" + /> +
+
+

+ Drawers are essential components in a user interface, acting as expandable panels that provide quick access to additional content or navigation options. They enhance user experience by allowing seamless transitions between different sections of an application, keeping the main interface uncluttered. +

+ +

Props

+
+

+ Here are the commonly used props for the Drawer component, including both standard and swipeable variants: +

+ + + +
+ {/* Table Header */} +
+
Prop
+
Type
+
Default
+
Description
+
+ + {/* Table Body */} + {props.map((prop) => ( +
+
{prop.name}
+
{prop.type}
+
{prop.defaultValue}
+
{prop.description}
+
+ ))} +
+ +
+
+
+
+ + +

Types

+
+

+ Here's an explanation of the types of drawers you mentioned, along with their features and use cases: +

+

Temporary Drawer

+
    +
  • +

    + Temporary navigation drawers can toggle open or closed. Closed by default, the drawer opens temporarily above all other content until a section is selected. + The Drawer can be cancelled by clicking the overlay or pressing the Esc key. It closes when an item is selected, handled by controlling the open prop. +

    +
  • +
  • +
    + + + +
    +
  • +
+ + +

Mini Variant drawer

+
    +
  • +

    + In this variation, the persistent navigation drawer changes its width. Its resting state is as a mini-drawer at the same elevation as the content, clipped by the app bar. When expanded, it appears as the standard persistent navigation drawer. +

    +
  • +
  • +

    + The mini variant is recommended for apps sections that need quick selection access alongside content. +

    +
  • +
  • +
    + +
    +
  • +
+ +

Persistent drawer

+
    +
  • +

    + Persistent navigation drawers can toggle open or closed. The drawer sits on the same surface elevation as the content. It is closed by default and opens by selecting the menu icon, and stays open until closed by the user. The state of the drawer is remembered from action to action and session to session. +

    +
  • +
  • +

    + Persistent navigation drawers are acceptable for all sizes larger than mobile. They are not recommended for apps with multiple levels of hierarchy that require using an up arrow for navigation. +

    +
  • +
  • +
    + +
    +
  • + +
+
+
+ +

Permanent drawer

+
    +
  • +

    + Permanent navigation drawers are always visible and pinned to the left edge, at the same elevation as the content or background. They cannot be closed. +

    +
  • +
  • +

    + Permanent navigation drawers are the recommended default for desktop. +

    +
  • +
  • +
    + +
    +
  • +
+
+ + +

Adding Drawers

+
+

+ Sometimes, icons are used alongside labels in buttons to pass across + specific information or relay added information for a higher level + of understanding and better comprehension. Depending on the + information being conveyed, the icons can be placed on the left side + of the label text or on the right side of the label text. No + specific rules apply apart from spacing tips which may be considered + here. For full width buttons, if icons must be added, they should be + centered in the button alongside the label text. +

+
+
+
+ ); +}; + +export default SistentDrawer; diff --git a/src/sections/Projects/Sistent/components/index.js b/src/sections/Projects/Sistent/components/index.js index 2c5e401325b8..2f5639e963a0 100644 --- a/src/sections/Projects/Sistent/components/index.js +++ b/src/sections/Projects/Sistent/components/index.js @@ -79,6 +79,13 @@ const componentsData = [ "Box is used as a flexible container for layout and styling, allowing quick customization and responsive design adjustments.", url: "/projects/sistent/components/box", }, + { + id: 11, + name: "Drawer", + description: + "A Drawer component provides a sliding panel that can be used to display navigation links, actions, or additional content", + url: "/projects/sistent/components/drawer", + } ]; const SistentComponents = () => {