@fangxinyan/lumina 0.1.5 → 0.2.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/{Accordion-GSBY5T5U.css → Accordion-3TQPKNN3.css} +8 -1
- package/dist/Accordion.cjs +2 -2
- package/dist/Accordion.d.cts +12 -0
- package/dist/Accordion.d.ts +12 -0
- package/dist/Accordion.js +1 -1
- package/dist/{Alert-LSKBYDRI.css → Alert-JJ7GB3UU.css} +11 -0
- package/dist/Alert.cjs +2 -2
- package/dist/Alert.d.cts +4 -0
- package/dist/Alert.d.ts +4 -0
- package/dist/Alert.js +1 -1
- package/dist/{Avatar-OXDSG5Q6.css → Avatar-R5A4AFKZ.css} +4 -0
- package/dist/Avatar.cjs +2 -2
- package/dist/Avatar.d.cts +2 -0
- package/dist/Avatar.d.ts +2 -0
- package/dist/Avatar.js +1 -1
- package/dist/{Button-5UI7QXGU.css → Button-SDQD25AG.css} +2 -0
- package/dist/Button.cjs +3 -3
- package/dist/Button.d.cts +2 -0
- package/dist/Button.d.ts +2 -0
- package/dist/Button.js +1 -1
- package/dist/Calendar.cjs +2 -2
- package/dist/Calendar.d.cts +8 -0
- package/dist/Calendar.d.ts +8 -0
- package/dist/Calendar.js +1 -1
- package/dist/{Card-2CHHFD4Y.css → Card-RG7ECXL2.css} +11 -0
- package/dist/Card.cjs +3 -3
- package/dist/Card.d.cts +2 -0
- package/dist/Card.d.ts +2 -0
- package/dist/Card.js +1 -1
- package/dist/{Divider-Z37INS5E.css → Divider-OEE4Q2KS.css} +31 -0
- package/dist/Divider.cjs +2 -2
- package/dist/Divider.d.cts +7 -0
- package/dist/Divider.d.ts +7 -0
- package/dist/Divider.js +1 -1
- package/dist/Drawer-IPGB4CXH.css +101 -0
- package/dist/Drawer.cjs +13 -0
- package/dist/Drawer.cjs.map +1 -0
- package/dist/Drawer.d.cts +45 -0
- package/dist/Drawer.d.ts +45 -0
- package/dist/Drawer.js +4 -0
- package/dist/Drawer.js.map +1 -0
- package/dist/{Empty-VM23UNLQ.css → Empty-NQ72W3D7.css} +22 -0
- package/dist/Empty.cjs +4 -4
- package/dist/Empty.d.cts +42 -2
- package/dist/Empty.d.ts +42 -2
- package/dist/Empty.js +1 -1
- package/dist/Input-33CAH4O6.css +134 -0
- package/dist/Input.cjs +3 -3
- package/dist/Input.d.cts +17 -1
- package/dist/Input.d.ts +17 -1
- package/dist/Input.js +1 -1
- package/dist/Modal-N4YVLEWW.css +72 -0
- package/dist/Modal.cjs +3 -7
- package/dist/Modal.d.cts +37 -8
- package/dist/Modal.d.ts +37 -8
- package/dist/Modal.js +2 -2
- package/dist/{Pagination-6FFOI4NM.css → Pagination-YIRYJUXP.css} +33 -0
- package/dist/Pagination.cjs +5 -2
- package/dist/Pagination.d.cts +14 -0
- package/dist/Pagination.d.ts +14 -0
- package/dist/Pagination.js +4 -1
- package/dist/Select.cjs +3 -3
- package/dist/Select.js +2 -2
- package/dist/{Slider-RE4HZQKF.css → Slider-X4PVA65R.css} +51 -2
- package/dist/Slider.cjs +2 -2
- package/dist/Slider.d.cts +20 -5
- package/dist/Slider.d.ts +20 -5
- package/dist/Slider.js +1 -1
- package/dist/Switch-36KJNDXM.css +92 -0
- package/dist/Switch.cjs +2 -2
- package/dist/Switch.d.cts +4 -0
- package/dist/Switch.d.ts +4 -0
- package/dist/Switch.js +1 -1
- package/dist/Table-ADVN6LXP.css +295 -0
- package/dist/Table.cjs +7 -3
- package/dist/Table.d.cts +103 -7
- package/dist/Table.d.ts +103 -7
- package/dist/Table.js +5 -1
- package/dist/{Tabs-A27TSZOP.css → Tabs-RHK6XAFF.css} +7 -0
- package/dist/Tabs.cjs +3 -3
- package/dist/Tabs.d.cts +2 -0
- package/dist/Tabs.d.ts +2 -0
- package/dist/Tabs.js +1 -1
- package/dist/{Tag-EYOY3UWG.css → Tag-FGDY3W7E.css} +2 -0
- package/dist/Tag.cjs +3 -3
- package/dist/Tag.d.cts +5 -0
- package/dist/Tag.d.ts +5 -0
- package/dist/Tag.js +1 -1
- package/dist/chunk-437LB2V4.js +111 -0
- package/dist/chunk-437LB2V4.js.map +1 -0
- package/dist/chunk-4MR4GVTD.js +73 -0
- package/dist/chunk-4MR4GVTD.js.map +1 -0
- package/dist/{chunk-OXYFB2ZI.js → chunk-4U4OY5RA.js} +11 -5
- package/dist/chunk-4U4OY5RA.js.map +1 -0
- package/dist/chunk-55NTFU7Y.js +476 -0
- package/dist/chunk-55NTFU7Y.js.map +1 -0
- package/dist/{chunk-5EYI27B6.js → chunk-77BVQNAQ.js} +5 -3
- package/dist/chunk-77BVQNAQ.js.map +1 -0
- package/dist/chunk-AEJJGUEN.cjs +127 -0
- package/dist/chunk-AEJJGUEN.cjs.map +1 -0
- package/dist/{chunk-3QWHDCHJ.js → chunk-AJZKESHB.js} +13 -4
- package/dist/chunk-AJZKESHB.js.map +1 -0
- package/dist/{chunk-NZPJ7BUB.cjs → chunk-AXMEZGEG.cjs} +13 -4
- package/dist/chunk-AXMEZGEG.cjs.map +1 -0
- package/dist/{chunk-HTP6UEVR.js → chunk-BBPNQ44M.js} +22 -6
- package/dist/chunk-BBPNQ44M.js.map +1 -0
- package/dist/chunk-CCBHZYE6.cjs +150 -0
- package/dist/chunk-CCBHZYE6.cjs.map +1 -0
- package/dist/{chunk-KGYLUZOU.cjs → chunk-EPFYIR63.cjs} +5 -5
- package/dist/{chunk-KGYLUZOU.cjs.map → chunk-EPFYIR63.cjs.map} +1 -1
- package/dist/chunk-F7HW2PYR.cjs +119 -0
- package/dist/chunk-F7HW2PYR.cjs.map +1 -0
- package/dist/chunk-GIVMKGZN.js +39 -0
- package/dist/chunk-GIVMKGZN.js.map +1 -0
- package/dist/{chunk-FMG3ZPGK.js → chunk-H6FCIJOP.js} +5 -3
- package/dist/chunk-H6FCIJOP.js.map +1 -0
- package/dist/{chunk-ALFDP5WX.cjs → chunk-IDM6JJLP.cjs} +22 -6
- package/dist/chunk-IDM6JJLP.cjs.map +1 -0
- package/dist/chunk-IFERLHCL.cjs +499 -0
- package/dist/chunk-IFERLHCL.cjs.map +1 -0
- package/dist/chunk-IWVKITPN.js +102 -0
- package/dist/chunk-IWVKITPN.js.map +1 -0
- package/dist/{chunk-I2ERCHFV.cjs → chunk-JKLQOB2F.cjs} +11 -5
- package/dist/chunk-JKLQOB2F.cjs.map +1 -0
- package/dist/{chunk-IGHLSNXT.cjs → chunk-K7PVJLW4.cjs} +51 -4
- package/dist/chunk-K7PVJLW4.cjs.map +1 -0
- package/dist/chunk-LDENBYRC.cjs +210 -0
- package/dist/chunk-LDENBYRC.cjs.map +1 -0
- package/dist/chunk-LSLYY5FN.js +125 -0
- package/dist/chunk-LSLYY5FN.js.map +1 -0
- package/dist/chunk-NSUD5B22.js +187 -0
- package/dist/chunk-NSUD5B22.js.map +1 -0
- package/dist/{chunk-AAMYURWQ.cjs → chunk-OPTTHURA.cjs} +5 -3
- package/dist/chunk-OPTTHURA.cjs.map +1 -0
- package/dist/{chunk-F3NHM4GX.js → chunk-OYGFMXAA.js} +13 -4
- package/dist/chunk-OYGFMXAA.js.map +1 -0
- package/dist/chunk-PBBHUUXU.cjs +133 -0
- package/dist/chunk-PBBHUUXU.cjs.map +1 -0
- package/dist/chunk-RDLPX7RK.cjs +95 -0
- package/dist/chunk-RDLPX7RK.cjs.map +1 -0
- package/dist/{chunk-XFRP2MBR.js → chunk-TYQ5CN2C.js} +51 -4
- package/dist/chunk-TYQ5CN2C.js.map +1 -0
- package/dist/{chunk-7CKHWCEA.cjs → chunk-TZSWDH5T.cjs} +5 -3
- package/dist/chunk-TZSWDH5T.cjs.map +1 -0
- package/dist/{chunk-VMHNKD3N.cjs → chunk-URF6RBW6.cjs} +13 -4
- package/dist/chunk-URF6RBW6.cjs.map +1 -0
- package/dist/{chunk-G3UWXSNQ.js → chunk-V34OPWKZ.js} +5 -4
- package/dist/chunk-V34OPWKZ.js.map +1 -0
- package/dist/{chunk-ITGCHU3Y.cjs → chunk-VICGQC6G.cjs} +5 -4
- package/dist/chunk-VICGQC6G.cjs.map +1 -0
- package/dist/chunk-YEOARJKR.cjs +40 -0
- package/dist/chunk-YEOARJKR.cjs.map +1 -0
- package/dist/chunk-Z5X5AMLA.cjs +41 -0
- package/dist/chunk-Z5X5AMLA.cjs.map +1 -0
- package/dist/chunk-Z7P6QGMT.js +115 -0
- package/dist/chunk-Z7P6QGMT.js.map +1 -0
- package/dist/{chunk-OYH6A7IQ.js → chunk-ZVCMXDTP.js} +3 -3
- package/dist/{chunk-OYH6A7IQ.js.map → chunk-ZVCMXDTP.js.map} +1 -1
- package/dist/chunk-ZWP4LSS3.js +38 -0
- package/dist/chunk-ZWP4LSS3.js.map +1 -0
- package/dist/index.cjs +57 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +19 -18
- package/dist/index.js.map +1 -1
- package/dist/styles.css +566 -50
- package/package.json +1 -1
- package/dist/Input-Z526ARZP.css +0 -66
- package/dist/Modal-AYKNIWWQ.css +0 -79
- package/dist/Switch-NP7KKJOX.css +0 -44
- package/dist/Table-ZDPGWLH3.css +0 -139
- package/dist/chunk-2VA2HSL4.cjs +0 -121
- package/dist/chunk-2VA2HSL4.cjs.map +0 -1
- package/dist/chunk-2W2AJUZW.js +0 -118
- package/dist/chunk-2W2AJUZW.js.map +0 -1
- package/dist/chunk-3QWHDCHJ.js.map +0 -1
- package/dist/chunk-4AA22BOG.js +0 -63
- package/dist/chunk-4AA22BOG.js.map +0 -1
- package/dist/chunk-5EYI27B6.js.map +0 -1
- package/dist/chunk-77NP67ML.cjs +0 -70
- package/dist/chunk-77NP67ML.cjs.map +0 -1
- package/dist/chunk-7CKHWCEA.cjs.map +0 -1
- package/dist/chunk-7NM5BRUX.js +0 -91
- package/dist/chunk-7NM5BRUX.js.map +0 -1
- package/dist/chunk-7UJI437T.js +0 -49
- package/dist/chunk-7UJI437T.js.map +0 -1
- package/dist/chunk-AAMYURWQ.cjs.map +0 -1
- package/dist/chunk-ALFDP5WX.cjs.map +0 -1
- package/dist/chunk-F3NHM4GX.js.map +0 -1
- package/dist/chunk-FMG3ZPGK.js.map +0 -1
- package/dist/chunk-G3UWXSNQ.js.map +0 -1
- package/dist/chunk-HTP6UEVR.js.map +0 -1
- package/dist/chunk-I2ERCHFV.cjs.map +0 -1
- package/dist/chunk-IBZAGURN.cjs +0 -71
- package/dist/chunk-IBZAGURN.cjs.map +0 -1
- package/dist/chunk-IGHLSNXT.cjs.map +0 -1
- package/dist/chunk-ITGCHU3Y.cjs.map +0 -1
- package/dist/chunk-JNFCTYJT.cjs +0 -31
- package/dist/chunk-JNFCTYJT.cjs.map +0 -1
- package/dist/chunk-JWFVSBVX.cjs +0 -30
- package/dist/chunk-JWFVSBVX.cjs.map +0 -1
- package/dist/chunk-K67KIKX4.cjs +0 -67
- package/dist/chunk-K67KIKX4.cjs.map +0 -1
- package/dist/chunk-KF4MCHZL.cjs +0 -105
- package/dist/chunk-KF4MCHZL.cjs.map +0 -1
- package/dist/chunk-M6OTFXZA.js +0 -48
- package/dist/chunk-M6OTFXZA.js.map +0 -1
- package/dist/chunk-NWJW5KLN.js +0 -29
- package/dist/chunk-NWJW5KLN.js.map +0 -1
- package/dist/chunk-NZPJ7BUB.cjs.map +0 -1
- package/dist/chunk-OXYFB2ZI.js.map +0 -1
- package/dist/chunk-Q33V7MSK.js +0 -79
- package/dist/chunk-Q33V7MSK.js.map +0 -1
- package/dist/chunk-QT7SJITQ.cjs +0 -114
- package/dist/chunk-QT7SJITQ.cjs.map +0 -1
- package/dist/chunk-VMHNKD3N.cjs.map +0 -1
- package/dist/chunk-VXITDXLW.js +0 -28
- package/dist/chunk-VXITDXLW.js.map +0 -1
- package/dist/chunk-XFRP2MBR.js.map +0 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
|
|
4
|
+
require('./tokens-HWQ7KWPG.css');
|
|
5
|
+
require('./shared-NJHRNLRH.css');
|
|
6
|
+
require('./Drawer-IPGB4CXH.css');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var ReactDOM = require('react-dom');
|
|
9
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
function _interopNamespace(e) {
|
|
14
|
+
if (e && e.__esModule) return e;
|
|
15
|
+
var n = Object.create(null);
|
|
16
|
+
if (e) {
|
|
17
|
+
Object.keys(e).forEach(function (k) {
|
|
18
|
+
if (k !== 'default') {
|
|
19
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
20
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return e[k]; }
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
n.default = e;
|
|
28
|
+
return Object.freeze(n);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
32
|
+
var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
|
|
33
|
+
|
|
34
|
+
var ANIM_MS = 280;
|
|
35
|
+
var Drawer = ({
|
|
36
|
+
open,
|
|
37
|
+
onClose,
|
|
38
|
+
placement = "right",
|
|
39
|
+
size = 380,
|
|
40
|
+
title,
|
|
41
|
+
extra,
|
|
42
|
+
footer,
|
|
43
|
+
children,
|
|
44
|
+
mask = true,
|
|
45
|
+
maskClosable = true,
|
|
46
|
+
keyboard = true,
|
|
47
|
+
closable = true,
|
|
48
|
+
closeIcon,
|
|
49
|
+
destroyOnClose = false,
|
|
50
|
+
afterOpenChange,
|
|
51
|
+
zIndex,
|
|
52
|
+
className = ""
|
|
53
|
+
}) => {
|
|
54
|
+
const [hasOpenedOnce, setHasOpenedOnce] = React__namespace.useState(open);
|
|
55
|
+
React__namespace.useEffect(() => {
|
|
56
|
+
if (open) setHasOpenedOnce(true);
|
|
57
|
+
}, [open]);
|
|
58
|
+
React__namespace.useEffect(() => {
|
|
59
|
+
if (!open || !keyboard) return;
|
|
60
|
+
const h = (e) => e.key === "Escape" && onClose?.();
|
|
61
|
+
window.addEventListener("keydown", h);
|
|
62
|
+
return () => window.removeEventListener("keydown", h);
|
|
63
|
+
}, [open, keyboard, onClose]);
|
|
64
|
+
const prevOpen = React__namespace.useRef(open);
|
|
65
|
+
React__namespace.useEffect(() => {
|
|
66
|
+
if (prevOpen.current !== open) {
|
|
67
|
+
prevOpen.current = open;
|
|
68
|
+
if (afterOpenChange) {
|
|
69
|
+
const id = window.setTimeout(() => afterOpenChange(open), ANIM_MS);
|
|
70
|
+
return () => window.clearTimeout(id);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}, [open, afterOpenChange]);
|
|
74
|
+
if (typeof document === "undefined") return null;
|
|
75
|
+
if (!hasOpenedOnce) return null;
|
|
76
|
+
if (!open && destroyOnClose) return null;
|
|
77
|
+
const isV = placement === "left" || placement === "right";
|
|
78
|
+
const style = isV ? { width: size } : { height: size };
|
|
79
|
+
if (zIndex != null) style.zIndex = zIndex;
|
|
80
|
+
return ReactDOM__default.default.createPortal(
|
|
81
|
+
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
82
|
+
mask && /* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
className: `drawer-overlay ${open ? "" : "hidden"}`,
|
|
86
|
+
style: zIndex != null ? { zIndex: zIndex - 1 } : void 0,
|
|
87
|
+
onClick: () => maskClosable && onClose?.()
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
className: `drawer ${placement} ${open ? "" : "hidden"} ${className}`,
|
|
94
|
+
style,
|
|
95
|
+
onClick: (e) => e.stopPropagation(),
|
|
96
|
+
role: "dialog",
|
|
97
|
+
"aria-hidden": !open,
|
|
98
|
+
children: [
|
|
99
|
+
(title || extra || closable) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "drawer-head", children: [
|
|
100
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "drawer-title", children: title }),
|
|
101
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "drawer-head-right", children: [
|
|
102
|
+
extra,
|
|
103
|
+
closable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
104
|
+
"button",
|
|
105
|
+
{
|
|
106
|
+
type: "button",
|
|
107
|
+
className: "drawer-close",
|
|
108
|
+
onClick: onClose,
|
|
109
|
+
"aria-label": "Close",
|
|
110
|
+
children: closeIcon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "x", size: 16 })
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
] })
|
|
114
|
+
] }),
|
|
115
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "drawer-body", children }),
|
|
116
|
+
footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "drawer-foot", children: footer })
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
] }),
|
|
121
|
+
document.body
|
|
122
|
+
);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
exports.Drawer = Drawer;
|
|
126
|
+
//# sourceMappingURL=chunk-AEJJGUEN.cjs.map
|
|
127
|
+
//# sourceMappingURL=chunk-AEJJGUEN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Drawer/Drawer.tsx"],"names":["React","ReactDOM","jsxs","Fragment","jsx","Icon"],"mappings":"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","file":"chunk-AEJJGUEN.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Drawer.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\n\nexport interface DrawerProps {\n /** Whether the drawer is visible. */\n open: boolean;\n /** Close callback (triggered by mask click / close button / Esc). */\n onClose?: () => void;\n /** Which edge the drawer slides from. */\n placement?: \"left\" | \"right\" | \"top\" | \"bottom\";\n /** Width (for left/right) or height (for top/bottom). Number → px. */\n size?: number | string;\n /** Header title. */\n title?: React.ReactNode;\n /** Extra content rendered to the right of the title (e.g. action buttons). */\n extra?: React.ReactNode;\n /** Footer content. */\n footer?: React.ReactNode;\n /** Drawer body. */\n children?: React.ReactNode;\n /** Render the mask overlay. Default true. Set `false` for a non-blocking drawer. */\n mask?: boolean;\n /** Close when clicking the mask. Default true. Ignored when `mask` is false. */\n maskClosable?: boolean;\n /** Close on Escape key. Default true. */\n keyboard?: boolean;\n /** Show the close (×) button in the header. Default true. */\n closable?: boolean;\n /** Override the close icon node. */\n closeIcon?: React.ReactNode;\n /**\n * When true the drawer's children are unmounted every time it closes.\n * Default `false` — children stay mounted across open/close cycles so\n * internal state (form fields, scroll position) is preserved.\n */\n destroyOnClose?: boolean;\n /** Fires after the open/close animation finishes. */\n afterOpenChange?: (open: boolean) => void;\n /** Stack index for nested drawers. */\n zIndex?: number;\n className?: string;\n}\n\nconst ANIM_MS = 280;\n\n/** `Drawer` — slide-in panel from an edge. */\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n placement = \"right\",\n size = 380,\n title,\n extra,\n footer,\n children,\n mask = true,\n maskClosable = true,\n keyboard = true,\n closable = true,\n closeIcon,\n destroyOnClose = false,\n afterOpenChange,\n zIndex,\n className = \"\",\n}) => {\n const [hasOpenedOnce, setHasOpenedOnce] = React.useState(open);\n React.useEffect(() => {\n if (open) setHasOpenedOnce(true);\n }, [open]);\n\n React.useEffect(() => {\n if (!open || !keyboard) return;\n const h = (e: KeyboardEvent) => e.key === \"Escape\" && onClose?.();\n window.addEventListener(\"keydown\", h);\n return () => window.removeEventListener(\"keydown\", h);\n }, [open, keyboard, onClose]);\n\n const prevOpen = React.useRef(open);\n React.useEffect(() => {\n if (prevOpen.current !== open) {\n prevOpen.current = open;\n if (afterOpenChange) {\n const id = window.setTimeout(() => afterOpenChange(open), ANIM_MS);\n return () => window.clearTimeout(id);\n }\n }\n }, [open, afterOpenChange]);\n\n if (typeof document === \"undefined\") return null;\n if (!hasOpenedOnce) return null;\n if (!open && destroyOnClose) return null;\n\n const isV = placement === \"left\" || placement === \"right\";\n const style: React.CSSProperties = isV ? { width: size } : { height: size };\n if (zIndex != null) style.zIndex = zIndex;\n\n return ReactDOM.createPortal(\n <>\n {mask && (\n <div\n className={`drawer-overlay ${open ? \"\" : \"hidden\"}`}\n style={zIndex != null ? { zIndex: zIndex - 1 } : undefined}\n onClick={() => maskClosable && onClose?.()}\n />\n )}\n <div\n className={`drawer ${placement} ${open ? \"\" : \"hidden\"} ${className}`}\n style={style}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-hidden={!open}\n >\n {(title || extra || closable) && (\n <div className=\"drawer-head\">\n <div className=\"drawer-title\">{title}</div>\n <div className=\"drawer-head-right\">\n {extra}\n {closable && (\n <button\n type=\"button\"\n className=\"drawer-close\"\n onClick={onClose}\n aria-label=\"Close\"\n >\n {closeIcon ?? <Icon name=\"x\" size={16} />}\n </button>\n )}\n </div>\n </div>\n )}\n <div className=\"drawer-body\">{children}</div>\n {footer && <div className=\"drawer-foot\">{footer}</div>}\n </div>\n </>,\n document.body\n );\n};\n"]}
|
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
import { Icon } from './chunk-GEYMWUW6.js';
|
|
2
2
|
import './tokens-HWQ7KWPG.css';
|
|
3
3
|
import './shared-NJHRNLRH.css';
|
|
4
|
-
import './Tag-
|
|
4
|
+
import './Tag-FGDY3W7E.css';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
var Tag = ({
|
|
8
8
|
tone = "neutral",
|
|
9
9
|
solid,
|
|
10
10
|
dot,
|
|
11
|
+
icon,
|
|
11
12
|
removable,
|
|
12
13
|
onRemove,
|
|
14
|
+
bordered = true,
|
|
13
15
|
className = "",
|
|
14
16
|
children,
|
|
15
17
|
...rest
|
|
16
18
|
}) => {
|
|
17
|
-
const cls = [
|
|
19
|
+
const cls = [
|
|
20
|
+
"tag",
|
|
21
|
+
tone,
|
|
22
|
+
solid && "solid",
|
|
23
|
+
!bordered && !solid && "borderless",
|
|
24
|
+
className
|
|
25
|
+
].filter(Boolean).join(" ");
|
|
18
26
|
return /* @__PURE__ */ jsxs("span", { className: cls, ...rest, children: [
|
|
19
27
|
dot && /* @__PURE__ */ jsx("span", { className: "dot" }),
|
|
28
|
+
icon && /* @__PURE__ */ jsx(Icon, { name: icon, size: 11, className: "tag-ico" }),
|
|
20
29
|
children,
|
|
21
30
|
removable && /* @__PURE__ */ jsx(
|
|
22
31
|
"span",
|
|
@@ -49,5 +58,5 @@ var Badge = ({
|
|
|
49
58
|
};
|
|
50
59
|
|
|
51
60
|
export { Badge, Tag };
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-AJZKESHB.js.map
|
|
62
|
+
//# sourceMappingURL=chunk-AJZKESHB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tag/Tag.tsx"],"names":[],"mappings":";;;;;;AAwBO,IAAM,MAA0B,CAAC;AAAA,EACtC,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,IAAS,OAAA;AAAA,IACT,CAAC,QAAA,IAAY,CAAC,KAAA,IAAS,YAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAA,EAAM,GAAG,IAAA,EACvB,QAAA,EAAA;AAAA,IAAA,GAAA,oBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,CAAA;AAAA,IAC7B,IAAA,wBAAS,IAAA,EAAA,EAAK,IAAA,EAAM,MAAM,IAAA,EAAM,EAAA,EAAI,WAAU,SAAA,EAAU,CAAA;AAAA,IACxD,QAAA;AAAA,IACA,SAAA,oBACC,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,GAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,QAAA;AAAA,QACX,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,UAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,UAAA,QAAA,IAAW;AAAA,QACb,CAAA;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B,GAAA,EAEJ,CAAA;AAEJ;AAYO,IAAM,QAA8B,CAAC;AAAA,EAC1C,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,IAAA,GAAO,GAAA,IAAQ,OAAO,KAAA,KAAU,YAAY,KAAA,GAAQ,CAAA;AAC1D,EAAA,4BACG,MAAA,EAAA,EAAK,SAAA,EAAW,cAAc,SAAS,CAAA,CAAA,EAAK,GAAG,IAAA,EAC7C,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,wBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,EAAI,GAAA,GAAM,KAAA,GAAQ,EAAE,IAC/C,QAAA,EAAA,CAAC,GAAA,KAAQ,KAAA,GAAS,EAAA,GAAK,QAAQ,KAAA,CAAA,EAClC;AAAA,GAAA,EAEJ,CAAA;AAEJ","file":"chunk-AJZKESHB.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Tag.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\nexport type TagTone = \"neutral\" | \"accent\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n tone?: TagTone;\n solid?: boolean;\n /** Render a leading colored dot. */\n dot?: boolean;\n /** Leading icon (uses the built-in `Icon` component). */\n icon?: IconName;\n /** Show a close button. */\n removable?: boolean;\n onRemove?: () => void;\n /** Whether to render the tag outline/flat shadow. Defaults to `true`. */\n bordered?: boolean;\n children?: React.ReactNode;\n}\n\n/** `Tag` — small label/pill. */\nexport const Tag: React.FC<TagProps> = ({\n tone = \"neutral\",\n solid,\n dot,\n icon,\n removable,\n onRemove,\n bordered = true,\n className = \"\",\n children,\n ...rest\n}) => {\n const cls = [\n \"tag\",\n tone,\n solid && \"solid\",\n !bordered && !solid && \"borderless\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <span className={cls} {...rest}>\n {dot && <span className=\"dot\" />}\n {icon && <Icon name={icon} size={11} className=\"tag-ico\" />}\n {children}\n {removable && (\n <span\n className=\"x\"\n role=\"button\"\n aria-label=\"Remove\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n }}\n >\n <Icon name=\"x\" size={11} />\n </span>\n )}\n </span>\n );\n};\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Numeric count — renders as \"99+\" if > 99. */\n count?: number;\n /** Show a tiny dot instead of a number. */\n dot?: boolean;\n tone?: TagTone;\n children?: React.ReactNode;\n}\n\n/** `Badge` — notification dot / count. Wrap around another element. */\nexport const Badge: React.FC<BadgeProps> = ({\n count,\n dot,\n tone = \"danger\",\n children,\n className = \"\",\n ...rest\n}) => {\n const show = dot || (typeof count === \"number\" && count > 0);\n return (\n <span className={`badge-wrap ${className}`} {...rest}>\n {children}\n {show && (\n <span className={`badge ${tone} ${dot ? \"dot\" : \"\"}`}>\n {!dot && (count! > 99 ? \"99+\" : count)}\n </span>\n )}\n </span>\n );\n};\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./tokens-HWQ7KWPG.css');
|
|
4
4
|
require('./shared-NJHRNLRH.css');
|
|
5
|
-
require('./Divider-
|
|
5
|
+
require('./Divider-OEE4Q2KS.css');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
8
8
|
// src/components/Divider/Divider.tsx
|
|
@@ -10,13 +10,22 @@ var Divider = ({
|
|
|
10
10
|
direction = "horizontal",
|
|
11
11
|
label,
|
|
12
12
|
sunken,
|
|
13
|
+
dashed,
|
|
14
|
+
orientation = "center",
|
|
13
15
|
className = "",
|
|
14
16
|
...rest
|
|
15
17
|
}) => {
|
|
16
|
-
const cls = [
|
|
18
|
+
const cls = [
|
|
19
|
+
"divider",
|
|
20
|
+
direction,
|
|
21
|
+
sunken && "sunken",
|
|
22
|
+
dashed && "dashed",
|
|
23
|
+
label && direction === "horizontal" && `orient-${orientation}`,
|
|
24
|
+
className
|
|
25
|
+
].filter(Boolean).join(" ");
|
|
17
26
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cls, role: "separator", ...rest, children: label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "divider-label", children: label }) });
|
|
18
27
|
};
|
|
19
28
|
|
|
20
29
|
exports.Divider = Divider;
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-AXMEZGEG.cjs.map
|
|
31
|
+
//# sourceMappingURL=chunk-AXMEZGEG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Divider/Divider.tsx"],"names":["jsx"],"mappings":";;;;;;;;AAoBO,IAAM,UAAkC,CAAC;AAAA,EAC9C,SAAA,GAAY,YAAA;AAAA,EACZ,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA,IAAU,QAAA;AAAA,IACV,MAAA,IAAU,QAAA;AAAA,IACV,KAAA,IAAS,SAAA,KAAc,YAAA,IAAgB,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,IAC5D;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,EAAA,uBACEA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,MAAK,WAAA,EAAa,GAAG,IAAA,EACvC,QAAA,EAAA,KAAA,oBAASA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAiB,iBAAM,CAAA,EACnD,CAAA;AAEJ","file":"chunk-AXMEZGEG.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Divider.css\";\nimport * as React from \"react\";\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: \"horizontal\" | \"vertical\";\n label?: React.ReactNode;\n /** Use recessed groove styling. */\n sunken?: boolean;\n /** Render as dashed lines instead of solid. */\n dashed?: boolean;\n /**\n * Label position for horizontal dividers. Defaults to `\"center\"`.\n * Ignored when there is no `label`.\n */\n orientation?: \"left\" | \"center\" | \"right\";\n}\n\n/** `Divider` — visual separator, horizontal or vertical. */\nexport const Divider: React.FC<DividerProps> = ({\n direction = \"horizontal\",\n label,\n sunken,\n dashed,\n orientation = \"center\",\n className = \"\",\n ...rest\n}) => {\n const cls = [\n \"divider\",\n direction,\n sunken && \"sunken\",\n dashed && \"dashed\",\n label && direction === \"horizontal\" && `orient-${orientation}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <div className={cls} role=\"separator\" {...rest}>\n {label && <span className=\"divider-label\">{label}</span>}\n </div>\n );\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './tokens-HWQ7KWPG.css';
|
|
2
2
|
import './shared-NJHRNLRH.css';
|
|
3
|
-
import './Switch-
|
|
3
|
+
import './Switch-36KJNDXM.css';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -12,6 +12,8 @@ var Switch = ({
|
|
|
12
12
|
disabled,
|
|
13
13
|
label,
|
|
14
14
|
size = "md",
|
|
15
|
+
checkedChildren,
|
|
16
|
+
unCheckedChildren,
|
|
15
17
|
className = "",
|
|
16
18
|
id
|
|
17
19
|
}) => {
|
|
@@ -24,9 +26,17 @@ var Switch = ({
|
|
|
24
26
|
if (!isControlled) setInner(next);
|
|
25
27
|
onChange?.(next);
|
|
26
28
|
};
|
|
27
|
-
const
|
|
29
|
+
const hasChildren = checkedChildren != null || unCheckedChildren != null;
|
|
30
|
+
const cls = [
|
|
31
|
+
"switch",
|
|
32
|
+
value && "on",
|
|
33
|
+
size !== "md" && size,
|
|
34
|
+
disabled && "disabled",
|
|
35
|
+
hasChildren && "with-children",
|
|
36
|
+
className
|
|
37
|
+
].filter(Boolean).join(" ");
|
|
28
38
|
return /* @__PURE__ */ jsxs("label", { className: cls, children: [
|
|
29
|
-
/* @__PURE__ */
|
|
39
|
+
/* @__PURE__ */ jsxs(
|
|
30
40
|
"button",
|
|
31
41
|
{
|
|
32
42
|
type: "button",
|
|
@@ -36,7 +46,13 @@ var Switch = ({
|
|
|
36
46
|
onClick: toggle,
|
|
37
47
|
id,
|
|
38
48
|
className: "switch-track",
|
|
39
|
-
children:
|
|
49
|
+
children: [
|
|
50
|
+
hasChildren && /* @__PURE__ */ jsxs("span", { className: "switch-inner", children: [
|
|
51
|
+
/* @__PURE__ */ jsx("span", { className: "switch-inner-on", children: checkedChildren }),
|
|
52
|
+
/* @__PURE__ */ jsx("span", { className: "switch-inner-off", children: unCheckedChildren })
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ jsx("span", { className: "switch-thumb" })
|
|
55
|
+
]
|
|
40
56
|
}
|
|
41
57
|
),
|
|
42
58
|
label && /* @__PURE__ */ jsx("span", { className: "switch-label", children: label })
|
|
@@ -44,5 +60,5 @@ var Switch = ({
|
|
|
44
60
|
};
|
|
45
61
|
|
|
46
62
|
export { Switch };
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
48
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-BBPNQ44M.js.map
|
|
64
|
+
//# sourceMappingURL=chunk-BBPNQ44M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Switch/Switch.tsx"],"names":[],"mappings":";;;;;;;AAuBO,IAAM,SAAgC,CAAC;AAAA,EAC5C,OAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,KAAA,CAAA,QAAA,CAAS,kBAAkB,KAAK,CAAA;AAChE,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,eAAe,OAAA,GAAU,KAAA;AAEvC,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,KAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,IAAI,CAAA;AAChC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,eAAA,IAAmB,IAAA,IAAQ,iBAAA,IAAqB,IAAA;AACpE,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,QAAA;AAAA,IACA,KAAA,IAAS,IAAA;AAAA,IACT,SAAS,IAAA,IAAQ,IAAA;AAAA,IACjB,QAAA,IAAY,UAAA;AAAA,IACZ,WAAA,IAAe,eAAA;AAAA,IACf;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,GAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,cAAA,EAAc,KAAA;AAAA,QACd,QAAA;AAAA,QACA,OAAA,EAAS,MAAA;AAAA,QACT,EAAA;AAAA,QACA,SAAA,EAAU,cAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,WAAA,oBACC,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACd,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,4BACnD,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,iBAAA,EAAkB;AAAA,WAAA,EACxD,CAAA;AAAA,0BAEF,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA;AAAA,KACjC;AAAA,IACC,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ","file":"chunk-BBPNQ44M.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Switch.css\";\nimport * as React from \"react\";\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: React.ReactNode;\n size?: \"sm\" | \"md\";\n /** Content rendered inside the track when checked (short text or icon). */\n checkedChildren?: React.ReactNode;\n /** Content rendered inside the track when unchecked. */\n unCheckedChildren?: React.ReactNode;\n className?: string;\n id?: string;\n}\n\n/**\n * `Switch` — on/off toggle. Controlled or uncontrolled.\n */\nexport const Switch: React.FC<SwitchProps> = ({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n size = \"md\",\n checkedChildren,\n unCheckedChildren,\n className = \"\",\n id,\n}) => {\n const [inner, setInner] = React.useState(defaultChecked ?? false);\n const isControlled = checked !== undefined;\n const value = isControlled ? checked : inner;\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const hasChildren = checkedChildren != null || unCheckedChildren != null;\n const cls = [\n \"switch\",\n value && \"on\",\n size !== \"md\" && size,\n disabled && \"disabled\",\n hasChildren && \"with-children\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n disabled={disabled}\n onClick={toggle}\n id={id}\n className=\"switch-track\"\n >\n {hasChildren && (\n <span className=\"switch-inner\">\n <span className=\"switch-inner-on\">{checkedChildren}</span>\n <span className=\"switch-inner-off\">{unCheckedChildren}</span>\n </span>\n )}\n <span className=\"switch-thumb\" />\n </button>\n {label && <span className=\"switch-label\">{label}</span>}\n </label>\n );\n};\n"]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOPTTHURA_cjs = require('./chunk-OPTTHURA.cjs');
|
|
4
|
+
var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
|
|
5
|
+
require('./tokens-HWQ7KWPG.css');
|
|
6
|
+
require('./shared-NJHRNLRH.css');
|
|
7
|
+
require('./Modal-N4YVLEWW.css');
|
|
8
|
+
var React = require('react');
|
|
9
|
+
var ReactDOM = require('react-dom');
|
|
10
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
function _interopNamespace(e) {
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return e[k]; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
n.default = e;
|
|
29
|
+
return Object.freeze(n);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
33
|
+
var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
|
|
34
|
+
|
|
35
|
+
var ANIM_MS = 280;
|
|
36
|
+
var Modal = ({
|
|
37
|
+
open,
|
|
38
|
+
onClose,
|
|
39
|
+
onCancel,
|
|
40
|
+
onOk,
|
|
41
|
+
title,
|
|
42
|
+
description,
|
|
43
|
+
footer,
|
|
44
|
+
children,
|
|
45
|
+
width = 440,
|
|
46
|
+
closable = true,
|
|
47
|
+
closeIcon,
|
|
48
|
+
maskClosable = true,
|
|
49
|
+
escClosable = true,
|
|
50
|
+
okText = "\u786E\u5B9A",
|
|
51
|
+
cancelText = "\u53D6\u6D88",
|
|
52
|
+
okButtonProps,
|
|
53
|
+
cancelButtonProps,
|
|
54
|
+
confirmLoading,
|
|
55
|
+
destroyOnClose = false,
|
|
56
|
+
afterOpenChange,
|
|
57
|
+
zIndex,
|
|
58
|
+
className = ""
|
|
59
|
+
}) => {
|
|
60
|
+
const [hasOpenedOnce, setHasOpenedOnce] = React__namespace.useState(open);
|
|
61
|
+
React__namespace.useEffect(() => {
|
|
62
|
+
if (open) setHasOpenedOnce(true);
|
|
63
|
+
}, [open]);
|
|
64
|
+
const handleCancel = React__namespace.useCallback(() => {
|
|
65
|
+
if (onCancel) onCancel();
|
|
66
|
+
else onClose?.();
|
|
67
|
+
}, [onCancel, onClose]);
|
|
68
|
+
React__namespace.useEffect(() => {
|
|
69
|
+
if (!open || !escClosable) return;
|
|
70
|
+
const h = (e) => {
|
|
71
|
+
if (e.key === "Escape") handleCancel();
|
|
72
|
+
};
|
|
73
|
+
window.addEventListener("keydown", h);
|
|
74
|
+
return () => window.removeEventListener("keydown", h);
|
|
75
|
+
}, [open, escClosable, handleCancel]);
|
|
76
|
+
const prevOpen = React__namespace.useRef(open);
|
|
77
|
+
React__namespace.useEffect(() => {
|
|
78
|
+
if (prevOpen.current !== open) {
|
|
79
|
+
prevOpen.current = open;
|
|
80
|
+
if (afterOpenChange) {
|
|
81
|
+
const id = window.setTimeout(() => afterOpenChange(open), ANIM_MS);
|
|
82
|
+
return () => window.clearTimeout(id);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}, [open, afterOpenChange]);
|
|
86
|
+
if (typeof document === "undefined") return null;
|
|
87
|
+
if (!hasOpenedOnce) return null;
|
|
88
|
+
if (!open && destroyOnClose) return null;
|
|
89
|
+
const overlayStyle = zIndex != null ? { zIndex } : void 0;
|
|
90
|
+
const defaultFooter = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkOPTTHURA_cjs.Button, { variant: "ghost", onClick: handleCancel, ...cancelButtonProps, children: cancelText }),
|
|
92
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
chunkOPTTHURA_cjs.Button,
|
|
94
|
+
{
|
|
95
|
+
variant: "primary",
|
|
96
|
+
loading: confirmLoading,
|
|
97
|
+
onClick: () => onOk?.(),
|
|
98
|
+
...okButtonProps,
|
|
99
|
+
children: okText
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
] });
|
|
103
|
+
return ReactDOM__default.default.createPortal(
|
|
104
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
105
|
+
"div",
|
|
106
|
+
{
|
|
107
|
+
className: `modal-overlay ${open ? "" : "hidden"} ${className}`,
|
|
108
|
+
style: overlayStyle,
|
|
109
|
+
onClick: () => maskClosable && handleCancel(),
|
|
110
|
+
role: "presentation",
|
|
111
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
112
|
+
"div",
|
|
113
|
+
{
|
|
114
|
+
className: "modal",
|
|
115
|
+
style: { width },
|
|
116
|
+
onClick: (e) => e.stopPropagation(),
|
|
117
|
+
role: "dialog",
|
|
118
|
+
"aria-modal": true,
|
|
119
|
+
"aria-hidden": !open,
|
|
120
|
+
children: [
|
|
121
|
+
(title || description || closable) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "modal-head", children: [
|
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "modal-titles", children: [
|
|
123
|
+
title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-title", children: title }),
|
|
124
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-desc", children: description })
|
|
125
|
+
] }),
|
|
126
|
+
closable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
127
|
+
"button",
|
|
128
|
+
{
|
|
129
|
+
type: "button",
|
|
130
|
+
className: "modal-close",
|
|
131
|
+
onClick: handleCancel,
|
|
132
|
+
"aria-label": "Close",
|
|
133
|
+
children: closeIcon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "x", size: 16 })
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
] }),
|
|
137
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-body", children }),
|
|
138
|
+
footer === null ? null : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-foot", children: footer ?? defaultFooter })
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
document.body
|
|
145
|
+
);
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
exports.Modal = Modal;
|
|
149
|
+
//# sourceMappingURL=chunk-CCBHZYE6.cjs.map
|
|
150
|
+
//# sourceMappingURL=chunk-CCBHZYE6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Modal/Modal.tsx"],"names":["React","jsxs","Fragment","jsx","Button","ReactDOM","Icon"],"mappings":"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","file":"chunk-CCBHZYE6.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Modal.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\nimport { Button, type ButtonProps } from \"../Button\";\n\nexport interface ModalProps {\n /** Whether the modal is visible. */\n open: boolean;\n /** Fired by mask click / close button / Esc. Also the fallback for cancel. */\n onClose?: () => void;\n /** Dedicated Cancel callback. Falls back to `onClose` when omitted. */\n onCancel?: () => void;\n /** Fired when the default OK button is clicked. */\n onOk?: () => void;\n title?: React.ReactNode;\n description?: React.ReactNode;\n /**\n * Footer content. Pass `null` to hide the footer, or a custom node to\n * replace the default OK / Cancel buttons.\n */\n footer?: React.ReactNode;\n children?: React.ReactNode;\n width?: number | string;\n /** Show the close (×) button. Default true. */\n closable?: boolean;\n /** Override the close icon node. */\n closeIcon?: React.ReactNode;\n /** Close when clicking the mask. Default true. */\n maskClosable?: boolean;\n /** Close on Escape key. Default true. */\n escClosable?: boolean;\n /** Label for the default OK button. */\n okText?: React.ReactNode;\n /** Label for the default Cancel button. */\n cancelText?: React.ReactNode;\n /** Extra props forwarded to the default OK button. */\n okButtonProps?: Partial<ButtonProps>;\n /** Extra props forwarded to the default Cancel button. */\n cancelButtonProps?: Partial<ButtonProps>;\n /** Show a spinner on the OK button (e.g. while an async submit is running). */\n confirmLoading?: boolean;\n /**\n * When true the modal's children are unmounted every time it closes.\n * Default `false` — children stay mounted so internal state survives\n * reopens, matching antd's default.\n */\n destroyOnClose?: boolean;\n /** Fires after the open/close animation finishes. */\n afterOpenChange?: (open: boolean) => void;\n /** Override the z-index of the overlay. */\n zIndex?: number;\n className?: string;\n}\n\nconst ANIM_MS = 280;\n\n/** `Modal` — centered dialog with mask. Renders into `document.body`. */\nexport const Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n onCancel,\n onOk,\n title,\n description,\n footer,\n children,\n width = 440,\n closable = true,\n closeIcon,\n maskClosable = true,\n escClosable = true,\n okText = \"确定\",\n cancelText = \"取消\",\n okButtonProps,\n cancelButtonProps,\n confirmLoading,\n destroyOnClose = false,\n afterOpenChange,\n zIndex,\n className = \"\",\n}) => {\n const [hasOpenedOnce, setHasOpenedOnce] = React.useState(open);\n React.useEffect(() => {\n if (open) setHasOpenedOnce(true);\n }, [open]);\n\n const handleCancel = React.useCallback(() => {\n if (onCancel) onCancel();\n else onClose?.();\n }, [onCancel, onClose]);\n\n React.useEffect(() => {\n if (!open || !escClosable) return;\n const h = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") handleCancel();\n };\n window.addEventListener(\"keydown\", h);\n return () => window.removeEventListener(\"keydown\", h);\n }, [open, escClosable, handleCancel]);\n\n const prevOpen = React.useRef(open);\n React.useEffect(() => {\n if (prevOpen.current !== open) {\n prevOpen.current = open;\n if (afterOpenChange) {\n const id = window.setTimeout(() => afterOpenChange(open), ANIM_MS);\n return () => window.clearTimeout(id);\n }\n }\n }, [open, afterOpenChange]);\n\n if (typeof document === \"undefined\") return null;\n if (!hasOpenedOnce) return null;\n if (!open && destroyOnClose) return null;\n\n const overlayStyle: React.CSSProperties | undefined =\n zIndex != null ? { zIndex } : undefined;\n\n const defaultFooter = (\n <>\n <Button variant=\"ghost\" onClick={handleCancel} {...cancelButtonProps}>\n {cancelText}\n </Button>\n <Button\n variant=\"primary\"\n loading={confirmLoading}\n onClick={() => onOk?.()}\n {...okButtonProps}\n >\n {okText}\n </Button>\n </>\n );\n\n return ReactDOM.createPortal(\n <div\n className={`modal-overlay ${open ? \"\" : \"hidden\"} ${className}`}\n style={overlayStyle}\n onClick={() => maskClosable && handleCancel()}\n role=\"presentation\"\n >\n <div\n className=\"modal\"\n style={{ width }}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-modal\n aria-hidden={!open}\n >\n {(title || description || closable) && (\n <div className=\"modal-head\">\n <div className=\"modal-titles\">\n {title && <div className=\"modal-title\">{title}</div>}\n {description && <div className=\"modal-desc\">{description}</div>}\n </div>\n {closable && (\n <button\n type=\"button\"\n className=\"modal-close\"\n onClick={handleCancel}\n aria-label=\"Close\"\n >\n {closeIcon ?? <Icon name=\"x\" size={16} />}\n </button>\n )}\n </div>\n )}\n <div className=\"modal-body\">{children}</div>\n {footer === null ? null : (\n <div className=\"modal-foot\">{footer ?? defaultFooter}</div>\n )}\n </div>\n </div>,\n document.body\n );\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkURF6RBW6_cjs = require('./chunk-URF6RBW6.cjs');
|
|
4
4
|
var chunkRZ2E3XEU_cjs = require('./chunk-RZ2E3XEU.cjs');
|
|
5
5
|
var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
|
|
6
6
|
require('./tokens-HWQ7KWPG.css');
|
|
@@ -188,7 +188,7 @@ function Select(props) {
|
|
|
188
188
|
}
|
|
189
189
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "select-tags", children: [
|
|
190
190
|
shown.map((o) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
191
|
-
|
|
191
|
+
chunkURF6RBW6_cjs.Tag,
|
|
192
192
|
{
|
|
193
193
|
tone: "accent",
|
|
194
194
|
removable: !disabled,
|
|
@@ -203,7 +203,7 @@ function Select(props) {
|
|
|
203
203
|
},
|
|
204
204
|
String(o.value)
|
|
205
205
|
)),
|
|
206
|
-
overflow > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
206
|
+
overflow > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkURF6RBW6_cjs.Tag, { tone: "neutral", children: [
|
|
207
207
|
"+",
|
|
208
208
|
overflow
|
|
209
209
|
] })
|
|
@@ -321,5 +321,5 @@ function Select(props) {
|
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
exports.Select = Select;
|
|
324
|
-
//# sourceMappingURL=chunk-
|
|
325
|
-
//# sourceMappingURL=chunk-
|
|
324
|
+
//# sourceMappingURL=chunk-EPFYIR63.cjs.map
|
|
325
|
+
//# sourceMappingURL=chunk-EPFYIR63.cjs.map
|