+ 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.
+
+ 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.
+
+ 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 (
+
+
+ The Drawer component serves as a slide-out panel that provides additional content or navigation options without navigating away from the current page.
+
+ For proper application, these Drawers can be used for different
+ purposes to enable easier and consistent combination when guiding
+ users across digital experiences.
+
+ 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.
+
+ 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 (
+
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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 = () => {