@grasp-labs/ds-react-components 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,45 +1,45 @@
1
1
  import { JSX, ReactElement, ReactNode } from 'react';
2
2
  /**
3
- * Represents a single route in the menu.
3
+ * Represents a single route in the sidebar.
4
4
  */
5
- export type MenuRoute = {
5
+ export type SidebarRoute = {
6
6
  /** Unique path of the route, used as key and for navigation */
7
7
  path: string;
8
- /** Display title of the menu item */
8
+ /** Display title of the sidebar item */
9
9
  title: string;
10
10
  /** Optional icon element to render next to the title */
11
11
  icon?: ReactNode;
12
12
  /** Nested children entries for submenus */
13
- children?: MenuRoute[];
13
+ children?: SidebarRoute[];
14
14
  /** Permissions required to display this route */
15
15
  permissions?: string[];
16
- /** Whether this route should be hidden from the menu */
17
- hideMenu?: boolean;
16
+ /** Whether this route should be hidden from the sidebar */
17
+ isHidden?: boolean;
18
18
  };
19
19
  /**
20
- * Props for the `Menu` component.
20
+ * Props for the `Sidebar` component.
21
21
  */
22
- export type MenuProps = {
23
- /** React element to display as the menu logo (e.g. an SVG component or img element) */
22
+ export type SidebarProps = {
23
+ /** React element to display as the sidebar logo (e.g. an SVG component or img element) */
24
24
  logo: ReactElement;
25
- /** Text to display in the footer */
26
- footerText: string;
27
- /** Array of routes to display in the menu */
28
- routes: MenuRoute[];
25
+ /** Content to display in the footer */
26
+ footerContent: React.ReactNode;
27
+ /** Array of routes to display in the sidebar */
28
+ routes: SidebarRoute[];
29
29
  /** Current user permissions used to filter routes */
30
30
  permissions?: string[];
31
31
  /** Optional additional class names for styling */
32
32
  className?: string;
33
33
  };
34
34
  /**
35
- * `Menu` is a vertical navigation component that displays a header with a logo,
35
+ * `Sidebar` is a vertical navigation component that displays a header with a logo,
36
36
  * a list of navigable entries (filtered by permissions), and a footer.
37
37
  *
38
38
  * @example
39
39
  * ```tsx
40
- * <Menu
40
+ * <Sidebar
41
41
  * logo={<MyLogo />}
42
- * footerText="© 2025 My Company"
42
+ * footerContent="© 2025 My Company"
43
43
  * routes={[
44
44
  * { path: "/dashboard", title: "Dashboard", icon: <DashboardIcon /> },
45
45
  * { path: "/settings", title: "Settings", icon: <SettingsIcon />, permissions: ["admin"] }
@@ -48,4 +48,4 @@ export type MenuProps = {
48
48
  * />
49
49
  * ```
50
50
  */
51
- export declare const Menu: ({ logo, footerText, routes, permissions, className, }: MenuProps) => JSX.Element;
51
+ export declare const Sidebar: ({ logo, footerContent, routes, permissions, className, }: SidebarProps) => JSX.Element;
@@ -1,33 +1,33 @@
1
1
  import { JSX, ReactNode } from 'react';
2
2
  /**
3
- * Represents a child route/entry in the menu hierarchy.
3
+ * Represents a child route/entry in the sidebar hierarchy.
4
4
  */
5
- export type MenuChild = {
5
+ export type SidebarChild = {
6
6
  /** Unique path of the child entry (if navigable) */
7
7
  path?: string;
8
- /** Display title of the menu item */
8
+ /** Display title of the sidebar item */
9
9
  title: string;
10
- /** Optional icon for the menu item */
10
+ /** Optional icon for the sidebar item */
11
11
  icon?: ReactNode;
12
12
  /** Nested children for submenus */
13
- children?: MenuChild[];
13
+ children?: SidebarChild[];
14
14
  /** Required permissions for the entry */
15
15
  permissions?: string[];
16
- /** Whether this entry should be hidden from the menu */
17
- hideMenu?: boolean;
16
+ /** Whether this entry should be hidden from the sidebar */
17
+ isHidden?: boolean;
18
18
  };
19
19
  /**
20
- * Props for the `MenuEntry` component.
20
+ * Props for the `SidebarEntry` component.
21
21
  */
22
- export type MenuEntryProps = {
22
+ export type SidebarEntryProps = {
23
23
  /** Icon to display before the title */
24
24
  icon?: ReactNode;
25
- /** Title text of the menu item */
25
+ /** Title text of the sidebar item */
26
26
  title: string;
27
27
  /** Path used for navigation when clicked (ignored if it has children) */
28
28
  path?: string;
29
- /** Nested children menu entries */
30
- childrenEntries?: MenuChild[];
29
+ /** Nested children sidebar entries */
30
+ childrenEntries?: SidebarChild[];
31
31
  /** Current user permissions for filtering children */
32
32
  permissions?: string[];
33
33
  /** The currently active path to highlight the entry */
@@ -40,15 +40,15 @@ export type MenuEntryProps = {
40
40
  depth?: number;
41
41
  };
42
42
  /**
43
- * `MenuEntry` renders a single menu item.
43
+ * `SidebarEntry` renders a single sidebar item.
44
44
  *
45
45
  * - If the entry has children, it can expand/collapse to reveal them.
46
46
  * - If it has a `path`, clicking navigates to that path via `onNavigate`.
47
- * - Entries are filtered by `permissions` and `hideMenu` before rendering.
47
+ * - Entries are filtered by `permissions` and `isHidden` before rendering.
48
48
  *
49
49
  * @example
50
50
  * ```tsx
51
- * <MenuEntry
51
+ * <SidebarEntry
52
52
  * title="Settings"
53
53
  * path="/settings"
54
54
  * icon={<SettingsIcon />}
@@ -56,7 +56,7 @@ export type MenuEntryProps = {
56
56
  * onNavigate={(path) => console.log("Navigate to:", path)}
57
57
  * />
58
58
  *
59
- * <MenuEntry
59
+ * <SidebarEntry
60
60
  * title="Admin"
61
61
  * icon={<AdminIcon />}
62
62
  * childrenEntries={[
@@ -69,5 +69,5 @@ export type MenuEntryProps = {
69
69
  * />
70
70
  * ```
71
71
  */
72
- declare const MenuEntry: ({ icon, title, path, childrenEntries, permissions, className, activePath, onNavigate, depth, }: MenuEntryProps) => JSX.Element;
73
- export default MenuEntry;
72
+ declare const SidebarEntry: ({ icon, title, path, childrenEntries, permissions, className, activePath, onNavigate, depth, }: SidebarEntryProps) => JSX.Element;
73
+ export default SidebarEntry;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Barrel exports for the Sidebar system.
3
+ * Allows importing the main Sidebar component.
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * import { Sidebar } from "@/components/Sidebar";
8
+ * ```
9
+ */
10
+ export { Sidebar } from './Sidebar';
11
+ export type { SidebarProps, SidebarRoute } from './Sidebar';