@xanui/ui 1.1.38 → 1.1.41

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.
Files changed (157) hide show
  1. package/Accordion/index.cjs +96 -0
  2. package/Accordion/index.cjs.map +1 -0
  3. package/Accordion/index.js.map +1 -1
  4. package/Alert/index.cjs +121 -0
  5. package/Alert/index.cjs.map +1 -0
  6. package/Autocomplete/index.cjs +136 -0
  7. package/Autocomplete/index.cjs.map +1 -0
  8. package/Avatar/index.cjs +50 -0
  9. package/Avatar/index.cjs.map +1 -0
  10. package/Badge/index.cjs +109 -0
  11. package/Badge/index.cjs.map +1 -0
  12. package/Box/index.cjs +14 -0
  13. package/Box/index.cjs.map +1 -0
  14. package/Button/index.cjs +94 -0
  15. package/Button/index.cjs.map +1 -0
  16. package/ButtonGroup/index.cjs +58 -0
  17. package/ButtonGroup/index.cjs.map +1 -0
  18. package/Calendar/index.cjs +174 -0
  19. package/Calendar/index.cjs.map +1 -0
  20. package/CalendarInput/index.cjs +34 -0
  21. package/CalendarInput/index.cjs.map +1 -0
  22. package/Checkbox/index.cjs +58 -0
  23. package/Checkbox/index.cjs.map +1 -0
  24. package/Chip/index.cjs +76 -0
  25. package/Chip/index.cjs.map +1 -0
  26. package/CircleProgress/index.cjs +129 -0
  27. package/CircleProgress/index.cjs.map +1 -0
  28. package/ClickOutside/index.cjs +37 -0
  29. package/ClickOutside/index.cjs.map +1 -0
  30. package/Collaps/index.cjs +26 -0
  31. package/Collaps/index.cjs.map +1 -0
  32. package/Container/index.cjs +29 -0
  33. package/Container/index.cjs.map +1 -0
  34. package/DataFilter/index.cjs +78 -0
  35. package/DataFilter/index.cjs.map +1 -0
  36. package/DataFilter/options/DateFilter.cjs +32 -0
  37. package/DataFilter/options/DateFilter.cjs.map +1 -0
  38. package/DataFilter/options/DateRangeFilter.cjs +27 -0
  39. package/DataFilter/options/DateRangeFilter.cjs.map +1 -0
  40. package/DataFilter/options/MultiSelectFilter.cjs +38 -0
  41. package/DataFilter/options/MultiSelectFilter.cjs.map +1 -0
  42. package/DataFilter/options/NumberFilter.cjs +24 -0
  43. package/DataFilter/options/NumberFilter.cjs.map +1 -0
  44. package/DataFilter/options/NumberRangeFilter.cjs +29 -0
  45. package/DataFilter/options/NumberRangeFilter.cjs.map +1 -0
  46. package/DataFilter/options/SelectFilter.cjs +34 -0
  47. package/DataFilter/options/SelectFilter.cjs.map +1 -0
  48. package/DataFilter/options/TextFilter.cjs +24 -0
  49. package/DataFilter/options/TextFilter.cjs.map +1 -0
  50. package/Datatable/FilterBox.cjs +39 -0
  51. package/Datatable/FilterBox.cjs.map +1 -0
  52. package/Datatable/Row.cjs +59 -0
  53. package/Datatable/Row.cjs.map +1 -0
  54. package/Datatable/SelectedBox.cjs +21 -0
  55. package/Datatable/SelectedBox.cjs.map +1 -0
  56. package/Datatable/Table.cjs +23 -0
  57. package/Datatable/Table.cjs.map +1 -0
  58. package/Datatable/TableHead.cjs +61 -0
  59. package/Datatable/TableHead.cjs.map +1 -0
  60. package/Datatable/index.cjs +93 -0
  61. package/Datatable/index.cjs.map +1 -0
  62. package/Divider/index.cjs +31 -0
  63. package/Divider/index.cjs.map +1 -0
  64. package/Drawer/index.cjs +78 -0
  65. package/Drawer/index.cjs.map +1 -0
  66. package/Form/index.cjs +45 -0
  67. package/Form/index.cjs.map +1 -0
  68. package/GridContainer/index.cjs +19 -0
  69. package/GridContainer/index.cjs.map +1 -0
  70. package/GridItem/index.cjs +20 -0
  71. package/GridItem/index.cjs.map +1 -0
  72. package/IconButton/index.cjs +64 -0
  73. package/IconButton/index.cjs.map +1 -0
  74. package/Image/index.cjs +27 -0
  75. package/Image/index.cjs.map +1 -0
  76. package/Input/index.cjs +144 -0
  77. package/Input/index.cjs.map +1 -0
  78. package/InputNumber/index.cjs +32 -0
  79. package/InputNumber/index.cjs.map +1 -0
  80. package/Label/index.cjs +24 -0
  81. package/Label/index.cjs.map +1 -0
  82. package/Layer/index.cjs +62 -0
  83. package/Layer/index.cjs.map +1 -0
  84. package/LineProgress/index.cjs +59 -0
  85. package/LineProgress/index.cjs.map +1 -0
  86. package/List/ListContext.cjs +11 -0
  87. package/List/ListContext.cjs.map +1 -0
  88. package/List/index.cjs +63 -0
  89. package/List/index.cjs.map +1 -0
  90. package/ListItem/index.cjs +54 -0
  91. package/ListItem/index.cjs.map +1 -0
  92. package/LoadingBox/index.cjs +32 -0
  93. package/LoadingBox/index.cjs.map +1 -0
  94. package/Menu/index.cjs +150 -0
  95. package/Menu/index.cjs.map +1 -0
  96. package/Modal/index.cjs +59 -0
  97. package/Modal/index.cjs.map +1 -0
  98. package/NoSSR/index.cjs +15 -0
  99. package/NoSSR/index.cjs.map +1 -0
  100. package/Option/index.cjs +14 -0
  101. package/Option/index.cjs.map +1 -0
  102. package/Paper/index.cjs +15 -0
  103. package/Paper/index.cjs.map +1 -0
  104. package/Portal/index.cjs +27 -0
  105. package/Portal/index.cjs.map +1 -0
  106. package/Radio/index.cjs +16 -0
  107. package/Radio/index.cjs.map +1 -0
  108. package/Scrollbar/index.cjs +59 -0
  109. package/Scrollbar/index.cjs.map +1 -0
  110. package/Select/index.cjs +59 -0
  111. package/Select/index.cjs.map +1 -0
  112. package/Skeleton/index.cjs +60 -0
  113. package/Skeleton/index.cjs.map +1 -0
  114. package/Stack/index.cjs +17 -0
  115. package/Stack/index.cjs.map +1 -0
  116. package/Switch/index.cjs +79 -0
  117. package/Switch/index.cjs.map +1 -0
  118. package/Tab/index.cjs +17 -0
  119. package/Tab/index.cjs.map +1 -0
  120. package/Table/index.cjs +88 -0
  121. package/Table/index.cjs.map +1 -0
  122. package/TableBody/index.cjs +14 -0
  123. package/TableBody/index.cjs.map +1 -0
  124. package/TableCell/index.cjs +14 -0
  125. package/TableCell/index.cjs.map +1 -0
  126. package/TableFooter/index.cjs +14 -0
  127. package/TableFooter/index.cjs.map +1 -0
  128. package/TableHead/index.cjs +14 -0
  129. package/TableHead/index.cjs.map +1 -0
  130. package/TablePagination/index.cjs +59 -0
  131. package/TablePagination/index.cjs.map +1 -0
  132. package/TableRow/index.cjs +14 -0
  133. package/TableRow/index.cjs.map +1 -0
  134. package/Tabs/index.cjs +201 -0
  135. package/Tabs/index.cjs.map +1 -0
  136. package/Text/index.cjs +25 -0
  137. package/Text/index.cjs.map +1 -0
  138. package/Toast/index.cjs +120 -0
  139. package/Toast/index.cjs.map +1 -0
  140. package/Tooltip/index.cjs +40 -0
  141. package/Tooltip/index.cjs.map +1 -0
  142. package/ViewBox/index.cjs +32 -0
  143. package/ViewBox/index.cjs.map +1 -0
  144. package/index.cjs +134 -0
  145. package/index.cjs.map +1 -0
  146. package/package.json +3 -3
  147. package/readme.md +4 -4
  148. package/useAlert/index.cjs +94 -0
  149. package/useAlert/index.cjs.map +1 -0
  150. package/useBlurCss/index.cjs +19 -0
  151. package/useBlurCss/index.cjs.map +1 -0
  152. package/useCorner/index.cjs +22 -0
  153. package/useCorner/index.cjs.map +1 -0
  154. package/useLayer/index.cjs +38 -0
  155. package/useLayer/index.cjs.map +1 -0
  156. package/useModal/index.cjs +37 -0
  157. package/useModal/index.cjs.map +1 -0
package/index.cjs ADDED
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var index = require('./Accordion/index.cjs');
4
+ var index$1 = require('./Autocomplete/index.cjs');
5
+ var index$2 = require('./Alert/index.cjs');
6
+ var index$3 = require('./Avatar/index.cjs');
7
+ var index$4 = require('./Badge/index.cjs');
8
+ var index$5 = require('./Box/index.cjs');
9
+ var index$6 = require('./Button/index.cjs');
10
+ var index$7 = require('./ButtonGroup/index.cjs');
11
+ var index$8 = require('./Calendar/index.cjs');
12
+ var index$9 = require('./CalendarInput/index.cjs');
13
+ var index$a = require('./Checkbox/index.cjs');
14
+ var index$b = require('./Chip/index.cjs');
15
+ var index$c = require('./CircleProgress/index.cjs');
16
+ var index$d = require('./ClickOutside/index.cjs');
17
+ var index$e = require('./Collaps/index.cjs');
18
+ var index$f = require('./Container/index.cjs');
19
+ var index$g = require('./Datatable/index.cjs');
20
+ var index$h = require('./DataFilter/index.cjs');
21
+ var index$i = require('./Divider/index.cjs');
22
+ var index$j = require('./Drawer/index.cjs');
23
+ var index$k = require('./Form/index.cjs');
24
+ var index$l = require('./GridContainer/index.cjs');
25
+ var index$m = require('./GridItem/index.cjs');
26
+ var index$n = require('./IconButton/index.cjs');
27
+ var index$o = require('./Image/index.cjs');
28
+ var index$p = require('./Input/index.cjs');
29
+ var index$q = require('./Label/index.cjs');
30
+ var index$r = require('./Layer/index.cjs');
31
+ var index$s = require('./LineProgress/index.cjs');
32
+ var index$t = require('./List/index.cjs');
33
+ var index$u = require('./ListItem/index.cjs');
34
+ var index$v = require('./LoadingBox/index.cjs');
35
+ var index$w = require('./Menu/index.cjs');
36
+ var index$x = require('./Modal/index.cjs');
37
+ var index$y = require('./NoSSR/index.cjs');
38
+ var index$z = require('./Option/index.cjs');
39
+ var index$A = require('./Paper/index.cjs');
40
+ var index$B = require('./Portal/index.cjs');
41
+ var index$C = require('./Radio/index.cjs');
42
+ var index$D = require('./Scrollbar/index.cjs');
43
+ var index$E = require('./Select/index.cjs');
44
+ var index$F = require('./Stack/index.cjs');
45
+ var index$G = require('./Switch/index.cjs');
46
+ var index$H = require('./Tab/index.cjs');
47
+ var index$I = require('./Table/index.cjs');
48
+ var index$J = require('./TableBody/index.cjs');
49
+ var index$K = require('./TableCell/index.cjs');
50
+ var index$L = require('./TableFooter/index.cjs');
51
+ var index$M = require('./TableHead/index.cjs');
52
+ var index$N = require('./TablePagination/index.cjs');
53
+ var index$O = require('./TableRow/index.cjs');
54
+ var index$P = require('./Tabs/index.cjs');
55
+ var index$Q = require('./Text/index.cjs');
56
+ var index$R = require('./Toast/index.cjs');
57
+ var index$S = require('./Tooltip/index.cjs');
58
+ var index$T = require('./useCorner/index.cjs');
59
+ var index$U = require('./ViewBox/index.cjs');
60
+ var SelectFilter = require('./DataFilter/options/SelectFilter.cjs');
61
+ var MultiSelectFilter = require('./DataFilter/options/MultiSelectFilter.cjs');
62
+ var NumberFilter = require('./DataFilter/options/NumberFilter.cjs');
63
+ var TextFilter = require('./DataFilter/options/TextFilter.cjs');
64
+ var NumberRangeFilter = require('./DataFilter/options/NumberRangeFilter.cjs');
65
+ var DateFilter = require('./DataFilter/options/DateFilter.cjs');
66
+ var DateRangeFilter = require('./DataFilter/options/DateRangeFilter.cjs');
67
+
68
+
69
+
70
+ exports.Accordion = index;
71
+ exports.Autocomplete = index$1;
72
+ exports.Alert = index$2;
73
+ exports.Avatar = index$3;
74
+ exports.Badge = index$4;
75
+ exports.Box = index$5;
76
+ exports.Button = index$6;
77
+ exports.ButtonGroup = index$7;
78
+ exports.Calendar = index$8;
79
+ exports.CalendarInput = index$9;
80
+ exports.Checkbox = index$a;
81
+ exports.Chip = index$b;
82
+ exports.CircleProgress = index$c;
83
+ exports.ClickOutside = index$d;
84
+ exports.Collaps = index$e;
85
+ exports.Container = index$f;
86
+ exports.Datatable = index$g;
87
+ exports.DataFilter = index$h.default;
88
+ exports.Divider = index$i;
89
+ exports.Drawer = index$j;
90
+ exports.Form = index$k;
91
+ exports.GridContainer = index$l;
92
+ exports.GridItem = index$m;
93
+ exports.IconButton = index$n;
94
+ exports.Image = index$o;
95
+ exports.Input = index$p;
96
+ exports.Label = index$q;
97
+ exports.Layer = index$r;
98
+ exports.LineProgress = index$s;
99
+ exports.List = index$t;
100
+ exports.ListItem = index$u;
101
+ exports.LoadingBox = index$v;
102
+ exports.Menu = index$w;
103
+ exports.Modal = index$x;
104
+ exports.NoSSR = index$y;
105
+ exports.Option = index$z;
106
+ exports.Paper = index$A;
107
+ exports.Portal = index$B;
108
+ exports.Radio = index$C;
109
+ exports.Scrollbar = index$D;
110
+ exports.Select = index$E;
111
+ exports.Stack = index$F;
112
+ exports.Switch = index$G;
113
+ exports.Tab = index$H;
114
+ exports.Table = index$I;
115
+ exports.TableBody = index$J;
116
+ exports.TableCell = index$K;
117
+ exports.TableFooter = index$L;
118
+ exports.TableHead = index$M;
119
+ exports.TablePagination = index$N;
120
+ exports.TableRow = index$O;
121
+ exports.Tabs = index$P;
122
+ exports.Text = index$Q;
123
+ exports.Toast = index$R;
124
+ exports.Tooltip = index$S;
125
+ exports.useCorner = index$T;
126
+ exports.ViewBox = index$U;
127
+ exports.SelectFilter = SelectFilter;
128
+ exports.MultiSelectFilter = MultiSelectFilter;
129
+ exports.NumberFilter = NumberFilter;
130
+ exports.TextFilter = TextFilter;
131
+ exports.NumberRangeFilter = NumberRangeFilter;
132
+ exports.DateFilter = DateFilter;
133
+ exports.DateRangeFilter = DateRangeFilter;
134
+ //# sourceMappingURL=index.cjs.map
package/index.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xanui/ui",
3
- "version": "1.1.38",
4
- "description": "",
3
+ "version": "1.1.41",
4
+ "description": "Xanui - A React Component Library",
5
5
  "private": false,
6
6
  "dependencies": {
7
7
  "@xanui/core": "^1.2.39",
@@ -14,7 +14,7 @@
14
14
  "exports": {
15
15
  "./*": {
16
16
  "import": "./*/index.js",
17
- "require": "./*/index.js",
17
+ "require": "./*/index.cjs",
18
18
  "types": "./*/index.d.ts"
19
19
  }
20
20
  },
package/readme.md CHANGED
@@ -1,6 +1,6 @@
1
- # XanUI UI Library
1
+ # Xanui Library
2
2
 
3
- XanUI is a React design-system toolkit powered by `@xanui/core`. It combines low-level primitives (e.g., `Box`, `Stack`, `Layer`) with application-ready components (e.g., `Accordion`, `Modal`, `Datatable`, `Toast`) so product teams can build polished surfaces quickly while keeping full control over styling tokens.
3
+ Xanui is a React design-system toolkit powered by `@xanui/core`. It combines low-level primitives (e.g., `Box`, `Stack`, `Layer`) with application-ready components (e.g., `Accordion`, `Modal`, `Datatable`, `Toast`) so product teams can build polished surfaces quickly while keeping full control over styling tokens.
4
4
 
5
5
  ## Highlights
6
6
 
@@ -17,7 +17,7 @@ npm install @xanui/ui
17
17
 
18
18
  ```
19
19
 
20
- Required peer packages (`react`, `react-dom`, `@xanui/core`, `@xanui/icons`) should already exist in your project; otherwise, install them alongside XanUI.
20
+ Required peer packages (`react`, `react-dom`, `@xanui/core`, `@xanui/icons`) should already exist in your project; otherwise, install them alongside Xanui.
21
21
 
22
22
  ## Quick Start
23
23
 
@@ -31,7 +31,7 @@ export default function App() {
31
31
  <ThemeProvider theme="light">
32
32
  <Box p={3} gap={2} display="flex" flexDirection="column">
33
33
  <h1>Welcome</h1>
34
- <Button color="brand" onClick={() => alert('Hello from XanUI!')}>
34
+ <Button color="brand" onClick={() => alert('Hello from Xanui!')}>
35
35
  Get Started
36
36
  </Button>
37
37
  </Box>
@@ -0,0 +1,94 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var core = require('@xanui/core');
7
+ var index$2 = require('../Button/index.cjs');
8
+ var index = require('../useModal/index.cjs');
9
+ var index$1 = require('../Alert/index.cjs');
10
+ var React = require('react');
11
+
12
+ const useAlert = (props) => {
13
+ const [loading, setLoading] = React.useState(false);
14
+ let { content, size, color, direction, variant, closeButton, clickOutsideToClose, okButtonText, cancelButtonText, hideOkButton, hideCancelButton, buttonPlacement, onConfirm, onCancel, transition, blurMode, slotProps } = props, rest = tslib.__rest(props, ["content", "size", "color", "direction", "variant", "closeButton", "clickOutsideToClose", "okButtonText", "cancelButtonText", "hideOkButton", "hideCancelButton", "buttonPlacement", "onConfirm", "onCancel", "transition", "blurMode", "slotProps"]);
15
+ hideOkButton !== null && hideOkButton !== void 0 ? hideOkButton : (hideOkButton = false);
16
+ hideCancelButton !== null && hideCancelButton !== void 0 ? hideCancelButton : (hideCancelButton = false);
17
+ size !== null && size !== void 0 ? size : (size = "small");
18
+ color !== null && color !== void 0 ? color : (color = 'default');
19
+ variant !== null && variant !== void 0 ? variant : (variant = "text");
20
+ direction !== null && direction !== void 0 ? direction : (direction = "column");
21
+ buttonPlacement !== null && buttonPlacement !== void 0 ? buttonPlacement : (buttonPlacement = "end");
22
+ let sx = {};
23
+ switch (buttonPlacement) {
24
+ case "start":
25
+ sx.justifyContent = 'flex-start';
26
+ break;
27
+ case "end":
28
+ sx.justifyContent = 'flex-end';
29
+ break;
30
+ case "between":
31
+ sx.justifyContent = 'space-between';
32
+ break;
33
+ case "full":
34
+ sx = {
35
+ "& button": {
36
+ flex: 1
37
+ }
38
+ };
39
+ break;
40
+ }
41
+ let sizes = {
42
+ small: 320,
43
+ medium: 400,
44
+ large: 600
45
+ };
46
+ let okcolor = color;
47
+ let closecolor = color;
48
+ if (color === 'default') {
49
+ okcolor = 'brand';
50
+ closecolor = 'default';
51
+ variant = 'text';
52
+ }
53
+ else {
54
+ if (variant === 'fill') {
55
+ okcolor = 'default';
56
+ closecolor = 'default';
57
+ }
58
+ else {
59
+ okcolor = color;
60
+ closecolor = 'default';
61
+ }
62
+ }
63
+ const modal = index(jsxRuntime.jsxs(index$1, Object.assign({ direction: direction, sx: {
64
+ px: 2,
65
+ py: 1,
66
+ pt: direction === 'row' ? 1 : 2
67
+ }, color: color, variant: variant, onClose: closeButton ? close : undefined }, rest, { children: [typeof content === "function" ? content({
68
+ open: () => modal.open(),
69
+ close: () => modal.close(),
70
+ loading: (is) => setLoading(is),
71
+ isLoading: () => loading
72
+ }) : content, jsxRuntime.jsxs(core.Tag, { sxr: Object.assign({ display: "flex", gap: 1, pt: 4, flexDirection: "row" }, sx), children: [!hideCancelButton && jsxRuntime.jsx(index$2, Object.assign({ disabled: loading, color: closecolor, variant: "fill" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.closeButton, { onClick: async () => {
73
+ setLoading(true);
74
+ onCancel && await onCancel();
75
+ setLoading(false);
76
+ modal.close();
77
+ }, children: cancelButtonText || "Close" })), jsxRuntime.jsx(index$2, Object.assign({ loading: loading, color: okcolor, variant: "fill" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.okButton, { onClick: async () => {
78
+ setLoading(true);
79
+ onConfirm && await onConfirm();
80
+ setLoading(false);
81
+ modal.close();
82
+ }, children: okButtonText || "OK" }))] })] })), Object.assign(Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.modal), { size: sizes[size] || size, blur: 40, blurMode: blurMode || "transparent", transition: transition || "zoom", onClickOutside: async () => {
83
+ if (clickOutsideToClose && !loading) {
84
+ setLoading(true);
85
+ onCancel && await onCancel();
86
+ setLoading(false);
87
+ modal.close();
88
+ }
89
+ } }));
90
+ return Object.assign(Object.assign({}, modal), { loading: (is) => setLoading(is), isLoading: () => loading });
91
+ };
92
+
93
+ module.exports = useAlert;
94
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/useAlert/index.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Tag, UseTransitionVariantTypes } from \"@xanui/core\"\r\nimport Button, { ButtonProps } from \"../Button\";\r\nimport useModal, { UseModalProps } from \"../useModal\";\r\nimport Alert, { AlertProps } from \"../Alert\";\r\nimport React from \"react\";\r\nexport type UseAlertContentProps = {\r\n open: () => void;\r\n close: () => void;\r\n loading: (is: boolean) => void;\r\n isLoading: () => boolean;\r\n}\r\n\r\nexport type UseAlertContent = React.ReactElement | ((props: UseAlertContentProps) => React.ReactElement)\r\n\r\nexport type UseAlerProps = Omit<AlertProps, 'children' | 'onClose' | 'variant' | \"size\"> & {\r\n content: string | UseAlertContent,\r\n size?: \"small\" | \"medium\" | \"large\" | number;\r\n closeButton?: boolean;\r\n clickOutsideToClose?: boolean;\r\n okButtonText?: string;\r\n cancelButtonText?: string;\r\n hideOkButton?: boolean;\r\n hideCancelButton?: boolean;\r\n buttonPlacement?: \"start\" | \"end\" | \"between\" | \"full\";\r\n variant?: \"text\" | \"fill\"\r\n onConfirm?: () => Promise<void> | void;\r\n onCancel?: () => Promise<void> | void;\r\n transition?: UseTransitionVariantTypes;\r\n blurMode?: UseModalProps['blurMode'];\r\n slotProps?: {\r\n modal?: UseModalProps;\r\n okButton?: Omit<ButtonProps, \"children\">;\r\n closeButton?: Omit<ButtonProps, \"children\">;\r\n }\r\n}\r\n\r\n\r\nconst useAlert = (props: UseAlerProps) => {\r\n const [loading, setLoading] = React.useState(false)\r\n let {\r\n content,\r\n size,\r\n color,\r\n direction,\r\n variant,\r\n closeButton,\r\n clickOutsideToClose,\r\n okButtonText,\r\n cancelButtonText,\r\n hideOkButton,\r\n hideCancelButton,\r\n buttonPlacement,\r\n onConfirm,\r\n onCancel,\r\n transition,\r\n blurMode,\r\n slotProps,\r\n ...rest\r\n } = props\r\n\r\n hideOkButton ??= false\r\n hideCancelButton ??= false\r\n\r\n size ??= \"small\"\r\n color ??= 'default'\r\n variant ??= \"text\"\r\n direction ??= \"column\"\r\n buttonPlacement ??= \"end\"\r\n let sx: any = {};\r\n\r\n switch (buttonPlacement) {\r\n case \"start\":\r\n sx.justifyContent = 'flex-start'\r\n break;\r\n case \"end\":\r\n sx.justifyContent = 'flex-end'\r\n break;\r\n case \"between\":\r\n sx.justifyContent = 'space-between'\r\n break;\r\n case \"full\":\r\n sx = {\r\n \"& button\": {\r\n flex: 1\r\n }\r\n }\r\n break;\r\n }\r\n\r\n let sizes: any = {\r\n small: 320,\r\n medium: 400,\r\n large: 600\r\n }\r\n\r\n let okcolor = color\r\n let closecolor = color\r\n if (color === 'default') {\r\n okcolor = 'brand'\r\n closecolor = 'default'\r\n variant = 'text'\r\n } else {\r\n if (variant === 'fill') {\r\n okcolor = 'default'\r\n closecolor = 'default'\r\n } else {\r\n okcolor = color\r\n closecolor = 'default'\r\n }\r\n }\r\n\r\n const modal = useModal(<Alert\r\n direction={direction}\r\n sx={{\r\n px: 2,\r\n py: 1,\r\n pt: direction === 'row' ? 1 : 2\r\n }}\r\n color={color}\r\n variant={variant}\r\n onClose={closeButton ? close : undefined}\r\n {...rest}\r\n >\r\n {typeof content === \"function\" ? content({\r\n open: () => modal.open(),\r\n close: () => modal.close(),\r\n loading: (is: boolean) => setLoading(is),\r\n isLoading: () => loading\r\n }) : content}\r\n <Tag\r\n sxr={{\r\n display: \"flex\",\r\n gap: 1,\r\n pt: 4,\r\n flexDirection: \"row\",\r\n ...sx,\r\n }}\r\n >\r\n {!hideCancelButton && <Button\r\n disabled={loading}\r\n color={closecolor}\r\n variant=\"fill\"\r\n {...slotProps?.closeButton}\r\n onClick={async () => {\r\n setLoading(true)\r\n onCancel && await onCancel()\r\n setLoading(false)\r\n modal.close()\r\n }}\r\n >{cancelButtonText || \"Close\"}</Button>}\r\n <Button\r\n loading={loading}\r\n color={okcolor}\r\n variant=\"fill\"\r\n {...slotProps?.okButton}\r\n\r\n onClick={async () => {\r\n setLoading(true)\r\n onConfirm && await onConfirm()\r\n setLoading(false)\r\n modal.close()\r\n }}\r\n >{okButtonText || \"OK\"}</Button>\r\n </Tag>\r\n </Alert>, {\r\n ...slotProps?.modal,\r\n size: sizes[size] || size,\r\n blur: 40,\r\n blurMode: blurMode || \"transparent\",\r\n transition: transition || \"zoom\",\r\n onClickOutside: async () => {\r\n if (clickOutsideToClose && !loading) {\r\n setLoading(true)\r\n onCancel && await onCancel()\r\n setLoading(false)\r\n modal.close()\r\n }\r\n }\r\n })\r\n\r\n return {\r\n ...modal,\r\n loading: (is: boolean) => setLoading(is),\r\n isLoading: () => loading\r\n }\r\n}\r\n\r\nexport default useAlert"],"names":[],"mappings":";;;;;;;;;;;AAuCA;AACI;AACA;;;;;;;;;;AAgCI;AACI;;AAEJ;AACI;;AAEJ;AACI;;AAEJ;AACI;AACI;AACI;AACH;;;;AAKb;AACI;AACA;AACA;;;;AAKJ;;;;;;AAKI;;;;;;;;;AASJ;AAGQ;AACA;;AAEH;AAOG;AACA;;AAEA;;;AAkBQ;;;AAGJ;;AAUI;;;;AAaR;;AAEI;;;;AAIR;;AAQR;;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var core = require('@xanui/core');
5
+
6
+ let _d;
7
+ const useBlurCss = (blur, mode) => {
8
+ return React.useMemo(() => {
9
+ let transparent = { bgcolor: core.alpha("#000000", blur / 100) };
10
+ if (typeof window === 'undefined' || mode === 'transparent') {
11
+ return transparent;
12
+ }
13
+ const d = _d || (_d = window.document.createElement("div").style);
14
+ return d['backdropFilter'] !== undefined ? { backdropFilter: `blur(${(blur / 100) * 10}px)` } : transparent;
15
+ }, [blur]);
16
+ };
17
+
18
+ module.exports = useBlurCss;
19
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/useBlurCss/index.tsx"],"sourcesContent":["import { useMemo } from \"react\"\r\nimport { alpha } from \"@xanui/core\";\r\n\r\nlet _d: CSSStyleDeclaration;\r\n\r\nconst useBlurCss = (blur: number, mode?: \"transparent\" | \"blur\") => {\r\n return useMemo(() => {\r\n let transparent = { bgcolor: alpha(\"#000000\", blur / 100) }\r\n if (typeof window === 'undefined' || mode === 'transparent') {\r\n return transparent\r\n }\r\n const d = _d || (_d = window.document.createElement(\"div\").style)\r\n return d['backdropFilter'] !== undefined ? { backdropFilter: `blur(${(blur / 100) * 10}px)` } : transparent\r\n }, [blur])\r\n}\r\n\r\n\r\nexport default useBlurCss"],"names":["useMemo","alpha"],"mappings":";;;;;AAGA,IAAI,EAAuB;AAE3B,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,IAA6B,KAAI;IAChE,OAAOA,aAAO,CAAC,MAAK;AACjB,QAAA,IAAI,WAAW,GAAG,EAAE,OAAO,EAAEC,UAAK,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE;QAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,KAAK,aAAa,EAAE;AAC1D,YAAA,OAAO,WAAW;QACrB;AACA,QAAA,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACjE,OAAO,CAAC,CAAC,gBAAgB,CAAC,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,CAAA,KAAA,EAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAA,GAAA,CAAK,EAAE,GAAG,WAAW;AAC9G,IAAA,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACb;;;;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ const useCorner = (type) => {
4
+ switch (type) {
5
+ case 'square':
6
+ return {
7
+ radius: 0
8
+ };
9
+ case 'rounded':
10
+ return {
11
+ radius: 1
12
+ };
13
+ case 'circle':
14
+ return {
15
+ radius: 100
16
+ };
17
+ }
18
+ return {};
19
+ };
20
+
21
+ module.exports = useCorner;
22
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/useCorner/index.ts"],"sourcesContent":["\r\nexport type UseCornerTypes = \"square\" | \"rounded\" | \"circle\"\r\nconst useCorner = (type?: UseCornerTypes): object => {\r\n switch (type) {\r\n case 'square':\r\n return {\r\n radius: 0\r\n }\r\n case 'rounded':\r\n return {\r\n radius: 1\r\n }\r\n case 'circle':\r\n return {\r\n radius: 100\r\n }\r\n }\r\n return {}\r\n}\r\n\r\nexport default useCorner"],"names":[],"mappings":";;AAEA,MAAM,SAAS,GAAG,CAAC,IAAqB,KAAY;IAChD,QAAQ,IAAI;AACR,QAAA,KAAK,QAAQ;YACT,OAAO;AACH,gBAAA,MAAM,EAAE;aACX;AACL,QAAA,KAAK,SAAS;YACV,OAAO;AACH,gBAAA,MAAM,EAAE;aACX;AACL,QAAA,KAAK,QAAQ;YACT,OAAO;AACH,gBAAA,MAAM,EAAE;aACX;;AAET,IAAA,OAAO,EAAE;AACb;;;;"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var core = require('@xanui/core');
6
+ var React = require('react');
7
+ var index = require('../Layer/index.cjs');
8
+
9
+ const useLayer = (children, props) => {
10
+ var _a;
11
+ const [open, setOpen] = React.useState(false);
12
+ const portalProps = ((_a = props === null || props === void 0 ? void 0 : props.slotProps) === null || _a === void 0 ? void 0 : _a.portal) || {};
13
+ const portal = core.usePortal(jsxRuntime.jsx(index, Object.assign({ blur: 20 }, props, { open: open, onClosed: () => {
14
+ portal.unmount();
15
+ if (props === null || props === void 0 ? void 0 : props.onClosed) {
16
+ props.onClosed();
17
+ }
18
+ }, onClickOutside: () => {
19
+ if (props === null || props === void 0 ? void 0 : props.onClickOutside) {
20
+ props.onClickOutside();
21
+ }
22
+ else {
23
+ setOpen(false);
24
+ }
25
+ }, children: typeof children === "function" ? children({ open: () => setOpen(true), close: () => setOpen(false) }) : children })), portalProps);
26
+ return {
27
+ open: () => {
28
+ portal.mount();
29
+ setOpen(true);
30
+ },
31
+ close: () => {
32
+ setOpen(false);
33
+ },
34
+ };
35
+ };
36
+
37
+ module.exports = useLayer;
38
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/useLayer/index.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { usePortal } from \"@xanui/core\"\r\nimport { useState } from \"react\"\r\nimport Layer, { LayerProps } from \"../Layer\"\r\nimport { UsePortalOptions } from \"@xanui/core/hooks/usePortal\"\r\n\r\nexport type UseLayerProps = Omit<LayerProps, \"open\" | \"children\" | \"slotProps\"> & {\r\n slotProps?: LayerProps[\"slotProps\"] & {\r\n portal?: UsePortalOptions\r\n }\r\n}\r\n\r\nexport type UseLayerReturn = {\r\n open: () => void;\r\n close: () => void;\r\n}\r\n\r\nexport type UseLayerChildren = React.ReactElement | ((props: UseLayerReturn) => React.ReactElement)\r\n\r\nconst useLayer = (children: UseLayerChildren, props?: UseLayerProps): UseLayerReturn => {\r\n const [open, setOpen] = useState(false)\r\n const portalProps = props?.slotProps?.portal || {}\r\n const portal = usePortal(<Layer\r\n blur={20}\r\n {...props}\r\n open={open}\r\n onClosed={() => {\r\n portal.unmount()\r\n if (props?.onClosed) {\r\n props.onClosed()\r\n }\r\n }}\r\n onClickOutside={() => {\r\n if (props?.onClickOutside) {\r\n props.onClickOutside()\r\n } else {\r\n setOpen(false)\r\n }\r\n }}\r\n >\r\n {typeof children === \"function\" ? children({ open: () => setOpen(true), close: () => setOpen(false) }) : children}\r\n </Layer>, portalProps)\r\n\r\n return {\r\n open: () => {\r\n portal.mount()\r\n setOpen(true)\r\n },\r\n close: () => {\r\n setOpen(false)\r\n },\r\n }\r\n}\r\n\r\nexport default useLayer"],"names":[],"mappings":";;;;;;;;AAoBA;;;AAEG;;;;;;AAUG;;;;;;;AAOA;;;;;;;;;;AAcN;;"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var index = require('../useLayer/index.cjs');
7
+ var core = require('@xanui/core');
8
+
9
+ const useModal = (children, props) => {
10
+ var _a, _b;
11
+ let sizes = {
12
+ xs: 420,
13
+ sm: 760,
14
+ md: 990,
15
+ lg: 1120,
16
+ xl: 1300,
17
+ full: "100%"
18
+ };
19
+ let _c = props || {}, { size, slotProps } = _c, useLayerProps = tslib.__rest(_c, ["size", "slotProps"]);
20
+ size = size !== null && size !== void 0 ? size : "xs";
21
+ slotProps = slotProps || {};
22
+ const root = (slotProps === null || slotProps === void 0 ? void 0 : slotProps.root) || {};
23
+ const layer = index(() => {
24
+ return (jsxRuntime.jsx(core.Tag, Object.assign({}, root, { sxr: Object.assign({ maxWidth: sizes[size] || size, width: "100%", radius: 2, bgcolor: "background.primary", shadow: 15 }, root === null || root === void 0 ? void 0 : root.sx), baseClass: 'modal', children: typeof children === "function" ? children({ open: layer.open, close: layer.close }) : children })));
25
+ }, Object.assign(Object.assign({}, useLayerProps), { onClickOutside: () => {
26
+ if (props === null || props === void 0 ? void 0 : props.onClickOutside) {
27
+ props.onClickOutside();
28
+ }
29
+ else {
30
+ layer.close();
31
+ }
32
+ }, slotProps: Object.assign(Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.layer), { clickOutside: Object.assign({ maxWidth: sizes[size] || size, width: "100%" }, (_a = slotProps === null || slotProps === void 0 ? void 0 : slotProps.layer) === null || _a === void 0 ? void 0 : _a.clickOutside), root: Object.assign({ display: "flex", alignItems: 'center', justifyContent: "center" }, (_b = slotProps === null || slotProps === void 0 ? void 0 : slotProps.layer) === null || _b === void 0 ? void 0 : _b.root) }) }));
33
+ return layer;
34
+ };
35
+
36
+ module.exports = useModal;
37
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/useModal/index.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport useLayer, { UseLayerProps } from \"../useLayer\";\r\nimport { Tag, TagProps } from '@xanui/core'\r\n\r\nexport type UseModalProps = Omit<UseLayerProps, \"slotProps\"> & {\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\" | number;\r\n slotProps?: {\r\n layer?: UseLayerProps['slotProps'];\r\n root?: Omit<TagProps<'div'>, \"children\">\r\n }\r\n}\r\n\r\nexport type UseModalChildren = React.ReactElement | ((props: UseModalReturn) => React.ReactElement)\r\n\r\nexport type UseModalReturn = {\r\n open: () => void;\r\n close: () => void;\r\n}\r\n\r\nconst useModal = (children: UseModalChildren, props?: UseModalProps) => {\r\n\r\n let sizes: any = {\r\n xs: 420,\r\n sm: 760,\r\n md: 990,\r\n lg: 1120,\r\n xl: 1300,\r\n full: \"100%\"\r\n }\r\n let { size, slotProps, ...useLayerProps } = props || {}\r\n size = size ?? \"xs\"\r\n slotProps = slotProps || {} as any\r\n const root: any = slotProps?.root || {}\r\n\r\n const layer = useLayer(() => {\r\n return (\r\n <Tag\r\n {...root}\r\n sxr={{\r\n maxWidth: sizes[size as any] || size,\r\n width: \"100%\",\r\n radius: 2,\r\n bgcolor: \"background.primary\",\r\n shadow: 15,\r\n ...root?.sx\r\n }}\r\n baseClass='modal'\r\n >\r\n {typeof children === \"function\" ? children({ open: layer.open, close: layer.close }) : children}\r\n </Tag>\r\n )\r\n }, {\r\n ...useLayerProps,\r\n onClickOutside: () => {\r\n if (props?.onClickOutside) {\r\n props.onClickOutside()\r\n } else {\r\n layer.close()\r\n }\r\n },\r\n slotProps: {\r\n ...slotProps?.layer,\r\n clickOutside: {\r\n maxWidth: sizes[size as any] || size,\r\n width: \"100%\",\r\n ...slotProps?.layer?.clickOutside,\r\n },\r\n root: {\r\n display: \"flex\",\r\n alignItems: 'center',\r\n justifyContent: \"center\",\r\n ...slotProps?.layer?.root,\r\n }\r\n }\r\n })\r\n\r\n return layer\r\n}\r\n\r\nexport default useModal;"],"names":[],"mappings":";;;;;;;;AAoBA;;AAEG;AACG;AACA;AACA;AACA;AACA;AACA;;AAEH;;AAEA;AACA;AAEA;AACG;AAgBH;;;;;;;AAQG;AAiBH;AACH;;"}