@undefine-ui/design-system 2.5.0 → 2.7.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 +2 -2
- package/dist/index.cjs +87 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +53 -2
- package/dist/index.d.ts +53 -2
- package/dist/index.js +63 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -173,10 +173,10 @@ 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
|
-
| Utilities | `changeCase` helpers, `formatNumber`, generic `helpers`
|
|
179
|
+
| Utilities | `changeCase` helpers, `formatNumber`, `fullname-utils`, generic `helpers` |
|
|
180
180
|
|
|
181
181
|
You can also import the theme pieces directly to compose your own MUI theme or to extend tokens in Storybook.
|
|
182
182
|
|
package/dist/index.cjs
CHANGED
|
@@ -107,8 +107,10 @@ __export(index_exports, {
|
|
|
107
107
|
fNumber: () => fNumber,
|
|
108
108
|
fPercent: () => fPercent,
|
|
109
109
|
fShortenNumber: () => fShortenNumber,
|
|
110
|
+
formatFullname: () => formatFullname,
|
|
110
111
|
getCurrencySymbol: () => getCurrencySymbol,
|
|
111
112
|
getInitColorSchemeScript: () => getInitColorSchemeScript,
|
|
113
|
+
getInitials: () => getInitials,
|
|
112
114
|
getStorage: () => getStorage,
|
|
113
115
|
grey: () => grey,
|
|
114
116
|
hexToRgbChannel: () => hexToRgbChannel,
|
|
@@ -141,6 +143,7 @@ __export(index_exports, {
|
|
|
141
143
|
setStorage: () => setStorage,
|
|
142
144
|
shadows: () => shadows,
|
|
143
145
|
snakeCase: () => snakeCase,
|
|
146
|
+
splitFullname: () => splitFullname,
|
|
144
147
|
stylesMode: () => stylesMode,
|
|
145
148
|
success: () => success,
|
|
146
149
|
surface: () => surface,
|
|
@@ -154,6 +157,7 @@ __export(index_exports, {
|
|
|
154
157
|
useCopyToClipboard: () => useCopyToClipboard,
|
|
155
158
|
useEventListener: () => useEventListener,
|
|
156
159
|
useLocalStorage: () => useLocalStorage,
|
|
160
|
+
usePopover: () => usePopover,
|
|
157
161
|
useResponsive: () => useResponsive,
|
|
158
162
|
useScrollOffSetTop: () => useScrollOffSetTop,
|
|
159
163
|
useSetState: () => useSetState,
|
|
@@ -293,6 +297,25 @@ var fData = (inputValue) => {
|
|
|
293
297
|
return fm;
|
|
294
298
|
};
|
|
295
299
|
|
|
300
|
+
// src/libs/fullname-utils.ts
|
|
301
|
+
var getInitials = (name) => {
|
|
302
|
+
const names = name?.split(" ");
|
|
303
|
+
const initials = names?.map((n) => n.charAt(0)?.toUpperCase())?.join("");
|
|
304
|
+
return initials;
|
|
305
|
+
};
|
|
306
|
+
var splitFullname = (name) => {
|
|
307
|
+
if (!name) {
|
|
308
|
+
return { firstname: "", lastname: "" };
|
|
309
|
+
}
|
|
310
|
+
const names = name.split(" ");
|
|
311
|
+
const firstname = names[0];
|
|
312
|
+
const lastname = names[names.length - 1];
|
|
313
|
+
return { firstname, lastname };
|
|
314
|
+
};
|
|
315
|
+
var formatFullname = (firstname, lastname) => {
|
|
316
|
+
return `${firstname} ${lastname}`;
|
|
317
|
+
};
|
|
318
|
+
|
|
296
319
|
// src/hooks/useBoolean.ts
|
|
297
320
|
var import_react = require("react");
|
|
298
321
|
var useBoolean = (defaultValue) => {
|
|
@@ -319,8 +342,27 @@ var useBoolean = (defaultValue) => {
|
|
|
319
342
|
return memoizedValue;
|
|
320
343
|
};
|
|
321
344
|
|
|
345
|
+
// src/hooks/usePopover.ts
|
|
346
|
+
var import_react2 = require("react");
|
|
347
|
+
var usePopover = () => {
|
|
348
|
+
const [anchorEl, setAnchorEl] = (0, import_react2.useState)(null);
|
|
349
|
+
const onOpen = (0, import_react2.useCallback)((event) => {
|
|
350
|
+
setAnchorEl(event.currentTarget);
|
|
351
|
+
}, []);
|
|
352
|
+
const onClose = (0, import_react2.useCallback)(() => {
|
|
353
|
+
setAnchorEl(null);
|
|
354
|
+
}, []);
|
|
355
|
+
return {
|
|
356
|
+
open: !!anchorEl,
|
|
357
|
+
anchorEl,
|
|
358
|
+
onOpen,
|
|
359
|
+
onClose,
|
|
360
|
+
setAnchorEl
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
|
|
322
364
|
// src/hooks/useSettings.ts
|
|
323
|
-
var
|
|
365
|
+
var import_react5 = require("react");
|
|
324
366
|
|
|
325
367
|
// src/theme/styles/utils.ts
|
|
326
368
|
var stylesMode = {
|
|
@@ -566,15 +608,15 @@ var defaultSettings = {
|
|
|
566
608
|
};
|
|
567
609
|
|
|
568
610
|
// src/contexts/settings/context.tsx
|
|
569
|
-
var
|
|
611
|
+
var import_react4 = require("react");
|
|
570
612
|
|
|
571
613
|
// src/hooks/useLocalStorage.ts
|
|
572
|
-
var
|
|
614
|
+
var import_react3 = require("react");
|
|
573
615
|
var useLocalStorage = (key, initialState) => {
|
|
574
|
-
const [state, set] = (0,
|
|
616
|
+
const [state, set] = (0, import_react3.useState)(initialState);
|
|
575
617
|
const multiValue = initialState && typeof initialState === "object";
|
|
576
618
|
const canReset = !isEqual(state, initialState);
|
|
577
|
-
(0,
|
|
619
|
+
(0, import_react3.useEffect)(() => {
|
|
578
620
|
const restoredValue = getStorage(key);
|
|
579
621
|
if (restoredValue) {
|
|
580
622
|
if (multiValue) {
|
|
@@ -584,7 +626,7 @@ var useLocalStorage = (key, initialState) => {
|
|
|
584
626
|
}
|
|
585
627
|
}
|
|
586
628
|
}, [key, multiValue]);
|
|
587
|
-
const setState = (0,
|
|
629
|
+
const setState = (0, import_react3.useCallback)(
|
|
588
630
|
(updateState) => {
|
|
589
631
|
if (multiValue) {
|
|
590
632
|
set((prevValue) => {
|
|
@@ -598,7 +640,7 @@ var useLocalStorage = (key, initialState) => {
|
|
|
598
640
|
},
|
|
599
641
|
[key, multiValue]
|
|
600
642
|
);
|
|
601
|
-
const setField = (0,
|
|
643
|
+
const setField = (0, import_react3.useCallback)(
|
|
602
644
|
(name, updateValue) => {
|
|
603
645
|
if (multiValue) {
|
|
604
646
|
setState({ [name]: updateValue });
|
|
@@ -606,11 +648,11 @@ var useLocalStorage = (key, initialState) => {
|
|
|
606
648
|
},
|
|
607
649
|
[multiValue, setState]
|
|
608
650
|
);
|
|
609
|
-
const resetState = (0,
|
|
651
|
+
const resetState = (0, import_react3.useCallback)(() => {
|
|
610
652
|
set(initialState);
|
|
611
653
|
removeStorage(key);
|
|
612
654
|
}, [initialState, key]);
|
|
613
|
-
const memoizedValue = (0,
|
|
655
|
+
const memoizedValue = (0, import_react3.useMemo)(
|
|
614
656
|
() => ({
|
|
615
657
|
state,
|
|
616
658
|
setState,
|
|
@@ -670,19 +712,19 @@ var LocalStorageGetItem = (key, defaultValue = "") => {
|
|
|
670
712
|
|
|
671
713
|
// src/contexts/settings/context.tsx
|
|
672
714
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
673
|
-
var SettingsContext = (0,
|
|
715
|
+
var SettingsContext = (0, import_react4.createContext)({});
|
|
674
716
|
var SettingsConsumer = SettingsContext.Consumer;
|
|
675
717
|
var SettingsProvider = ({ children, settings }) => {
|
|
676
718
|
const localStorage2 = useLocalStorage(STORAGE_KEY, settings);
|
|
677
719
|
const values = localStorage2;
|
|
678
|
-
const [openDrawer, setOpenDrawer] = (0,
|
|
679
|
-
const onToggleDrawer = (0,
|
|
720
|
+
const [openDrawer, setOpenDrawer] = (0, import_react4.useState)(false);
|
|
721
|
+
const onToggleDrawer = (0, import_react4.useCallback)(() => {
|
|
680
722
|
setOpenDrawer((prev) => !prev);
|
|
681
723
|
}, []);
|
|
682
|
-
const onCloseDrawer = (0,
|
|
724
|
+
const onCloseDrawer = (0, import_react4.useCallback)(() => {
|
|
683
725
|
setOpenDrawer(false);
|
|
684
726
|
}, []);
|
|
685
|
-
const memoizedValue = (0,
|
|
727
|
+
const memoizedValue = (0, import_react4.useMemo)(
|
|
686
728
|
() => ({
|
|
687
729
|
...values.state,
|
|
688
730
|
canReset: values.canReset,
|
|
@@ -709,29 +751,29 @@ var SettingsProvider = ({ children, settings }) => {
|
|
|
709
751
|
|
|
710
752
|
// src/hooks/useSettings.ts
|
|
711
753
|
var useSettings = () => {
|
|
712
|
-
const context = (0,
|
|
754
|
+
const context = (0, import_react5.useContext)(SettingsContext);
|
|
713
755
|
if (!context) throw new Error("useSettings must be use inside SettingsProvider");
|
|
714
756
|
return context;
|
|
715
757
|
};
|
|
716
758
|
|
|
717
759
|
// src/hooks/useSetState.ts
|
|
718
|
-
var
|
|
760
|
+
var import_react6 = require("react");
|
|
719
761
|
var useSetState = (initialState) => {
|
|
720
|
-
const [state, set] = (0,
|
|
762
|
+
const [state, set] = (0, import_react6.useState)(initialState);
|
|
721
763
|
const canReset = !isEqual(state, initialState);
|
|
722
|
-
const setState = (0,
|
|
764
|
+
const setState = (0, import_react6.useCallback)((updateState) => {
|
|
723
765
|
set((prevValue) => ({ ...prevValue, ...updateState }));
|
|
724
766
|
}, []);
|
|
725
|
-
const setField = (0,
|
|
767
|
+
const setField = (0, import_react6.useCallback)(
|
|
726
768
|
(name, updateValue) => {
|
|
727
769
|
setState({ [name]: updateValue });
|
|
728
770
|
},
|
|
729
771
|
[setState]
|
|
730
772
|
);
|
|
731
|
-
const onResetState = (0,
|
|
773
|
+
const onResetState = (0, import_react6.useCallback)(() => {
|
|
732
774
|
set(initialState);
|
|
733
775
|
}, [initialState]);
|
|
734
|
-
const memoizedValue = (0,
|
|
776
|
+
const memoizedValue = (0, import_react6.useMemo)(
|
|
735
777
|
() => ({
|
|
736
778
|
state,
|
|
737
779
|
setState,
|
|
@@ -745,12 +787,12 @@ var useSetState = (initialState) => {
|
|
|
745
787
|
};
|
|
746
788
|
|
|
747
789
|
// src/hooks/useResponsive.ts
|
|
748
|
-
var
|
|
790
|
+
var import_react7 = require("react");
|
|
749
791
|
var import_useMediaQuery = __toESM(require("@mui/material/useMediaQuery"), 1);
|
|
750
792
|
var import_styles = require("@mui/material/styles");
|
|
751
793
|
var useResponsive = (query, start, end) => {
|
|
752
794
|
const theme = (0, import_styles.useTheme)();
|
|
753
|
-
const getQuery = (0,
|
|
795
|
+
const getQuery = (0, import_react7.useMemo)(() => {
|
|
754
796
|
switch (query) {
|
|
755
797
|
case "up":
|
|
756
798
|
return theme.breakpoints.up(start);
|
|
@@ -769,7 +811,7 @@ var useResponsive = (query, start, end) => {
|
|
|
769
811
|
};
|
|
770
812
|
var useWidth = () => {
|
|
771
813
|
const theme = (0, import_styles.useTheme)();
|
|
772
|
-
const keys = (0,
|
|
814
|
+
const keys = (0, import_react7.useMemo)(() => [...theme.breakpoints.keys].reverse(), [theme]);
|
|
773
815
|
const width = keys.reduce((output, key) => {
|
|
774
816
|
const matches = (0, import_useMediaQuery.default)(theme.breakpoints.up(key));
|
|
775
817
|
return !output && matches ? key : output;
|
|
@@ -778,19 +820,19 @@ var useWidth = () => {
|
|
|
778
820
|
};
|
|
779
821
|
|
|
780
822
|
// src/hooks/useEventListener.ts
|
|
781
|
-
var
|
|
782
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
823
|
+
var import_react8 = require("react");
|
|
824
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react8.useLayoutEffect : import_react8.useEffect;
|
|
783
825
|
var useEventListener = ({
|
|
784
826
|
eventName,
|
|
785
827
|
handler,
|
|
786
828
|
element,
|
|
787
829
|
options
|
|
788
830
|
}) => {
|
|
789
|
-
const savedHandler = (0,
|
|
831
|
+
const savedHandler = (0, import_react8.useRef)(handler);
|
|
790
832
|
useIsomorphicLayoutEffect(() => {
|
|
791
833
|
savedHandler.current = handler;
|
|
792
834
|
}, [handler]);
|
|
793
|
-
(0,
|
|
835
|
+
(0, import_react8.useEffect)(() => {
|
|
794
836
|
const targetElement = element?.current || window;
|
|
795
837
|
if (!(targetElement && targetElement.addEventListener)) {
|
|
796
838
|
return;
|
|
@@ -804,11 +846,11 @@ var useEventListener = ({
|
|
|
804
846
|
};
|
|
805
847
|
|
|
806
848
|
// src/hooks/useCopyToClipboard.ts
|
|
807
|
-
var
|
|
849
|
+
var import_react9 = require("react");
|
|
808
850
|
var useCopyToClipboard = () => {
|
|
809
|
-
const [copiedText, setCopiedText] = (0,
|
|
810
|
-
const [isCopied, setIsCopied] = (0,
|
|
811
|
-
const copy = (0,
|
|
851
|
+
const [copiedText, setCopiedText] = (0, import_react9.useState)("");
|
|
852
|
+
const [isCopied, setIsCopied] = (0, import_react9.useState)(false);
|
|
853
|
+
const copy = (0, import_react9.useCallback)(
|
|
812
854
|
async (text2) => {
|
|
813
855
|
if (!navigator?.clipboard) {
|
|
814
856
|
console.warn("Clipboard not supported");
|
|
@@ -828,7 +870,7 @@ var useCopyToClipboard = () => {
|
|
|
828
870
|
},
|
|
829
871
|
[setCopiedText]
|
|
830
872
|
);
|
|
831
|
-
const memoizedValue = (0,
|
|
873
|
+
const memoizedValue = (0, import_react9.useMemo)(
|
|
832
874
|
() => ({ copy, copiedText, isCopied }),
|
|
833
875
|
[copy, copiedText, isCopied]
|
|
834
876
|
);
|
|
@@ -836,11 +878,11 @@ var useCopyToClipboard = () => {
|
|
|
836
878
|
};
|
|
837
879
|
|
|
838
880
|
// src/hooks/useScrollOffsetTop.ts
|
|
839
|
-
var
|
|
881
|
+
var import_react10 = require("react");
|
|
840
882
|
var useScrollOffSetTop = (top = 0) => {
|
|
841
|
-
const elementRef = (0,
|
|
842
|
-
const [offsetTop, setOffsetTop] = (0,
|
|
843
|
-
const handleScrollChange = (0,
|
|
883
|
+
const elementRef = (0, import_react10.useRef)(null);
|
|
884
|
+
const [offsetTop, setOffsetTop] = (0, import_react10.useState)(false);
|
|
885
|
+
const handleScrollChange = (0, import_react10.useCallback)(() => {
|
|
844
886
|
const scrollHeight = Math.round(window.scrollY);
|
|
845
887
|
if (elementRef?.current) {
|
|
846
888
|
const rect = elementRef.current.getBoundingClientRect();
|
|
@@ -850,14 +892,14 @@ var useScrollOffSetTop = (top = 0) => {
|
|
|
850
892
|
setOffsetTop(scrollHeight > top);
|
|
851
893
|
}
|
|
852
894
|
}, [top]);
|
|
853
|
-
(0,
|
|
895
|
+
(0, import_react10.useEffect)(() => {
|
|
854
896
|
handleScrollChange();
|
|
855
897
|
window.addEventListener("scroll", handleScrollChange, { passive: true });
|
|
856
898
|
return () => {
|
|
857
899
|
window.removeEventListener("scroll", handleScrollChange);
|
|
858
900
|
};
|
|
859
901
|
}, [handleScrollChange]);
|
|
860
|
-
const memoizedValue = (0,
|
|
902
|
+
const memoizedValue = (0, import_react10.useMemo)(() => ({ elementRef, offsetTop }), [offsetTop]);
|
|
861
903
|
return memoizedValue;
|
|
862
904
|
};
|
|
863
905
|
|
|
@@ -6285,7 +6327,7 @@ var UploadProgress = ({ progress: progress2 = 20 }) => {
|
|
|
6285
6327
|
};
|
|
6286
6328
|
|
|
6287
6329
|
// src/components/Upload/components/MultiFilePreview.tsx
|
|
6288
|
-
var
|
|
6330
|
+
var import_react11 = require("react");
|
|
6289
6331
|
var import_Box9 = __toESM(require("@mui/material/Box"), 1);
|
|
6290
6332
|
var import_IconButton3 = __toESM(require("@mui/material/IconButton"), 1);
|
|
6291
6333
|
|
|
@@ -6353,7 +6395,7 @@ var DeleteButton = ({ sx, ...rest }) => {
|
|
|
6353
6395
|
// src/components/Upload/components/MultiFilePreview.tsx
|
|
6354
6396
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
6355
6397
|
var MultiFilePreview = ({ files, onRemove }) => {
|
|
6356
|
-
const scrollRef = (0,
|
|
6398
|
+
const scrollRef = (0, import_react11.useRef)(null);
|
|
6357
6399
|
const handleScroll = (direction) => {
|
|
6358
6400
|
if (scrollRef.current) {
|
|
6359
6401
|
const scrollAmount = 300;
|
|
@@ -7279,8 +7321,10 @@ var SplashScreen = ({ portal, sx, ...rest }) => {
|
|
|
7279
7321
|
fNumber,
|
|
7280
7322
|
fPercent,
|
|
7281
7323
|
fShortenNumber,
|
|
7324
|
+
formatFullname,
|
|
7282
7325
|
getCurrencySymbol,
|
|
7283
7326
|
getInitColorSchemeScript,
|
|
7327
|
+
getInitials,
|
|
7284
7328
|
getStorage,
|
|
7285
7329
|
grey,
|
|
7286
7330
|
hexToRgbChannel,
|
|
@@ -7313,6 +7357,7 @@ var SplashScreen = ({ portal, sx, ...rest }) => {
|
|
|
7313
7357
|
setStorage,
|
|
7314
7358
|
shadows,
|
|
7315
7359
|
snakeCase,
|
|
7360
|
+
splitFullname,
|
|
7316
7361
|
stylesMode,
|
|
7317
7362
|
success,
|
|
7318
7363
|
surface,
|
|
@@ -7326,6 +7371,7 @@ var SplashScreen = ({ portal, sx, ...rest }) => {
|
|
|
7326
7371
|
useCopyToClipboard,
|
|
7327
7372
|
useEventListener,
|
|
7328
7373
|
useLocalStorage,
|
|
7374
|
+
usePopover,
|
|
7329
7375
|
useResponsive,
|
|
7330
7376
|
useScrollOffSetTop,
|
|
7331
7377
|
useSetState,
|