@sikka/hawa 0.36.0-next → 0.36.2-next

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.
@@ -33,6 +33,9 @@ function useClickOutside(handler, events, nodes) {
33
33
  return ref;
34
34
  }
35
35
 
36
+ // layout/appLayout/AppLayout.tsx
37
+ import * as Dialog from "@radix-ui/react-dialog";
38
+
36
39
  // util/index.ts
37
40
  import { clsx } from "clsx";
38
41
  import { twMerge } from "tailwind-merge";
@@ -1168,6 +1171,7 @@ var SidebarItem = ({
1168
1171
  };
1169
1172
 
1170
1173
  // layout/appLayout/AppLayout.tsx
1174
+ var LOCAL_STORAGE_KEY = "@sikka/hawa/keep-drawer-open";
1171
1175
  var AppLayout = ({
1172
1176
  profileMenuWidth = "default",
1173
1177
  DrawerFooterActions,
@@ -1178,14 +1182,18 @@ var AppLayout = ({
1178
1182
  drawerSize = "md",
1179
1183
  currentPage,
1180
1184
  clickedItem,
1181
- setKeepOpen,
1182
- keepOpen,
1183
1185
  DrawerLinkComponent,
1184
1186
  MenuLinkComponent,
1185
1187
  onAvatarClick,
1186
1188
  ...props
1187
1189
  }) => {
1188
1190
  var _a, _b;
1191
+ useEffect2(() => {
1192
+ let isDrawerOpen = localStorage.getItem(LOCAL_STORAGE_KEY);
1193
+ if (isDrawerOpen === null) {
1194
+ localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(false));
1195
+ }
1196
+ }, []);
1189
1197
  let closeDrawerWidth = 56;
1190
1198
  let openDrawerWidth = 200;
1191
1199
  let drawerSizeStyle = {
@@ -1201,8 +1209,15 @@ var AppLayout = ({
1201
1209
  const [size, setSize] = useState2(
1202
1210
  typeof window !== "undefined" && window.innerWidth || 1200
1203
1211
  );
1204
- const [openSideMenu, setOpenSideMenu] = useState2(true);
1205
- const [keepDrawerOpen, setKeepDrawerOpen] = useState2(keepOpen);
1212
+ const [openSideMenu, setOpenSideMenu] = useState2(() => {
1213
+ const savedState = localStorage.getItem(LOCAL_STORAGE_KEY);
1214
+ return savedState ? JSON.parse(savedState) : false;
1215
+ });
1216
+ const [container, setContainer] = React12.useState(null);
1217
+ const [keepDrawerOpen, setKeepDrawerOpen] = useState2(() => {
1218
+ const savedState = localStorage.getItem(LOCAL_STORAGE_KEY);
1219
+ return savedState ? JSON.parse(savedState) : false;
1220
+ });
1206
1221
  const handleClickOutside = () => {
1207
1222
  if (typeof window !== "undefined") {
1208
1223
  if (window.innerWidth < 600) {
@@ -1218,6 +1233,8 @@ var AppLayout = ({
1218
1233
  setSize(window.innerWidth);
1219
1234
  if (window.innerWidth > 600) {
1220
1235
  setKeepDrawerOpen(false);
1236
+ } else {
1237
+ localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(false));
1221
1238
  }
1222
1239
  };
1223
1240
  resize();
@@ -1228,12 +1245,16 @@ var AppLayout = ({
1228
1245
  }
1229
1246
  }, []);
1230
1247
  useEffect2(() => {
1231
- setKeepDrawerOpen(keepOpen);
1232
- }, [setKeepOpen]);
1248
+ setKeepDrawerOpen(() => {
1249
+ const savedState = localStorage.getItem(LOCAL_STORAGE_KEY);
1250
+ return savedState ? JSON.parse(savedState) : true;
1251
+ });
1252
+ }, [setKeepDrawerOpen]);
1233
1253
  useEffect2(() => {
1234
1254
  if (size > 600) {
1235
1255
  setOpenSideMenu(keepDrawerOpen);
1236
1256
  } else {
1257
+ setKeepDrawerOpen(false);
1237
1258
  setOpenSideMenu(false);
1238
1259
  }
1239
1260
  }, [size, keepDrawerOpen]);
@@ -1243,7 +1264,7 @@ var AppLayout = ({
1243
1264
  {
1244
1265
  dir: direction,
1245
1266
  className: cn(
1246
- "hawa-fixed hawa-end-0 hawa-start-0 hawa-top-0 hawa-z-0 hawa-flex hawa-h-14 hawa-w-full hawa-items-center hawa-justify-between hawa-bg-primary-foreground hawa-p-2",
1267
+ "hawa-fixed hawa-end-0 hawa-start-0 hawa-top-0 hawa-z-10 hawa-flex hawa-h-14 hawa-w-full hawa-items-center hawa-justify-between hawa-bg-primary-foreground hawa-p-2",
1247
1268
  bordered && "hawa-border-b-[1px]"
1248
1269
  )
1249
1270
  },
@@ -1271,7 +1292,7 @@ var AppLayout = ({
1271
1292
  "div",
1272
1293
  {
1273
1294
  onClick: () => setOpenSideMenu(true),
1274
- className: "hawa-z-40 hawa-mx-1 hawa-cursor-pointer hawa-rounded hawa-p-2 hawa-transition-all hover:hawa-bg-gray-100"
1295
+ className: "hawa-z-40 hawa-mx-1 hawa-cursor-pointer hawa-rounded hawa-p-2 hawa-transition-all "
1275
1296
  },
1276
1297
  /* @__PURE__ */ React12.createElement(MenuIcon, null)
1277
1298
  ),
@@ -1316,13 +1337,13 @@ var AppLayout = ({
1316
1337
  )
1317
1338
  }
1318
1339
  ))
1319
- ), /* @__PURE__ */ React12.createElement(
1340
+ ), /* @__PURE__ */ React12.createElement("div", { ref: setContainer }, /* @__PURE__ */ React12.createElement(
1320
1341
  "div",
1321
1342
  {
1322
1343
  className: cn(
1323
- "hawa-fixed hawa-z-0 hawa-flex hawa-flex-col hawa-justify-between hawa-overflow-x-clip hawa-transition-all hawa-top-0 hawa-h-[calc(100dvh)] hawa-bg-primary-foreground",
1344
+ "hawa-fixed hawa-z-40 hawa-flex hawa-flex-col hawa-justify-between hawa-overflow-x-clip hawa-transition-all hawa-top-0 hawa-h-[calc(100dvh)] hawa-bg-primary-foreground",
1324
1345
  isRTL ? "hawa-right-0" : "hawa-left-0",
1325
- bordered ? direction === "rtl" ? "hawa-border-s-[1px]" : "hawa-border-e-[1px]" : ""
1346
+ bordered ? size > 600 ? direction === "rtl" ? "hawa-border-s-[1px]" : "hawa-border-e-[1px]" : "" : ""
1326
1347
  ),
1327
1348
  style: {
1328
1349
  width: size > 600 ? openSideMenu ? `${drawerSizeStyle["opened"][drawerSize]}px` : `${drawerSizeStyle["closed"][drawerSize]}px` : openSideMenu ? `${drawerSizeStyle["opened"][drawerSize]}px` : "0px"
@@ -1433,9 +1454,10 @@ var AppLayout = ({
1433
1454
  size: "smallIcon",
1434
1455
  onClick: () => {
1435
1456
  const newKeepOpenState = !keepDrawerOpen;
1436
- if (props.onDrawerExpand) {
1437
- props.onDrawerExpand(newKeepOpenState);
1438
- }
1457
+ localStorage.setItem(
1458
+ LOCAL_STORAGE_KEY,
1459
+ JSON.stringify(newKeepOpenState)
1460
+ );
1439
1461
  setKeepDrawerOpen(newKeepOpenState);
1440
1462
  }
1441
1463
  },
@@ -1461,10 +1483,17 @@ var AppLayout = ({
1461
1483
  )
1462
1484
  ) : null
1463
1485
  )
1486
+ )), /* @__PURE__ */ React12.createElement(
1487
+ Dialog.Root,
1488
+ {
1489
+ open: size < 600 && openSideMenu,
1490
+ onOpenChange: setOpenSideMenu
1491
+ },
1492
+ /* @__PURE__ */ React12.createElement(Dialog.Portal, { container }, /* @__PURE__ */ React12.createElement(Dialog.Overlay, { className: "hawa-fixed hawa-inset-0 hawa-bg-foreground/80 hawa-backdrop-blur-sm data-[state=open]:hawa-animate-in data-[state=closed]:hawa-animate-out hawa-z-10 data-[state=closed]:hawa-fade-out-0 data-[state=open]:hawa-fade-in-0" }))
1464
1493
  ), /* @__PURE__ */ React12.createElement(
1465
1494
  "div",
1466
1495
  {
1467
- className: "hawa-fixed -hawa-z-10 hawa-overflow-y-auto hawa-transition-all",
1496
+ className: "hawa-fixed hawa-overflow-y-auto hawa-transition-all hawa-z-0",
1468
1497
  style: isRTL ? {
1469
1498
  left: "0px",
1470
1499
  top: props.topBar ? "56px" : "0px",