@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.
package/README.md CHANGED
@@ -48,9 +48,7 @@
48
48
 
49
49
  **Note:** Current npm tags 👇
50
50
 
51
- `@beta` is archived.
52
-
53
- `@next` only points to pre-releases.
51
+ `@next` for the pre-releases (can be unstable).
54
52
 
55
53
  `@latest` for the latest stable release.
56
54
 
@@ -58,8 +56,6 @@
58
56
  npm install @sikka/hawa
59
57
  ```
60
58
 
61
- </br>
62
-
63
59
  ## Contributing
64
60
 
65
61
  Please see our [contributing.md](/CONTRIBUTING.md).
@@ -110,12 +110,6 @@ type AppLayoutTypes = {
110
110
  * - 'parent': Inherits width from parent element.
111
111
  */
112
112
  profileMenuWidth?: "default" | "sm" | "lg" | "parent";
113
- /** Event handler for drawer expansion. */
114
- onDrawerExpand?: (e: any) => void;
115
- /** Specifies whether to keep the drawer open. */
116
- keepOpen: boolean;
117
- /** The method used to control whether the drawer is expanded or not. */
118
- setKeepOpen: (value: boolean) => void;
119
113
  /** Specifies additional actions for the drawer footer. */
120
114
  DrawerFooterActions?: any;
121
115
  /** Specifies the item that was clicked. */
@@ -110,12 +110,6 @@ type AppLayoutTypes = {
110
110
  * - 'parent': Inherits width from parent element.
111
111
  */
112
112
  profileMenuWidth?: "default" | "sm" | "lg" | "parent";
113
- /** Event handler for drawer expansion. */
114
- onDrawerExpand?: (e: any) => void;
115
- /** Specifies whether to keep the drawer open. */
116
- keepOpen: boolean;
117
- /** The method used to control whether the drawer is expanded or not. */
118
- setKeepOpen: (value: boolean) => void;
119
113
  /** Specifies additional actions for the drawer footer. */
120
114
  DrawerFooterActions?: any;
121
115
  /** Specifies the item that was clicked. */
@@ -68,6 +68,9 @@ function useClickOutside(handler, events, nodes) {
68
68
  return ref;
69
69
  }
70
70
 
71
+ // layout/appLayout/AppLayout.tsx
72
+ var Dialog = __toESM(require("@radix-ui/react-dialog"));
73
+
71
74
  // util/index.ts
72
75
  var import_clsx = require("clsx");
73
76
  var import_tailwind_merge = require("tailwind-merge");
@@ -1203,6 +1206,7 @@ var SidebarItem = ({
1203
1206
  };
1204
1207
 
1205
1208
  // layout/appLayout/AppLayout.tsx
1209
+ var LOCAL_STORAGE_KEY = "@sikka/hawa/keep-drawer-open";
1206
1210
  var AppLayout = ({
1207
1211
  profileMenuWidth = "default",
1208
1212
  DrawerFooterActions,
@@ -1213,14 +1217,18 @@ var AppLayout = ({
1213
1217
  drawerSize = "md",
1214
1218
  currentPage,
1215
1219
  clickedItem,
1216
- setKeepOpen,
1217
- keepOpen,
1218
1220
  DrawerLinkComponent,
1219
1221
  MenuLinkComponent,
1220
1222
  onAvatarClick,
1221
1223
  ...props
1222
1224
  }) => {
1223
1225
  var _a, _b;
1226
+ (0, import_react10.useEffect)(() => {
1227
+ let isDrawerOpen = localStorage.getItem(LOCAL_STORAGE_KEY);
1228
+ if (isDrawerOpen === null) {
1229
+ localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(false));
1230
+ }
1231
+ }, []);
1224
1232
  let closeDrawerWidth = 56;
1225
1233
  let openDrawerWidth = 200;
1226
1234
  let drawerSizeStyle = {
@@ -1236,8 +1244,15 @@ var AppLayout = ({
1236
1244
  const [size, setSize] = (0, import_react10.useState)(
1237
1245
  typeof window !== "undefined" && window.innerWidth || 1200
1238
1246
  );
1239
- const [openSideMenu, setOpenSideMenu] = (0, import_react10.useState)(true);
1240
- const [keepDrawerOpen, setKeepDrawerOpen] = (0, import_react10.useState)(keepOpen);
1247
+ const [openSideMenu, setOpenSideMenu] = (0, import_react10.useState)(() => {
1248
+ const savedState = localStorage.getItem(LOCAL_STORAGE_KEY);
1249
+ return savedState ? JSON.parse(savedState) : false;
1250
+ });
1251
+ const [container, setContainer] = import_react10.default.useState(null);
1252
+ const [keepDrawerOpen, setKeepDrawerOpen] = (0, import_react10.useState)(() => {
1253
+ const savedState = localStorage.getItem(LOCAL_STORAGE_KEY);
1254
+ return savedState ? JSON.parse(savedState) : false;
1255
+ });
1241
1256
  const handleClickOutside = () => {
1242
1257
  if (typeof window !== "undefined") {
1243
1258
  if (window.innerWidth < 600) {
@@ -1253,6 +1268,8 @@ var AppLayout = ({
1253
1268
  setSize(window.innerWidth);
1254
1269
  if (window.innerWidth > 600) {
1255
1270
  setKeepDrawerOpen(false);
1271
+ } else {
1272
+ localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(false));
1256
1273
  }
1257
1274
  };
1258
1275
  resize();
@@ -1263,12 +1280,16 @@ var AppLayout = ({
1263
1280
  }
1264
1281
  }, []);
1265
1282
  (0, import_react10.useEffect)(() => {
1266
- setKeepDrawerOpen(keepOpen);
1267
- }, [setKeepOpen]);
1283
+ setKeepDrawerOpen(() => {
1284
+ const savedState = localStorage.getItem(LOCAL_STORAGE_KEY);
1285
+ return savedState ? JSON.parse(savedState) : true;
1286
+ });
1287
+ }, [setKeepDrawerOpen]);
1268
1288
  (0, import_react10.useEffect)(() => {
1269
1289
  if (size > 600) {
1270
1290
  setOpenSideMenu(keepDrawerOpen);
1271
1291
  } else {
1292
+ setKeepDrawerOpen(false);
1272
1293
  setOpenSideMenu(false);
1273
1294
  }
1274
1295
  }, [size, keepDrawerOpen]);
@@ -1278,7 +1299,7 @@ var AppLayout = ({
1278
1299
  {
1279
1300
  dir: direction,
1280
1301
  className: cn(
1281
- "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",
1302
+ "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",
1282
1303
  bordered && "hawa-border-b-[1px]"
1283
1304
  )
1284
1305
  },
@@ -1306,7 +1327,7 @@ var AppLayout = ({
1306
1327
  "div",
1307
1328
  {
1308
1329
  onClick: () => setOpenSideMenu(true),
1309
- className: "hawa-z-40 hawa-mx-1 hawa-cursor-pointer hawa-rounded hawa-p-2 hawa-transition-all hover:hawa-bg-gray-100"
1330
+ className: "hawa-z-40 hawa-mx-1 hawa-cursor-pointer hawa-rounded hawa-p-2 hawa-transition-all "
1310
1331
  },
1311
1332
  /* @__PURE__ */ import_react10.default.createElement(MenuIcon, null)
1312
1333
  ),
@@ -1351,13 +1372,13 @@ var AppLayout = ({
1351
1372
  )
1352
1373
  }
1353
1374
  ))
1354
- ), /* @__PURE__ */ import_react10.default.createElement(
1375
+ ), /* @__PURE__ */ import_react10.default.createElement("div", { ref: setContainer }, /* @__PURE__ */ import_react10.default.createElement(
1355
1376
  "div",
1356
1377
  {
1357
1378
  className: cn(
1358
- "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",
1379
+ "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",
1359
1380
  isRTL ? "hawa-right-0" : "hawa-left-0",
1360
- bordered ? direction === "rtl" ? "hawa-border-s-[1px]" : "hawa-border-e-[1px]" : ""
1381
+ bordered ? size > 600 ? direction === "rtl" ? "hawa-border-s-[1px]" : "hawa-border-e-[1px]" : "" : ""
1361
1382
  ),
1362
1383
  style: {
1363
1384
  width: size > 600 ? openSideMenu ? `${drawerSizeStyle["opened"][drawerSize]}px` : `${drawerSizeStyle["closed"][drawerSize]}px` : openSideMenu ? `${drawerSizeStyle["opened"][drawerSize]}px` : "0px"
@@ -1468,9 +1489,10 @@ var AppLayout = ({
1468
1489
  size: "smallIcon",
1469
1490
  onClick: () => {
1470
1491
  const newKeepOpenState = !keepDrawerOpen;
1471
- if (props.onDrawerExpand) {
1472
- props.onDrawerExpand(newKeepOpenState);
1473
- }
1492
+ localStorage.setItem(
1493
+ LOCAL_STORAGE_KEY,
1494
+ JSON.stringify(newKeepOpenState)
1495
+ );
1474
1496
  setKeepDrawerOpen(newKeepOpenState);
1475
1497
  }
1476
1498
  },
@@ -1496,10 +1518,17 @@ var AppLayout = ({
1496
1518
  )
1497
1519
  ) : null
1498
1520
  )
1521
+ )), /* @__PURE__ */ import_react10.default.createElement(
1522
+ Dialog.Root,
1523
+ {
1524
+ open: size < 600 && openSideMenu,
1525
+ onOpenChange: setOpenSideMenu
1526
+ },
1527
+ /* @__PURE__ */ import_react10.default.createElement(Dialog.Portal, { container }, /* @__PURE__ */ import_react10.default.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" }))
1499
1528
  ), /* @__PURE__ */ import_react10.default.createElement(
1500
1529
  "div",
1501
1530
  {
1502
- className: "hawa-fixed -hawa-z-10 hawa-overflow-y-auto hawa-transition-all",
1531
+ className: "hawa-fixed hawa-overflow-y-auto hawa-transition-all hawa-z-0",
1503
1532
  style: isRTL ? {
1504
1533
  left: "0px",
1505
1534
  top: props.topBar ? "56px" : "0px",