@undefine-ui/design-system 2.3.0 → 2.4.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/dist/index.cjs CHANGED
@@ -152,6 +152,8 @@ __export(index_exports, {
152
152
  useEventListener: () => useEventListener,
153
153
  useLocalStorage: () => useLocalStorage,
154
154
  useResponsive: () => useResponsive,
155
+ useScrollOffSetTop: () => useScrollOffSetTop,
156
+ useSetState: () => useSetState,
155
157
  useSettings: () => useSettings,
156
158
  useWidth: () => useWidth,
157
159
  varAlpha: () => varAlpha,
@@ -709,13 +711,43 @@ var useSettings = () => {
709
711
  return context;
710
712
  };
711
713
 
712
- // src/hooks/useResponsive.ts
714
+ // src/hooks/useSetState.ts
713
715
  var import_react5 = require("react");
716
+ var useSetState = (initialState) => {
717
+ const [state, set] = (0, import_react5.useState)(initialState);
718
+ const canReset = !isEqual(state, initialState);
719
+ const setState = (0, import_react5.useCallback)((updateState) => {
720
+ set((prevValue) => ({ ...prevValue, ...updateState }));
721
+ }, []);
722
+ const setField = (0, import_react5.useCallback)(
723
+ (name, updateValue) => {
724
+ setState({ [name]: updateValue });
725
+ },
726
+ [setState]
727
+ );
728
+ const onResetState = (0, import_react5.useCallback)(() => {
729
+ set(initialState);
730
+ }, [initialState]);
731
+ const memoizedValue = (0, import_react5.useMemo)(
732
+ () => ({
733
+ state,
734
+ setState,
735
+ setField,
736
+ onResetState,
737
+ canReset
738
+ }),
739
+ [canReset, onResetState, setField, setState, state]
740
+ );
741
+ return memoizedValue;
742
+ };
743
+
744
+ // src/hooks/useResponsive.ts
745
+ var import_react6 = require("react");
714
746
  var import_useMediaQuery = __toESM(require("@mui/material/useMediaQuery"), 1);
715
747
  var import_styles = require("@mui/material/styles");
716
748
  var useResponsive = (query, start, end) => {
717
749
  const theme = (0, import_styles.useTheme)();
718
- const getQuery = (0, import_react5.useMemo)(() => {
750
+ const getQuery = (0, import_react6.useMemo)(() => {
719
751
  switch (query) {
720
752
  case "up":
721
753
  return theme.breakpoints.up(start);
@@ -734,7 +766,7 @@ var useResponsive = (query, start, end) => {
734
766
  };
735
767
  var useWidth = () => {
736
768
  const theme = (0, import_styles.useTheme)();
737
- const keys = (0, import_react5.useMemo)(() => [...theme.breakpoints.keys].reverse(), [theme]);
769
+ const keys = (0, import_react6.useMemo)(() => [...theme.breakpoints.keys].reverse(), [theme]);
738
770
  const width = keys.reduce((output, key) => {
739
771
  const matches = (0, import_useMediaQuery.default)(theme.breakpoints.up(key));
740
772
  return !output && matches ? key : output;
@@ -743,19 +775,19 @@ var useWidth = () => {
743
775
  };
744
776
 
745
777
  // src/hooks/useEventListener.ts
746
- var import_react6 = require("react");
747
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react6.useLayoutEffect : import_react6.useEffect;
778
+ var import_react7 = require("react");
779
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react7.useLayoutEffect : import_react7.useEffect;
748
780
  var useEventListener = ({
749
781
  eventName,
750
782
  handler,
751
783
  element,
752
784
  options
753
785
  }) => {
754
- const savedHandler = (0, import_react6.useRef)(handler);
786
+ const savedHandler = (0, import_react7.useRef)(handler);
755
787
  useIsomorphicLayoutEffect(() => {
756
788
  savedHandler.current = handler;
757
789
  }, [handler]);
758
- (0, import_react6.useEffect)(() => {
790
+ (0, import_react7.useEffect)(() => {
759
791
  const targetElement = element?.current || window;
760
792
  if (!(targetElement && targetElement.addEventListener)) {
761
793
  return;
@@ -769,11 +801,11 @@ var useEventListener = ({
769
801
  };
770
802
 
771
803
  // src/hooks/useCopyToClipboard.ts
772
- var import_react7 = require("react");
804
+ var import_react8 = require("react");
773
805
  var useCopyToClipboard = () => {
774
- const [copiedText, setCopiedText] = (0, import_react7.useState)("");
775
- const [isCopied, setIsCopied] = (0, import_react7.useState)(false);
776
- const copy = (0, import_react7.useCallback)(
806
+ const [copiedText, setCopiedText] = (0, import_react8.useState)("");
807
+ const [isCopied, setIsCopied] = (0, import_react8.useState)(false);
808
+ const copy = (0, import_react8.useCallback)(
777
809
  async (text2) => {
778
810
  if (!navigator?.clipboard) {
779
811
  console.warn("Clipboard not supported");
@@ -793,13 +825,39 @@ var useCopyToClipboard = () => {
793
825
  },
794
826
  [setCopiedText]
795
827
  );
796
- const memoizedValue = (0, import_react7.useMemo)(
828
+ const memoizedValue = (0, import_react8.useMemo)(
797
829
  () => ({ copy, copiedText, isCopied }),
798
830
  [copy, copiedText, isCopied]
799
831
  );
800
832
  return memoizedValue;
801
833
  };
802
834
 
835
+ // src/hooks/useScrollOffsetTop.ts
836
+ var import_react9 = require("react");
837
+ var useScrollOffSetTop = (top = 0) => {
838
+ const elementRef = (0, import_react9.useRef)(null);
839
+ const [offsetTop, setOffsetTop] = (0, import_react9.useState)(false);
840
+ const handleScrollChange = (0, import_react9.useCallback)(() => {
841
+ const scrollHeight = Math.round(window.scrollY);
842
+ if (elementRef?.current) {
843
+ const rect = elementRef.current.getBoundingClientRect();
844
+ const elementTop = Math.round(rect.top);
845
+ setOffsetTop(elementTop < top);
846
+ } else {
847
+ setOffsetTop(scrollHeight > top);
848
+ }
849
+ }, [top]);
850
+ (0, import_react9.useEffect)(() => {
851
+ handleScrollChange();
852
+ window.addEventListener("scroll", handleScrollChange, { passive: true });
853
+ return () => {
854
+ window.removeEventListener("scroll", handleScrollChange);
855
+ };
856
+ }, [handleScrollChange]);
857
+ const memoizedValue = (0, import_react9.useMemo)(() => ({ elementRef, offsetTop }), [offsetTop]);
858
+ return memoizedValue;
859
+ };
860
+
803
861
  // src/theme/core/radius.ts
804
862
  function radius(baseRadius) {
805
863
  return {
@@ -6075,7 +6133,7 @@ var UploadProgress = ({ progress: progress2 = 20 }) => {
6075
6133
  };
6076
6134
 
6077
6135
  // src/components/Upload/components/MultiFilePreview.tsx
6078
- var import_react8 = require("react");
6136
+ var import_react10 = require("react");
6079
6137
  var import_Box9 = __toESM(require("@mui/material/Box"), 1);
6080
6138
  var import_IconButton3 = __toESM(require("@mui/material/IconButton"), 1);
6081
6139
 
@@ -6143,7 +6201,7 @@ var DeleteButton = ({ sx, ...rest }) => {
6143
6201
  // src/components/Upload/components/MultiFilePreview.tsx
6144
6202
  var import_jsx_runtime45 = require("react/jsx-runtime");
6145
6203
  var MultiFilePreview = ({ files, onRemove }) => {
6146
- const scrollRef = (0, import_react8.useRef)(null);
6204
+ const scrollRef = (0, import_react10.useRef)(null);
6147
6205
  const handleScroll = (direction) => {
6148
6206
  if (scrollRef.current) {
6149
6207
  const scrollAmount = 300;
@@ -7114,6 +7172,8 @@ var SplashScreen = ({ portal, sx, ...rest }) => {
7114
7172
  useEventListener,
7115
7173
  useLocalStorage,
7116
7174
  useResponsive,
7175
+ useScrollOffSetTop,
7176
+ useSetState,
7117
7177
  useSettings,
7118
7178
  useWidth,
7119
7179
  varAlpha,