@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.
- package/Accordion/index.cjs +96 -0
- package/Accordion/index.cjs.map +1 -0
- package/Accordion/index.js.map +1 -1
- package/Alert/index.cjs +121 -0
- package/Alert/index.cjs.map +1 -0
- package/Autocomplete/index.cjs +136 -0
- package/Autocomplete/index.cjs.map +1 -0
- package/Avatar/index.cjs +50 -0
- package/Avatar/index.cjs.map +1 -0
- package/Badge/index.cjs +109 -0
- package/Badge/index.cjs.map +1 -0
- package/Box/index.cjs +14 -0
- package/Box/index.cjs.map +1 -0
- package/Button/index.cjs +94 -0
- package/Button/index.cjs.map +1 -0
- package/ButtonGroup/index.cjs +58 -0
- package/ButtonGroup/index.cjs.map +1 -0
- package/Calendar/index.cjs +174 -0
- package/Calendar/index.cjs.map +1 -0
- package/CalendarInput/index.cjs +34 -0
- package/CalendarInput/index.cjs.map +1 -0
- package/Checkbox/index.cjs +58 -0
- package/Checkbox/index.cjs.map +1 -0
- package/Chip/index.cjs +76 -0
- package/Chip/index.cjs.map +1 -0
- package/CircleProgress/index.cjs +129 -0
- package/CircleProgress/index.cjs.map +1 -0
- package/ClickOutside/index.cjs +37 -0
- package/ClickOutside/index.cjs.map +1 -0
- package/Collaps/index.cjs +26 -0
- package/Collaps/index.cjs.map +1 -0
- package/Container/index.cjs +29 -0
- package/Container/index.cjs.map +1 -0
- package/DataFilter/index.cjs +78 -0
- package/DataFilter/index.cjs.map +1 -0
- package/DataFilter/options/DateFilter.cjs +32 -0
- package/DataFilter/options/DateFilter.cjs.map +1 -0
- package/DataFilter/options/DateRangeFilter.cjs +27 -0
- package/DataFilter/options/DateRangeFilter.cjs.map +1 -0
- package/DataFilter/options/MultiSelectFilter.cjs +38 -0
- package/DataFilter/options/MultiSelectFilter.cjs.map +1 -0
- package/DataFilter/options/NumberFilter.cjs +24 -0
- package/DataFilter/options/NumberFilter.cjs.map +1 -0
- package/DataFilter/options/NumberRangeFilter.cjs +29 -0
- package/DataFilter/options/NumberRangeFilter.cjs.map +1 -0
- package/DataFilter/options/SelectFilter.cjs +34 -0
- package/DataFilter/options/SelectFilter.cjs.map +1 -0
- package/DataFilter/options/TextFilter.cjs +24 -0
- package/DataFilter/options/TextFilter.cjs.map +1 -0
- package/Datatable/FilterBox.cjs +39 -0
- package/Datatable/FilterBox.cjs.map +1 -0
- package/Datatable/Row.cjs +59 -0
- package/Datatable/Row.cjs.map +1 -0
- package/Datatable/SelectedBox.cjs +21 -0
- package/Datatable/SelectedBox.cjs.map +1 -0
- package/Datatable/Table.cjs +23 -0
- package/Datatable/Table.cjs.map +1 -0
- package/Datatable/TableHead.cjs +61 -0
- package/Datatable/TableHead.cjs.map +1 -0
- package/Datatable/index.cjs +93 -0
- package/Datatable/index.cjs.map +1 -0
- package/Divider/index.cjs +31 -0
- package/Divider/index.cjs.map +1 -0
- package/Drawer/index.cjs +78 -0
- package/Drawer/index.cjs.map +1 -0
- package/Form/index.cjs +45 -0
- package/Form/index.cjs.map +1 -0
- package/GridContainer/index.cjs +19 -0
- package/GridContainer/index.cjs.map +1 -0
- package/GridItem/index.cjs +20 -0
- package/GridItem/index.cjs.map +1 -0
- package/IconButton/index.cjs +64 -0
- package/IconButton/index.cjs.map +1 -0
- package/Image/index.cjs +27 -0
- package/Image/index.cjs.map +1 -0
- package/Input/index.cjs +144 -0
- package/Input/index.cjs.map +1 -0
- package/InputNumber/index.cjs +32 -0
- package/InputNumber/index.cjs.map +1 -0
- package/Label/index.cjs +24 -0
- package/Label/index.cjs.map +1 -0
- package/Layer/index.cjs +62 -0
- package/Layer/index.cjs.map +1 -0
- package/LineProgress/index.cjs +59 -0
- package/LineProgress/index.cjs.map +1 -0
- package/List/ListContext.cjs +11 -0
- package/List/ListContext.cjs.map +1 -0
- package/List/index.cjs +63 -0
- package/List/index.cjs.map +1 -0
- package/ListItem/index.cjs +54 -0
- package/ListItem/index.cjs.map +1 -0
- package/LoadingBox/index.cjs +32 -0
- package/LoadingBox/index.cjs.map +1 -0
- package/Menu/index.cjs +150 -0
- package/Menu/index.cjs.map +1 -0
- package/Modal/index.cjs +59 -0
- package/Modal/index.cjs.map +1 -0
- package/NoSSR/index.cjs +15 -0
- package/NoSSR/index.cjs.map +1 -0
- package/Option/index.cjs +14 -0
- package/Option/index.cjs.map +1 -0
- package/Paper/index.cjs +15 -0
- package/Paper/index.cjs.map +1 -0
- package/Portal/index.cjs +27 -0
- package/Portal/index.cjs.map +1 -0
- package/Radio/index.cjs +16 -0
- package/Radio/index.cjs.map +1 -0
- package/Scrollbar/index.cjs +59 -0
- package/Scrollbar/index.cjs.map +1 -0
- package/Select/index.cjs +59 -0
- package/Select/index.cjs.map +1 -0
- package/Skeleton/index.cjs +60 -0
- package/Skeleton/index.cjs.map +1 -0
- package/Stack/index.cjs +17 -0
- package/Stack/index.cjs.map +1 -0
- package/Switch/index.cjs +79 -0
- package/Switch/index.cjs.map +1 -0
- package/Tab/index.cjs +17 -0
- package/Tab/index.cjs.map +1 -0
- package/Table/index.cjs +88 -0
- package/Table/index.cjs.map +1 -0
- package/TableBody/index.cjs +14 -0
- package/TableBody/index.cjs.map +1 -0
- package/TableCell/index.cjs +14 -0
- package/TableCell/index.cjs.map +1 -0
- package/TableFooter/index.cjs +14 -0
- package/TableFooter/index.cjs.map +1 -0
- package/TableHead/index.cjs +14 -0
- package/TableHead/index.cjs.map +1 -0
- package/TablePagination/index.cjs +59 -0
- package/TablePagination/index.cjs.map +1 -0
- package/TableRow/index.cjs +14 -0
- package/TableRow/index.cjs.map +1 -0
- package/Tabs/index.cjs +201 -0
- package/Tabs/index.cjs.map +1 -0
- package/Text/index.cjs +25 -0
- package/Text/index.cjs.map +1 -0
- package/Toast/index.cjs +120 -0
- package/Toast/index.cjs.map +1 -0
- package/Tooltip/index.cjs +40 -0
- package/Tooltip/index.cjs.map +1 -0
- package/ViewBox/index.cjs +32 -0
- package/ViewBox/index.cjs.map +1 -0
- package/index.cjs +134 -0
- package/index.cjs.map +1 -0
- package/package.json +3 -3
- package/readme.md +4 -4
- package/useAlert/index.cjs +94 -0
- package/useAlert/index.cjs.map +1 -0
- package/useBlurCss/index.cjs +19 -0
- package/useBlurCss/index.cjs.map +1 -0
- package/useCorner/index.cjs +22 -0
- package/useCorner/index.cjs.map +1 -0
- package/useLayer/index.cjs +38 -0
- package/useLayer/index.cjs.map +1 -0
- package/useModal/index.cjs +37 -0
- 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.
|
|
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.
|
|
17
|
+
"require": "./*/index.cjs",
|
|
18
18
|
"types": "./*/index.d.ts"
|
|
19
19
|
}
|
|
20
20
|
},
|
package/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Xanui Library
|
|
2
2
|
|
|
3
|
-
|
|
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
|
|
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
|
|
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;;"}
|