@undefine-ui/design-system 2.5.0 → 2.6.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.
package/README.md CHANGED
@@ -173,7 +173,7 @@ Everything is re-exported from `src/index.ts`. Key groups:
173
173
  | Group | Exports |
174
174
  | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
175
175
  | Components | `CopyButton`, `HookForm` helpers (`Form`, `Field`, `RHFSwitch`, etc.), `Icon`, `Logo`, `LoadingScreen`, `Table`, `Upload` |
176
- | Hooks | `useBoolean`, `useCopyToClipboard`, `useEventListener`, `useLocalStorage`, `useResponsive`, `useSettings`, `useSetState`, `useScrollOffsetTop` |
176
+ | Hooks | `useBoolean`, `useCopyToClipboard`, `useEventListener`, `useLocalStorage`, `useResponsive`, `useSettings`, `useSetState`, `useScrollOffsetTop`, `usePopover` |
177
177
  | Contexts | `SettingsProvider`, `SettingsContext`, `defaultSettings`, `SettingsValueProps` |
178
178
  | Theme | `ThemeProvider`, `createTheme`, `colorSchemes`, `components`, `palette`, `radius`, `shadows`, `customSpacing`, utilities such as `varAlpha`, `bgGradient`, `hideScrollX/Y` |
179
179
  | Utilities | `changeCase` helpers, `formatNumber`, generic `helpers` |
package/dist/index.cjs CHANGED
@@ -154,6 +154,7 @@ __export(index_exports, {
154
154
  useCopyToClipboard: () => useCopyToClipboard,
155
155
  useEventListener: () => useEventListener,
156
156
  useLocalStorage: () => useLocalStorage,
157
+ usePopover: () => usePopover,
157
158
  useResponsive: () => useResponsive,
158
159
  useScrollOffSetTop: () => useScrollOffSetTop,
159
160
  useSetState: () => useSetState,
@@ -319,8 +320,27 @@ var useBoolean = (defaultValue) => {
319
320
  return memoizedValue;
320
321
  };
321
322
 
323
+ // src/hooks/usePopover.ts
324
+ var import_react2 = require("react");
325
+ var usePopover = () => {
326
+ const [anchorEl, setAnchorEl] = (0, import_react2.useState)(null);
327
+ const onOpen = (0, import_react2.useCallback)((event) => {
328
+ setAnchorEl(event.currentTarget);
329
+ }, []);
330
+ const onClose = (0, import_react2.useCallback)(() => {
331
+ setAnchorEl(null);
332
+ }, []);
333
+ return {
334
+ open: !!anchorEl,
335
+ anchorEl,
336
+ onOpen,
337
+ onClose,
338
+ setAnchorEl
339
+ };
340
+ };
341
+
322
342
  // src/hooks/useSettings.ts
323
- var import_react4 = require("react");
343
+ var import_react5 = require("react");
324
344
 
325
345
  // src/theme/styles/utils.ts
326
346
  var stylesMode = {
@@ -566,15 +586,15 @@ var defaultSettings = {
566
586
  };
567
587
 
568
588
  // src/contexts/settings/context.tsx
569
- var import_react3 = require("react");
589
+ var import_react4 = require("react");
570
590
 
571
591
  // src/hooks/useLocalStorage.ts
572
- var import_react2 = require("react");
592
+ var import_react3 = require("react");
573
593
  var useLocalStorage = (key, initialState) => {
574
- const [state, set] = (0, import_react2.useState)(initialState);
594
+ const [state, set] = (0, import_react3.useState)(initialState);
575
595
  const multiValue = initialState && typeof initialState === "object";
576
596
  const canReset = !isEqual(state, initialState);
577
- (0, import_react2.useEffect)(() => {
597
+ (0, import_react3.useEffect)(() => {
578
598
  const restoredValue = getStorage(key);
579
599
  if (restoredValue) {
580
600
  if (multiValue) {
@@ -584,7 +604,7 @@ var useLocalStorage = (key, initialState) => {
584
604
  }
585
605
  }
586
606
  }, [key, multiValue]);
587
- const setState = (0, import_react2.useCallback)(
607
+ const setState = (0, import_react3.useCallback)(
588
608
  (updateState) => {
589
609
  if (multiValue) {
590
610
  set((prevValue) => {
@@ -598,7 +618,7 @@ var useLocalStorage = (key, initialState) => {
598
618
  },
599
619
  [key, multiValue]
600
620
  );
601
- const setField = (0, import_react2.useCallback)(
621
+ const setField = (0, import_react3.useCallback)(
602
622
  (name, updateValue) => {
603
623
  if (multiValue) {
604
624
  setState({ [name]: updateValue });
@@ -606,11 +626,11 @@ var useLocalStorage = (key, initialState) => {
606
626
  },
607
627
  [multiValue, setState]
608
628
  );
609
- const resetState = (0, import_react2.useCallback)(() => {
629
+ const resetState = (0, import_react3.useCallback)(() => {
610
630
  set(initialState);
611
631
  removeStorage(key);
612
632
  }, [initialState, key]);
613
- const memoizedValue = (0, import_react2.useMemo)(
633
+ const memoizedValue = (0, import_react3.useMemo)(
614
634
  () => ({
615
635
  state,
616
636
  setState,
@@ -670,19 +690,19 @@ var LocalStorageGetItem = (key, defaultValue = "") => {
670
690
 
671
691
  // src/contexts/settings/context.tsx
672
692
  var import_jsx_runtime = require("react/jsx-runtime");
673
- var SettingsContext = (0, import_react3.createContext)({});
693
+ var SettingsContext = (0, import_react4.createContext)({});
674
694
  var SettingsConsumer = SettingsContext.Consumer;
675
695
  var SettingsProvider = ({ children, settings }) => {
676
696
  const localStorage2 = useLocalStorage(STORAGE_KEY, settings);
677
697
  const values = localStorage2;
678
- const [openDrawer, setOpenDrawer] = (0, import_react3.useState)(false);
679
- const onToggleDrawer = (0, import_react3.useCallback)(() => {
698
+ const [openDrawer, setOpenDrawer] = (0, import_react4.useState)(false);
699
+ const onToggleDrawer = (0, import_react4.useCallback)(() => {
680
700
  setOpenDrawer((prev) => !prev);
681
701
  }, []);
682
- const onCloseDrawer = (0, import_react3.useCallback)(() => {
702
+ const onCloseDrawer = (0, import_react4.useCallback)(() => {
683
703
  setOpenDrawer(false);
684
704
  }, []);
685
- const memoizedValue = (0, import_react3.useMemo)(
705
+ const memoizedValue = (0, import_react4.useMemo)(
686
706
  () => ({
687
707
  ...values.state,
688
708
  canReset: values.canReset,
@@ -709,29 +729,29 @@ var SettingsProvider = ({ children, settings }) => {
709
729
 
710
730
  // src/hooks/useSettings.ts
711
731
  var useSettings = () => {
712
- const context = (0, import_react4.useContext)(SettingsContext);
732
+ const context = (0, import_react5.useContext)(SettingsContext);
713
733
  if (!context) throw new Error("useSettings must be use inside SettingsProvider");
714
734
  return context;
715
735
  };
716
736
 
717
737
  // src/hooks/useSetState.ts
718
- var import_react5 = require("react");
738
+ var import_react6 = require("react");
719
739
  var useSetState = (initialState) => {
720
- const [state, set] = (0, import_react5.useState)(initialState);
740
+ const [state, set] = (0, import_react6.useState)(initialState);
721
741
  const canReset = !isEqual(state, initialState);
722
- const setState = (0, import_react5.useCallback)((updateState) => {
742
+ const setState = (0, import_react6.useCallback)((updateState) => {
723
743
  set((prevValue) => ({ ...prevValue, ...updateState }));
724
744
  }, []);
725
- const setField = (0, import_react5.useCallback)(
745
+ const setField = (0, import_react6.useCallback)(
726
746
  (name, updateValue) => {
727
747
  setState({ [name]: updateValue });
728
748
  },
729
749
  [setState]
730
750
  );
731
- const onResetState = (0, import_react5.useCallback)(() => {
751
+ const onResetState = (0, import_react6.useCallback)(() => {
732
752
  set(initialState);
733
753
  }, [initialState]);
734
- const memoizedValue = (0, import_react5.useMemo)(
754
+ const memoizedValue = (0, import_react6.useMemo)(
735
755
  () => ({
736
756
  state,
737
757
  setState,
@@ -745,12 +765,12 @@ var useSetState = (initialState) => {
745
765
  };
746
766
 
747
767
  // src/hooks/useResponsive.ts
748
- var import_react6 = require("react");
768
+ var import_react7 = require("react");
749
769
  var import_useMediaQuery = __toESM(require("@mui/material/useMediaQuery"), 1);
750
770
  var import_styles = require("@mui/material/styles");
751
771
  var useResponsive = (query, start, end) => {
752
772
  const theme = (0, import_styles.useTheme)();
753
- const getQuery = (0, import_react6.useMemo)(() => {
773
+ const getQuery = (0, import_react7.useMemo)(() => {
754
774
  switch (query) {
755
775
  case "up":
756
776
  return theme.breakpoints.up(start);
@@ -769,7 +789,7 @@ var useResponsive = (query, start, end) => {
769
789
  };
770
790
  var useWidth = () => {
771
791
  const theme = (0, import_styles.useTheme)();
772
- const keys = (0, import_react6.useMemo)(() => [...theme.breakpoints.keys].reverse(), [theme]);
792
+ const keys = (0, import_react7.useMemo)(() => [...theme.breakpoints.keys].reverse(), [theme]);
773
793
  const width = keys.reduce((output, key) => {
774
794
  const matches = (0, import_useMediaQuery.default)(theme.breakpoints.up(key));
775
795
  return !output && matches ? key : output;
@@ -778,19 +798,19 @@ var useWidth = () => {
778
798
  };
779
799
 
780
800
  // src/hooks/useEventListener.ts
781
- var import_react7 = require("react");
782
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react7.useLayoutEffect : import_react7.useEffect;
801
+ var import_react8 = require("react");
802
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react8.useLayoutEffect : import_react8.useEffect;
783
803
  var useEventListener = ({
784
804
  eventName,
785
805
  handler,
786
806
  element,
787
807
  options
788
808
  }) => {
789
- const savedHandler = (0, import_react7.useRef)(handler);
809
+ const savedHandler = (0, import_react8.useRef)(handler);
790
810
  useIsomorphicLayoutEffect(() => {
791
811
  savedHandler.current = handler;
792
812
  }, [handler]);
793
- (0, import_react7.useEffect)(() => {
813
+ (0, import_react8.useEffect)(() => {
794
814
  const targetElement = element?.current || window;
795
815
  if (!(targetElement && targetElement.addEventListener)) {
796
816
  return;
@@ -804,11 +824,11 @@ var useEventListener = ({
804
824
  };
805
825
 
806
826
  // src/hooks/useCopyToClipboard.ts
807
- var import_react8 = require("react");
827
+ var import_react9 = require("react");
808
828
  var useCopyToClipboard = () => {
809
- const [copiedText, setCopiedText] = (0, import_react8.useState)("");
810
- const [isCopied, setIsCopied] = (0, import_react8.useState)(false);
811
- const copy = (0, import_react8.useCallback)(
829
+ const [copiedText, setCopiedText] = (0, import_react9.useState)("");
830
+ const [isCopied, setIsCopied] = (0, import_react9.useState)(false);
831
+ const copy = (0, import_react9.useCallback)(
812
832
  async (text2) => {
813
833
  if (!navigator?.clipboard) {
814
834
  console.warn("Clipboard not supported");
@@ -828,7 +848,7 @@ var useCopyToClipboard = () => {
828
848
  },
829
849
  [setCopiedText]
830
850
  );
831
- const memoizedValue = (0, import_react8.useMemo)(
851
+ const memoizedValue = (0, import_react9.useMemo)(
832
852
  () => ({ copy, copiedText, isCopied }),
833
853
  [copy, copiedText, isCopied]
834
854
  );
@@ -836,11 +856,11 @@ var useCopyToClipboard = () => {
836
856
  };
837
857
 
838
858
  // src/hooks/useScrollOffsetTop.ts
839
- var import_react9 = require("react");
859
+ var import_react10 = require("react");
840
860
  var useScrollOffSetTop = (top = 0) => {
841
- const elementRef = (0, import_react9.useRef)(null);
842
- const [offsetTop, setOffsetTop] = (0, import_react9.useState)(false);
843
- const handleScrollChange = (0, import_react9.useCallback)(() => {
861
+ const elementRef = (0, import_react10.useRef)(null);
862
+ const [offsetTop, setOffsetTop] = (0, import_react10.useState)(false);
863
+ const handleScrollChange = (0, import_react10.useCallback)(() => {
844
864
  const scrollHeight = Math.round(window.scrollY);
845
865
  if (elementRef?.current) {
846
866
  const rect = elementRef.current.getBoundingClientRect();
@@ -850,14 +870,14 @@ var useScrollOffSetTop = (top = 0) => {
850
870
  setOffsetTop(scrollHeight > top);
851
871
  }
852
872
  }, [top]);
853
- (0, import_react9.useEffect)(() => {
873
+ (0, import_react10.useEffect)(() => {
854
874
  handleScrollChange();
855
875
  window.addEventListener("scroll", handleScrollChange, { passive: true });
856
876
  return () => {
857
877
  window.removeEventListener("scroll", handleScrollChange);
858
878
  };
859
879
  }, [handleScrollChange]);
860
- const memoizedValue = (0, import_react9.useMemo)(() => ({ elementRef, offsetTop }), [offsetTop]);
880
+ const memoizedValue = (0, import_react10.useMemo)(() => ({ elementRef, offsetTop }), [offsetTop]);
861
881
  return memoizedValue;
862
882
  };
863
883
 
@@ -6285,7 +6305,7 @@ var UploadProgress = ({ progress: progress2 = 20 }) => {
6285
6305
  };
6286
6306
 
6287
6307
  // src/components/Upload/components/MultiFilePreview.tsx
6288
- var import_react10 = require("react");
6308
+ var import_react11 = require("react");
6289
6309
  var import_Box9 = __toESM(require("@mui/material/Box"), 1);
6290
6310
  var import_IconButton3 = __toESM(require("@mui/material/IconButton"), 1);
6291
6311
 
@@ -6353,7 +6373,7 @@ var DeleteButton = ({ sx, ...rest }) => {
6353
6373
  // src/components/Upload/components/MultiFilePreview.tsx
6354
6374
  var import_jsx_runtime48 = require("react/jsx-runtime");
6355
6375
  var MultiFilePreview = ({ files, onRemove }) => {
6356
- const scrollRef = (0, import_react10.useRef)(null);
6376
+ const scrollRef = (0, import_react11.useRef)(null);
6357
6377
  const handleScroll = (direction) => {
6358
6378
  if (scrollRef.current) {
6359
6379
  const scrollAmount = 300;
@@ -7326,6 +7346,7 @@ var SplashScreen = ({ portal, sx, ...rest }) => {
7326
7346
  useCopyToClipboard,
7327
7347
  useEventListener,
7328
7348
  useLocalStorage,
7349
+ usePopover,
7329
7350
  useResponsive,
7330
7351
  useScrollOffSetTop,
7331
7352
  useSetState,