@gofreego/tsutils 0.1.19 → 0.1.20

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.
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createTheme, ThemeProvider as ThemeProvider$1, CssBaseline, IconButton, Tooltip, Box, Typography, Button, CircularProgress, Snackbar, Alert, Dialog, DialogTitle, DialogContent, DialogActions, Drawer, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Collapse } from '@mui/material';
2
2
  import { SentimentDissatisfied, BrightnessAuto, DarkMode, LightMode, ExpandLess, ExpandMore } from '@mui/icons-material';
3
- import { useNavigate, useSearchParams, BrowserRouter, useLocation, Routes, Route, Outlet, NavLink } from 'react-router-dom';
3
+ import { useNavigate, useSearchParams, Link, BrowserRouter, useLocation, Routes, Route, Outlet, NavLink } from 'react-router-dom';
4
4
  import { createContext, useState, useMemo, useEffect, useCallback, useContext } from 'react';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import ReactMarkdown from 'react-markdown';
@@ -12,6 +12,7 @@ import ContentCopyIcon from '@mui/icons-material/ContentCopy';
12
12
  import CheckIcon from '@mui/icons-material/Check';
13
13
  import { createHighlighter } from 'shiki';
14
14
  import WarningAmberIcon from '@mui/icons-material/WarningAmber';
15
+ import HomeIcon from '@mui/icons-material/Home';
15
16
 
16
17
  var __defProp = Object.defineProperty;
17
18
  var __export = (target, all) => {
@@ -802,6 +803,8 @@ var flattenMenuRoutes = (items) => {
802
803
  var SidebarLayoutRouterInner = ({
803
804
  menuItems,
804
805
  sidebarWidth = 250,
806
+ header,
807
+ footer,
805
808
  className = "",
806
809
  onMenuChange,
807
810
  style,
@@ -857,7 +860,7 @@ var SidebarLayoutRouterInner = ({
857
860
  ...style
858
861
  },
859
862
  children: [
860
- /* @__PURE__ */ jsx(
863
+ /* @__PURE__ */ jsxs(
861
864
  Drawer,
862
865
  {
863
866
  variant: "permanent",
@@ -870,18 +873,24 @@ var SidebarLayoutRouterInner = ({
870
873
  position: "relative",
871
874
  borderRight: "1px solid",
872
875
  borderColor: "divider",
876
+ display: "flex",
877
+ flexDirection: "column",
873
878
  ...sidebarStyle
874
879
  }
875
880
  },
876
- children: /* @__PURE__ */ jsx(List, { sx: { p: 0 }, children: menuItems.filter((item) => item.label).map((item) => /* @__PURE__ */ jsx(
877
- RouterMenuItem,
878
- {
879
- item,
880
- expanded,
881
- onToggle: handleToggle
882
- },
883
- item.id
884
- )) })
881
+ children: [
882
+ header && /* @__PURE__ */ jsx(Box, { className: "sidebar-header", children: header }),
883
+ /* @__PURE__ */ jsx(List, { sx: { p: 0, flexGrow: 1, overflowY: "auto" }, children: menuItems.filter((item) => item.label).map((item) => /* @__PURE__ */ jsx(
884
+ RouterMenuItem,
885
+ {
886
+ item,
887
+ expanded,
888
+ onToggle: handleToggle
889
+ },
890
+ item.id
891
+ )) }),
892
+ footer && /* @__PURE__ */ jsx(Box, { className: "sidebar-footer", children: footer })
893
+ ]
885
894
  }
886
895
  ),
887
896
  /* @__PURE__ */ jsx(
@@ -985,6 +994,8 @@ var StateMenuItem = ({ item, selectedId, depth = 0, expanded, onToggle, onClick
985
994
  var SidebarLayoutWithState = ({
986
995
  menuItems,
987
996
  sidebarWidth = 250,
997
+ header,
998
+ footer,
988
999
  className = "",
989
1000
  defaultSelected,
990
1001
  onMenuChange,
@@ -1036,7 +1047,7 @@ var SidebarLayoutWithState = ({
1036
1047
  ...style
1037
1048
  },
1038
1049
  children: [
1039
- /* @__PURE__ */ jsx(
1050
+ /* @__PURE__ */ jsxs(
1040
1051
  Drawer,
1041
1052
  {
1042
1053
  variant: "permanent",
@@ -1049,20 +1060,26 @@ var SidebarLayoutWithState = ({
1049
1060
  position: "relative",
1050
1061
  borderRight: "1px solid",
1051
1062
  borderColor: "divider",
1063
+ display: "flex",
1064
+ flexDirection: "column",
1052
1065
  ...sidebarStyle
1053
1066
  }
1054
1067
  },
1055
- children: /* @__PURE__ */ jsx(List, { sx: { p: 0 }, children: menuItems.filter((item) => item.label).map((item) => /* @__PURE__ */ jsx(
1056
- StateMenuItem,
1057
- {
1058
- item,
1059
- selectedId,
1060
- expanded,
1061
- onToggle: handleToggle,
1062
- onClick: handleMenuClick
1063
- },
1064
- item.id
1065
- )) })
1068
+ children: [
1069
+ header && /* @__PURE__ */ jsx(Box, { className: "sidebar-header", children: header }),
1070
+ /* @__PURE__ */ jsx(List, { sx: { p: 0, flexGrow: 1, overflowY: "auto" }, children: menuItems.filter((item) => item.label).map((item) => /* @__PURE__ */ jsx(
1071
+ StateMenuItem,
1072
+ {
1073
+ item,
1074
+ selectedId,
1075
+ expanded,
1076
+ onToggle: handleToggle,
1077
+ onClick: handleMenuClick
1078
+ },
1079
+ item.id
1080
+ )) }),
1081
+ footer && /* @__PURE__ */ jsx(Box, { className: "sidebar-footer", children: footer })
1082
+ ]
1066
1083
  }
1067
1084
  ),
1068
1085
  /* @__PURE__ */ jsx(
@@ -1320,6 +1337,16 @@ var ConfirmDialog = ({
1320
1337
  ] })
1321
1338
  ] });
1322
1339
  };
1340
+ var SidebarHeader = ({
1341
+ title,
1342
+ homePath = "/",
1343
+ showHome = true
1344
+ }) => {
1345
+ return /* @__PURE__ */ jsxs(Box, { sx: { padding: "16px", display: "flex", alignItems: "center", borderBottom: "1px solid rgba(255, 255, 255, 0.12)", gap: "8px" }, children: [
1346
+ showHome && /* @__PURE__ */ jsx(IconButton, { component: Link, to: homePath, size: "small", sx: { color: "text.primary", ml: -1 }, children: /* @__PURE__ */ jsx(HomeIcon, {}) }),
1347
+ /* @__PURE__ */ jsx(Typography, { variant: "h6", sx: { fontWeight: "bold", color: "primary.main" }, children: title })
1348
+ ] });
1349
+ };
1323
1350
 
1324
1351
  // src/utils/cn.ts
1325
1352
  function cn(...classes) {
@@ -1516,6 +1543,6 @@ var AuthService = class _AuthService {
1516
1543
  }
1517
1544
  };
1518
1545
 
1519
- export { AuthService, ConfirmDialog, HttpClient, LocalStorage, LoginCallbackPage, NotFoundPage, NotificationProvider, ProtectedRoute, ReadmeViewer_default as ReadmeViewer, SessionManager, SidebarLayout, ThemeProvider, ThemeToggle, borderRadius, cn, darkTheme, debounce, elevation, extractErrorMessage, fontSize, fontWeight, formatDate, getHighlighter, lightTheme, lineHeight, spacing, throttle, tokens_exports as tokens, transition, useNotification, useTheme, zIndex };
1546
+ export { AuthService, ConfirmDialog, HttpClient, LocalStorage, LoginCallbackPage, NotFoundPage, NotificationProvider, ProtectedRoute, ReadmeViewer_default as ReadmeViewer, SessionManager, SidebarHeader, SidebarLayout, ThemeProvider, ThemeToggle, borderRadius, cn, darkTheme, debounce, elevation, extractErrorMessage, fontSize, fontWeight, formatDate, getHighlighter, lightTheme, lineHeight, spacing, throttle, tokens_exports as tokens, transition, useNotification, useTheme, zIndex };
1520
1547
  //# sourceMappingURL=index.mjs.map
1521
1548
  //# sourceMappingURL=index.mjs.map