@lerianstudio/sindarian-ui 1.0.0-beta.22 → 1.0.0-beta.24

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 +1 @@
1
- {"version":3,"file":"sidebar-back-button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sidebar/sidebar-back-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,2CAS1C"}
1
+ {"version":3,"file":"sidebar-back-button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sidebar/sidebar-back-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,2CAM1C"}
@@ -3,9 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SidebarBackButton = SidebarBackButton;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const sidebar_item_1 = require("./sidebar-item");
6
- const separator_1 = require("../separator");
7
- const sidebar_provider_1 = require("./sidebar-provider");
8
6
  function SidebarBackButton({ ...props }) {
9
- const { isCollapsed } = (0, sidebar_provider_1.useSidebar)();
10
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex w-full flex-col gap-1.5 pt-1.5", children: [(0, jsx_runtime_1.jsx)(sidebar_item_1.SidebarItem, { ...props }), isCollapsed && (0, jsx_runtime_1.jsx)(separator_1.Separator, {})] }));
7
+ return ((0, jsx_runtime_1.jsx)("div", { className: "flex w-full flex-col", children: (0, jsx_runtime_1.jsx)(sidebar_item_1.SidebarItem, { ...props }) }));
11
8
  }
@@ -5,7 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const utils_1 = require("../../../lib/utils");
6
6
  const sidebar_provider_1 = require("./sidebar-provider");
7
7
  const separator_1 = require("../separator");
8
- const SidebarHeader = ({ className, collapsed, ...props }) => ((0, jsx_runtime_1.jsx)("div", { "data-slot": "sidebar-header", "data-collapsed": collapsed, className: (0, utils_1.cn)('dark:bg-cod-gray-950 flex h-[60px] w-full items-center bg-white px-4', collapsed && 'justify-center p-0', className), ...props }));
8
+ const SidebarHeader = ({ className, collapsed, ...props }) => ((0, jsx_runtime_1.jsx)("div", { "data-slot": "sidebar-header", "data-collapsed": collapsed, className: (0, utils_1.cn)('dark:bg-cod-gray-950 flex w-full flex-col items-center bg-white p-4', collapsed && 'justify-center p-0', className), ...props }));
9
9
  exports.SidebarHeader = SidebarHeader;
10
10
  const SidebarContent = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)("div", { "data-slot": "sidebar-content", className: (0, utils_1.cn)('group flex flex-1 flex-col gap-4 overflow-hidden bg-white px-4 pt-4 transition-all duration-300 ease-in-out', 'group-data-[collapsed=true]/sidebar:items-center group-data-[collapsed=true]/sidebar:px-2', className), ...props }));
11
11
  exports.SidebarContent = SidebarContent;
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  export type SidebarContextProps = {
3
3
  isCollapsed: boolean;
4
4
  items: Record<string, boolean>;
5
+ setItems: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;
5
6
  getItemCollapsed: (key: string) => boolean;
6
7
  setItemCollapsed: (key: string, value: boolean) => void;
7
8
  toggleSidebar: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sidebar/sidebar-provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAC1C,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvD,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAMD,eAAO,MAAM,UAAU,2BAMtB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,cAAc,KAAK,CAAC,iBAAiB,4CAuCpE,CAAA"}
1
+ {"version":3,"file":"sidebar-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sidebar/sidebar-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACvE,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAC1C,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvD,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAMD,eAAO,MAAM,UAAU,2BAMtB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,cAAc,KAAK,CAAC,iBAAiB,4CAqDpE,CAAA"}
@@ -6,8 +6,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.SidebarProvider = exports.useSidebar = void 0;
8
8
  const jsx_runtime_1 = require("react/jsx-runtime");
9
- const storage_1 = require("../../../lib/storage");
10
9
  const react_1 = __importDefault(require("react"));
10
+ const storage_1 = require("../../../lib/storage");
11
11
  const SidebarContext = react_1.default.createContext(undefined);
12
12
  const useSidebar = () => {
13
13
  const context = react_1.default.useContext(SidebarContext);
@@ -18,8 +18,9 @@ const useSidebar = () => {
18
18
  };
19
19
  exports.useSidebar = useSidebar;
20
20
  const SidebarProvider = ({ children }) => {
21
- const [collapsed, setCollapsed] = react_1.default.useState((0, storage_1.getStorage)('sidebar-collapsed', false) === 'true');
22
- const [items, _setItems] = react_1.default.useState((0, storage_1.getStorageObject)('sidebar-items', {}));
21
+ const [hydrated, setHydrated] = react_1.default.useState(false);
22
+ const [collapsed, setCollapsed] = react_1.default.useState(false);
23
+ const [items, _setItems] = react_1.default.useState({});
23
24
  const toggleSidebar = () => setCollapsed((collapsed) => !collapsed);
24
25
  const getItemCollapsed = (key) => {
25
26
  return items[key] || false;
@@ -27,15 +28,29 @@ const SidebarProvider = ({ children }) => {
27
28
  const setItemCollapsed = (key, value) => {
28
29
  _setItems((items) => ({ ...items, [key]: value }));
29
30
  };
31
+ // Read from localStorage after hydration to avoid SSR mismatch
32
+ react_1.default.useEffect(() => {
33
+ setCollapsed((0, storage_1.getStorage)('sidebar-collapsed', false) === 'true');
34
+ _setItems((0, storage_1.getStorageObject)('sidebar-items', {}));
35
+ setHydrated(true);
36
+ }, []);
37
+ // Only persist to localStorage after hydration to avoid overwriting stored values
30
38
  react_1.default.useEffect(() => {
39
+ if (!hydrated) {
40
+ return;
41
+ }
31
42
  localStorage.setItem('sidebar-collapsed', JSON.stringify(collapsed));
32
- }, [collapsed]);
43
+ }, [collapsed, hydrated]);
33
44
  react_1.default.useEffect(() => {
45
+ if (!hydrated) {
46
+ return;
47
+ }
34
48
  localStorage.setItem('sidebar-items', JSON.stringify(items));
35
- }, [items]);
49
+ }, [items, hydrated]);
36
50
  return ((0, jsx_runtime_1.jsx)(SidebarContext.Provider, { value: {
37
51
  isCollapsed: collapsed,
38
52
  items,
53
+ setItems: _setItems,
39
54
  getItemCollapsed,
40
55
  setItemCollapsed,
41
56
  toggleSidebar
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lerianstudio/sindarian-ui",
3
- "version": "1.0.0-beta.22",
3
+ "version": "1.0.0-beta.24",
4
4
  "description": "Sindarian UI - A UI library for Midaz Console",
5
5
  "license": "ISC",
6
6
  "author": {