@zentauri-ui/zentauri-components 0.0.93 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -34
- package/dist/chunk-B23TPTVG.mjs +11 -0
- package/dist/chunk-B23TPTVG.mjs.map +1 -0
- package/dist/{chunk-BZSIXBA7.js → chunk-BITDSQMR.js} +8 -6
- package/dist/chunk-BITDSQMR.js.map +1 -0
- package/dist/{chunk-VJHD7QZH.mjs → chunk-BORK3BJO.mjs} +4 -7
- package/dist/chunk-BORK3BJO.mjs.map +1 -0
- package/dist/chunk-WZ2GOU2J.js +13 -0
- package/dist/chunk-WZ2GOU2J.js.map +1 -0
- package/dist/ui/accordion.d.mts +1 -1
- package/dist/ui/accordion.d.ts +1 -1
- package/dist/ui/accordion.js +80 -61
- package/dist/ui/accordion.js.map +1 -1
- package/dist/ui/accordion.mjs +46 -39
- package/dist/ui/accordion.mjs.map +1 -1
- package/dist/ui/alert.d.mts +1 -1
- package/dist/ui/alert.d.ts +1 -1
- package/dist/ui/alert.js +57 -46
- package/dist/ui/alert.js.map +1 -1
- package/dist/ui/alert.mjs +28 -30
- package/dist/ui/alert.mjs.map +1 -1
- package/dist/ui/badge.js +20 -25
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/badge.mjs +8 -20
- package/dist/ui/badge.mjs.map +1 -1
- package/dist/ui/buttons.js +19 -21
- package/dist/ui/buttons.js.map +1 -1
- package/dist/ui/buttons.mjs +8 -18
- package/dist/ui/buttons.mjs.map +1 -1
- package/dist/ui/card.js +59 -54
- package/dist/ui/card.js.map +1 -1
- package/dist/ui/card.mjs +29 -39
- package/dist/ui/card.mjs.map +1 -1
- package/dist/ui/divider.js +39 -35
- package/dist/ui/divider.js.map +1 -1
- package/dist/ui/divider.mjs +18 -23
- package/dist/ui/divider.mjs.map +1 -1
- package/dist/ui/drawer.d.mts +1 -1
- package/dist/ui/drawer.d.ts +1 -1
- package/dist/ui/drawer.js +106 -73
- package/dist/ui/drawer.js.map +1 -1
- package/dist/ui/drawer.mjs +64 -45
- package/dist/ui/drawer.mjs.map +1 -1
- package/dist/ui/dropdown.js +42 -48
- package/dist/ui/dropdown.js.map +1 -1
- package/dist/ui/dropdown.mjs +13 -29
- package/dist/ui/dropdown.mjs.map +1 -1
- package/dist/ui/empty-state.d.mts +3 -3
- package/dist/ui/empty-state.d.ts +3 -3
- package/dist/ui/empty-state.js +83 -59
- package/dist/ui/empty-state.js.map +1 -1
- package/dist/ui/empty-state.mjs +64 -52
- package/dist/ui/empty-state.mjs.map +1 -1
- package/dist/ui/inputs.js +26 -31
- package/dist/ui/inputs.js.map +1 -1
- package/dist/ui/inputs.mjs +8 -19
- package/dist/ui/inputs.mjs.map +1 -1
- package/dist/ui/modal.d.mts +1 -1
- package/dist/ui/modal.d.ts +1 -1
- package/dist/ui/modal.js +116 -78
- package/dist/ui/modal.js.map +1 -1
- package/dist/ui/modal.mjs +74 -51
- package/dist/ui/modal.mjs.map +1 -1
- package/dist/ui/pagination.js +47 -60
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/pagination.mjs +10 -32
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/progress.js +70 -58
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/progress.mjs +44 -43
- package/dist/ui/progress.mjs.map +1 -1
- package/dist/ui/select.js +73 -81
- package/dist/ui/select.js.map +1 -1
- package/dist/ui/select.mjs +38 -59
- package/dist/ui/select.mjs.map +1 -1
- package/dist/ui/skeleton.js +45 -50
- package/dist/ui/skeleton.js.map +1 -1
- package/dist/ui/skeleton.mjs +8 -25
- package/dist/ui/skeleton.mjs.map +1 -1
- package/dist/ui/spinner.js +37 -38
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/spinner.mjs +11 -18
- package/dist/ui/spinner.mjs.map +1 -1
- package/dist/ui/table.js +77 -79
- package/dist/ui/table.js.map +1 -1
- package/dist/ui/table.mjs +43 -60
- package/dist/ui/table.mjs.map +1 -1
- package/dist/ui/tabs.js +75 -75
- package/dist/ui/tabs.js.map +1 -1
- package/dist/ui/tabs.mjs +48 -59
- package/dist/ui/tabs.mjs.map +1 -1
- package/dist/ui/toast.d.mts +2 -2
- package/dist/ui/toast.d.ts +2 -2
- package/dist/ui/toast.js +111 -88
- package/dist/ui/toast.js.map +1 -1
- package/dist/ui/toast.mjs +77 -69
- package/dist/ui/toast.mjs.map +1 -1
- package/dist/ui/toggle.js +26 -28
- package/dist/ui/toggle.js.map +1 -1
- package/dist/ui/toggle.mjs +12 -21
- package/dist/ui/toggle.mjs.map +1 -1
- package/dist/ui/tooltip.js +29 -36
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/tooltip.mjs +8 -23
- package/dist/ui/tooltip.mjs.map +1 -1
- package/package.json +5 -3
- package/dist/chunk-BZSIXBA7.js.map +0 -1
- package/dist/chunk-E5UX537J.js +0 -11
- package/dist/chunk-E5UX537J.js.map +0 -1
- package/dist/chunk-MEWYFWBX.mjs +0 -14
- package/dist/chunk-MEWYFWBX.mjs.map +0 -1
- package/dist/chunk-VJHD7QZH.mjs.map +0 -1
package/dist/ui/modal.js
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
"use
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
2
3
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _framermotion = require('framer-motion');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var _react = require('react');
|
|
21
|
-
var _reactdom = require('react-dom');
|
|
4
|
+
var chunkWZ2GOU2J_js = require('../chunk-WZ2GOU2J.js');
|
|
5
|
+
var framerMotion = require('framer-motion');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var reactDom = require('react-dom');
|
|
8
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
9
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
22
10
|
|
|
23
11
|
// src/ui/modal/animations.ts
|
|
24
12
|
var modalOverlayAnimationPresets = {
|
|
@@ -48,13 +36,10 @@ var modalOverlayAnimationPresets = {
|
|
|
48
36
|
transition: { type: "spring", stiffness: 380, damping: 30 }
|
|
49
37
|
}
|
|
50
38
|
};
|
|
51
|
-
|
|
52
|
-
// src/ui/modal/variants.ts
|
|
53
|
-
var _classvarianceauthority = require('class-variance-authority');
|
|
54
|
-
var modalOverlayVariants = _classvarianceauthority.cva.call(void 0,
|
|
39
|
+
var modalOverlayVariants = classVarianceAuthority.cva(
|
|
55
40
|
"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm data-[state=open]:animate-in"
|
|
56
41
|
);
|
|
57
|
-
var modalTriggerVariants =
|
|
42
|
+
var modalTriggerVariants = classVarianceAuthority.cva(
|
|
58
43
|
"relative inline-flex shrink-0 cursor-pointer rounded-md border",
|
|
59
44
|
{
|
|
60
45
|
variants: {
|
|
@@ -89,7 +74,7 @@ var modalTriggerVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
89
74
|
}
|
|
90
75
|
}
|
|
91
76
|
);
|
|
92
|
-
var modalContentVariants =
|
|
77
|
+
var modalContentVariants = classVarianceAuthority.cva(
|
|
93
78
|
"fixed left-1/2 z-50 w-[calc(100%-2rem)] max-h-[min(90vh,720px)] translate-x-[-50%] overflow-y-auto border border-white/10 bg-slate-950 p-6 text-slate-50 shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none",
|
|
94
79
|
{
|
|
95
80
|
variants: {
|
|
@@ -138,12 +123,9 @@ var modalContentVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
138
123
|
}
|
|
139
124
|
}
|
|
140
125
|
);
|
|
141
|
-
|
|
142
|
-
// src/ui/modal/modal.tsx
|
|
143
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
144
|
-
var ModalContext = _react.createContext.call(void 0, null);
|
|
126
|
+
var ModalContext = react.createContext(null);
|
|
145
127
|
function useModalContext(component) {
|
|
146
|
-
const ctx =
|
|
128
|
+
const ctx = react.useContext(ModalContext);
|
|
147
129
|
if (!ctx) {
|
|
148
130
|
throw new Error(`${component} must be used within <Modal>`);
|
|
149
131
|
}
|
|
@@ -151,7 +133,7 @@ function useModalContext(component) {
|
|
|
151
133
|
}
|
|
152
134
|
var FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex="-1"])';
|
|
153
135
|
function useBodyScrollLock(locked) {
|
|
154
|
-
|
|
136
|
+
react.useEffect(() => {
|
|
155
137
|
if (!locked) {
|
|
156
138
|
return;
|
|
157
139
|
}
|
|
@@ -162,24 +144,29 @@ function useBodyScrollLock(locked) {
|
|
|
162
144
|
};
|
|
163
145
|
}, [locked]);
|
|
164
146
|
}
|
|
165
|
-
function Modal({
|
|
147
|
+
function Modal({
|
|
148
|
+
open,
|
|
149
|
+
defaultOpen = false,
|
|
150
|
+
onOpenChange,
|
|
151
|
+
children
|
|
152
|
+
}) {
|
|
166
153
|
const isControlled = open !== void 0;
|
|
167
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
154
|
+
const [uncontrolledOpen, setUncontrolledOpen] = react.useState(defaultOpen);
|
|
168
155
|
const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;
|
|
169
|
-
const setOpen =
|
|
156
|
+
const setOpen = react.useCallback(
|
|
170
157
|
(next) => {
|
|
171
158
|
if (!isControlled) {
|
|
172
159
|
setUncontrolledOpen(next);
|
|
173
160
|
}
|
|
174
|
-
|
|
161
|
+
onOpenChange?.(next);
|
|
175
162
|
},
|
|
176
163
|
[isControlled, onOpenChange]
|
|
177
164
|
);
|
|
178
|
-
const baseId =
|
|
165
|
+
const baseId = react.useId();
|
|
179
166
|
const titleId = `${baseId}-title`;
|
|
180
167
|
const descriptionId = `${baseId}-description`;
|
|
181
|
-
const contentRef =
|
|
182
|
-
const ctx =
|
|
168
|
+
const contentRef = react.useRef(null);
|
|
169
|
+
const ctx = react.useMemo(
|
|
183
170
|
() => ({
|
|
184
171
|
open: resolvedOpen,
|
|
185
172
|
setOpen,
|
|
@@ -189,20 +176,27 @@ function Modal({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
189
176
|
}),
|
|
190
177
|
[descriptionId, resolvedOpen, setOpen, titleId]
|
|
191
178
|
);
|
|
192
|
-
return /* @__PURE__ */
|
|
179
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ModalContext.Provider, { value: ctx, children });
|
|
193
180
|
}
|
|
194
181
|
Modal.displayName = "Modal";
|
|
195
|
-
function ModalTrigger({
|
|
182
|
+
function ModalTrigger({
|
|
183
|
+
className,
|
|
184
|
+
children,
|
|
185
|
+
appearance,
|
|
186
|
+
onClick,
|
|
187
|
+
ref,
|
|
188
|
+
...rest
|
|
189
|
+
}) {
|
|
196
190
|
const { setOpen } = useModalContext("ModalTrigger");
|
|
197
|
-
return /* @__PURE__ */
|
|
191
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
198
192
|
"button",
|
|
199
193
|
{
|
|
200
194
|
ref,
|
|
201
195
|
type: "button",
|
|
202
196
|
"data-slot": "modal-trigger",
|
|
203
|
-
className:
|
|
197
|
+
className: chunkWZ2GOU2J_js.cn(modalTriggerVariants({ appearance }), className),
|
|
204
198
|
onClick: (event) => {
|
|
205
|
-
|
|
199
|
+
onClick?.(event);
|
|
206
200
|
if (!event.defaultPrevented) {
|
|
207
201
|
setOpen(true);
|
|
208
202
|
}
|
|
@@ -225,11 +219,11 @@ function ModalContent({
|
|
|
225
219
|
style
|
|
226
220
|
}) {
|
|
227
221
|
const { open, setOpen, titleId, descriptionId, contentRef } = useModalContext("ModalContent");
|
|
228
|
-
const reduceMotion =
|
|
222
|
+
const reduceMotion = framerMotion.useReducedMotion();
|
|
229
223
|
const overlayMotion = modalOverlayAnimationPresets[reduceMotion ? "fade" : animation];
|
|
230
224
|
const panelMotion = modalOverlayAnimationPresets[reduceMotion ? "fade" : animation];
|
|
231
225
|
useBodyScrollLock(open);
|
|
232
|
-
|
|
226
|
+
react.useEffect(() => {
|
|
233
227
|
if (!open) {
|
|
234
228
|
return;
|
|
235
229
|
}
|
|
@@ -241,7 +235,7 @@ function ModalContent({
|
|
|
241
235
|
window.addEventListener("keydown", handleKeyDown);
|
|
242
236
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
243
237
|
}, [open, setOpen]);
|
|
244
|
-
|
|
238
|
+
react.useEffect(() => {
|
|
245
239
|
if (!open) {
|
|
246
240
|
return;
|
|
247
241
|
}
|
|
@@ -252,7 +246,7 @@ function ModalContent({
|
|
|
252
246
|
const focusables = Array.from(
|
|
253
247
|
node.querySelectorAll(FOCUSABLE_SELECTOR)
|
|
254
248
|
).filter((element) => element.offsetParent !== null || element === node);
|
|
255
|
-
const target =
|
|
249
|
+
const target = focusables[0] ?? node;
|
|
256
250
|
const previouslyFocused = document.activeElement;
|
|
257
251
|
target.focus();
|
|
258
252
|
const handleFocusIn = (event) => {
|
|
@@ -264,17 +258,17 @@ function ModalContent({
|
|
|
264
258
|
document.addEventListener("focusin", handleFocusIn);
|
|
265
259
|
return () => {
|
|
266
260
|
document.removeEventListener("focusin", handleFocusIn);
|
|
267
|
-
|
|
261
|
+
previouslyFocused?.focus?.();
|
|
268
262
|
};
|
|
269
263
|
}, [contentRef, open]);
|
|
270
264
|
const portalTarget = typeof document !== "undefined" ? document.body : null;
|
|
271
265
|
if (!portalTarget) {
|
|
272
266
|
return null;
|
|
273
267
|
}
|
|
274
|
-
return
|
|
275
|
-
/* @__PURE__ */
|
|
276
|
-
/* @__PURE__ */
|
|
277
|
-
|
|
268
|
+
return reactDom.createPortal(
|
|
269
|
+
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50", "data-slot": "modal-portal", children: [
|
|
270
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
271
|
+
framerMotion.motion.button,
|
|
278
272
|
{
|
|
279
273
|
type: "button",
|
|
280
274
|
"aria-hidden": true,
|
|
@@ -288,8 +282,8 @@ function ModalContent({
|
|
|
288
282
|
transition: overlayMotion.transition
|
|
289
283
|
}
|
|
290
284
|
),
|
|
291
|
-
/* @__PURE__ */
|
|
292
|
-
|
|
285
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
286
|
+
framerMotion.motion.div,
|
|
293
287
|
{
|
|
294
288
|
ref: (node) => {
|
|
295
289
|
contentRef.current = node;
|
|
@@ -305,7 +299,10 @@ function ModalContent({
|
|
|
305
299
|
"aria-describedby": descriptionId,
|
|
306
300
|
"data-slot": "modal-content",
|
|
307
301
|
tabIndex: -1,
|
|
308
|
-
className:
|
|
302
|
+
className: chunkWZ2GOU2J_js.cn(
|
|
303
|
+
modalContentVariants({ size, position, appearance }),
|
|
304
|
+
className
|
|
305
|
+
),
|
|
309
306
|
initial: animation === "none" ? false : panelMotion.initial,
|
|
310
307
|
animate: animation === "none" ? void 0 : panelMotion.animate,
|
|
311
308
|
exit: animation === "none" ? void 0 : panelMotion.exit,
|
|
@@ -321,58 +318,99 @@ function ModalContent({
|
|
|
321
318
|
}
|
|
322
319
|
ModalContent.displayName = "ModalContent";
|
|
323
320
|
function ModalHeader({ className, children }) {
|
|
324
|
-
return /* @__PURE__ */
|
|
321
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
322
|
+
"header",
|
|
323
|
+
{
|
|
324
|
+
"data-slot": "modal-header",
|
|
325
|
+
className: chunkWZ2GOU2J_js.cn("mb-4 flex flex-col gap-2", className),
|
|
326
|
+
children
|
|
327
|
+
}
|
|
328
|
+
);
|
|
325
329
|
}
|
|
326
330
|
ModalHeader.displayName = "ModalHeader";
|
|
327
331
|
function ModalBody({ className, children }) {
|
|
328
|
-
return /* @__PURE__ */
|
|
332
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
333
|
+
"div",
|
|
334
|
+
{
|
|
335
|
+
"data-slot": "modal-body",
|
|
336
|
+
className: chunkWZ2GOU2J_js.cn("text-sm text-slate-300", className),
|
|
337
|
+
children
|
|
338
|
+
}
|
|
339
|
+
);
|
|
329
340
|
}
|
|
330
341
|
ModalBody.displayName = "ModalBody";
|
|
331
342
|
function ModalFooter({ className, children }) {
|
|
332
|
-
return /* @__PURE__ */
|
|
343
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
344
|
+
"footer",
|
|
345
|
+
{
|
|
346
|
+
"data-slot": "modal-footer",
|
|
347
|
+
className: chunkWZ2GOU2J_js.cn("mt-6 flex justify-end gap-2", className),
|
|
348
|
+
children
|
|
349
|
+
}
|
|
350
|
+
);
|
|
333
351
|
}
|
|
334
352
|
ModalFooter.displayName = "ModalFooter";
|
|
335
353
|
function ModalTitle({ className, children }) {
|
|
336
354
|
const { titleId } = useModalContext("ModalTitle");
|
|
337
|
-
return /* @__PURE__ */
|
|
355
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
356
|
+
"h2",
|
|
357
|
+
{
|
|
358
|
+
id: titleId,
|
|
359
|
+
"data-slot": "modal-title",
|
|
360
|
+
className: chunkWZ2GOU2J_js.cn("text-lg font-semibold", className),
|
|
361
|
+
children
|
|
362
|
+
}
|
|
363
|
+
);
|
|
338
364
|
}
|
|
339
365
|
ModalTitle.displayName = "ModalTitle";
|
|
340
366
|
function ModalDescription({ className, children }) {
|
|
341
367
|
const { descriptionId } = useModalContext("ModalDescription");
|
|
342
|
-
return /* @__PURE__ */
|
|
368
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
369
|
+
"p",
|
|
370
|
+
{
|
|
371
|
+
id: descriptionId,
|
|
372
|
+
"data-slot": "modal-description",
|
|
373
|
+
className: chunkWZ2GOU2J_js.cn("text-sm text-slate-400", className),
|
|
374
|
+
children
|
|
375
|
+
}
|
|
376
|
+
);
|
|
343
377
|
}
|
|
344
378
|
ModalDescription.displayName = "ModalDescription";
|
|
345
|
-
function ModalClose({
|
|
379
|
+
function ModalClose({
|
|
380
|
+
className,
|
|
381
|
+
children,
|
|
382
|
+
...rest
|
|
383
|
+
}) {
|
|
346
384
|
const { setOpen } = useModalContext("ModalClose");
|
|
347
|
-
return /* @__PURE__ */
|
|
385
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
348
386
|
"button",
|
|
349
387
|
{
|
|
350
388
|
type: "button",
|
|
351
389
|
"data-slot": "modal-close",
|
|
352
|
-
className:
|
|
390
|
+
className: chunkWZ2GOU2J_js.cn(
|
|
353
391
|
"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30",
|
|
354
392
|
className
|
|
355
393
|
),
|
|
356
394
|
"aria-label": "Close dialog",
|
|
357
395
|
onClick: () => setOpen(false),
|
|
358
396
|
...rest,
|
|
359
|
-
children:
|
|
397
|
+
children: children ?? "\xD7"
|
|
360
398
|
}
|
|
361
399
|
);
|
|
362
400
|
}
|
|
363
401
|
ModalClose.displayName = "ModalClose";
|
|
364
402
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
403
|
+
exports.Modal = Modal;
|
|
404
|
+
exports.ModalBody = ModalBody;
|
|
405
|
+
exports.ModalClose = ModalClose;
|
|
406
|
+
exports.ModalContent = ModalContent;
|
|
407
|
+
exports.ModalDescription = ModalDescription;
|
|
408
|
+
exports.ModalFooter = ModalFooter;
|
|
409
|
+
exports.ModalHeader = ModalHeader;
|
|
410
|
+
exports.ModalTitle = ModalTitle;
|
|
411
|
+
exports.ModalTrigger = ModalTrigger;
|
|
412
|
+
exports.modalContentVariants = modalContentVariants;
|
|
413
|
+
exports.modalOverlayAnimationPresets = modalOverlayAnimationPresets;
|
|
414
|
+
exports.modalOverlayVariants = modalOverlayVariants;
|
|
415
|
+
//# sourceMappingURL=modal.js.map
|
|
378
416
|
//# sourceMappingURL=modal.js.map
|
package/dist/ui/modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/shubham/Desktop/Repos/NEXT%20JS/zentauri-ui/packages/components/dist/ui/modal.js"],"names":[],"mappings":"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AAC,GAAG,EAAE;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,sBAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,wBAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,sBAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,oBAAA;AACA,sBAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,sBAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,cAAA;AACA,YAAA;AACA,cAAA;AACA,YAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/shubham/Desktop/Repos/NEXT JS/zentauri-ui/packages/components/dist/ui/modal.js","sourcesContent":[null]}
|
|
1
|
+
{"version":3,"sources":["../../src/ui/modal/animations.ts","../../src/ui/modal/variants.ts","../../src/ui/modal/modal.tsx"],"names":["cva","createContext","useContext","useEffect","useState","useCallback","useId","useRef","useMemo","jsx","cn","useReducedMotion","createPortal","AnimatePresence","jsxs","motion"],"mappings":"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","file":"modal.js","sourcesContent":["import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { ModalAnimation } from \"./types\";\n\ntype ModalPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type ModalAnimationPresets = Record<\n ModalAnimation,\n ModalPresetMotionProps\n>;\n\nexport const modalOverlayAnimationPresets: ModalAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.2 },\n },\n scale: {\n initial: { opacity: 0, scale: 0.96 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.96 },\n transition: { type: \"spring\", stiffness: 420, damping: 32 },\n },\n \"slide-up\": {\n initial: { opacity: 0, y: 24 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 16 },\n transition: { type: \"spring\", stiffness: 380, damping: 30 },\n },\n \"slide-down\": {\n initial: { opacity: 0, y: -24 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -16 },\n transition: { type: \"spring\", stiffness: 380, damping: 30 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const modalOverlayVariants = cva(\n \"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm data-[state=open]:animate-in\",\n);\n\nexport const modalTriggerVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer rounded-md border\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\":\n \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\":\n \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\":\n \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\":\n \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\":\n \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\":\n \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\":\n \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\":\n \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\":\n \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const modalContentVariants = cva(\n \"fixed left-1/2 z-50 w-[calc(100%-2rem)] max-h-[min(90vh,720px)] translate-x-[-50%] overflow-y-auto border border-white/10 bg-slate-950 p-6 text-slate-50 shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none\",\n {\n variants: {\n size: {\n sm: \"max-w-md\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n full: \"max-w-[calc(100%-2rem)]\",\n },\n position: {\n center: \"top-1/2 translate-y-[-50%]\",\n top: \"top-10 translate-y-0\",\n bottom: \"bottom-10 translate-y-0\",\n },\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\":\n \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\":\n \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\":\n \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\":\n \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\":\n \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\":\n \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\":\n \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\":\n \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\":\n \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n size: \"md\",\n position: \"center\",\n appearance: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { modalOverlayAnimationPresets } from \"./animations\";\nimport type {\n ModalContentProps,\n ModalProps,\n ModalSectionProps,\n ModalTriggerProps,\n} from \"./types\";\nimport {\n modalContentVariants,\n modalOverlayVariants,\n modalTriggerVariants,\n} from \"./variants\";\n\ntype ModalCtx = {\n open: boolean;\n setOpen: (next: boolean) => void;\n titleId: string;\n descriptionId: string;\n contentRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst ModalContext = createContext<ModalCtx | null>(null);\n\nfunction useModalContext(component: string): ModalCtx {\n const ctx = useContext(ModalContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Modal>`);\n }\n return ctx;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction useBodyScrollLock(locked: boolean) {\n useEffect(() => {\n if (!locked) {\n return;\n }\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [locked]);\n}\n\nexport function Modal({\n open,\n defaultOpen = false,\n onOpenChange,\n children,\n}: ModalProps) {\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = `${baseId}-description`;\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n open: resolvedOpen,\n setOpen,\n titleId,\n descriptionId,\n contentRef,\n }),\n [descriptionId, resolvedOpen, setOpen, titleId],\n );\n\n return <ModalContext.Provider value={ctx}>{children}</ModalContext.Provider>;\n}\n\nModal.displayName = \"Modal\";\n\nexport function ModalTrigger({\n className,\n children,\n appearance,\n onClick,\n ref,\n ...rest\n}: ModalTriggerProps) {\n const { setOpen } = useModalContext(\"ModalTrigger\");\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"modal-trigger\"\n className={cn(modalTriggerVariants({ appearance }), className)}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nModalTrigger.displayName = \"ModalTrigger\";\n\nexport function ModalContent({\n className,\n size,\n position,\n appearance,\n animation = \"scale\",\n children,\n ref,\n id,\n style,\n}: ModalContentProps) {\n const { open, setOpen, titleId, descriptionId, contentRef } =\n useModalContext(\"ModalContent\");\n const reduceMotion = useReducedMotion();\n const overlayMotion =\n modalOverlayAnimationPresets[reduceMotion ? \"fade\" : animation];\n const panelMotion =\n modalOverlayAnimationPresets[reduceMotion ? \"fade\" : animation];\n\n useBodyScrollLock(open);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, setOpen]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const node = contentRef.current;\n if (!node) {\n return;\n }\n const focusables = Array.from(\n node.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => element.offsetParent !== null || element === node);\n const target = focusables[0] ?? node;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n target.focus();\n\n const handleFocusIn = (event: FocusEvent) => {\n if (!node.contains(event.target as Node)) {\n event.stopPropagation();\n target.focus();\n }\n };\n document.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn);\n previouslyFocused?.focus?.();\n };\n }, [contentRef, open]);\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <AnimatePresence>\n {open ? (\n <div className=\"fixed inset-0 z-50\" data-slot=\"modal-portal\">\n <motion.button\n type=\"button\"\n aria-hidden\n tabIndex={-1}\n data-slot=\"modal-overlay\"\n className={modalOverlayVariants()}\n onClick={() => setOpen(false)}\n initial={animation === \"none\" ? false : overlayMotion.initial}\n animate={animation === \"none\" ? undefined : overlayMotion.animate}\n exit={animation === \"none\" ? undefined : overlayMotion.exit}\n transition={overlayMotion.transition}\n />\n <motion.div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n data-slot=\"modal-content\"\n tabIndex={-1}\n className={cn(\n modalContentVariants({ size, position, appearance }),\n className,\n )}\n initial={animation === \"none\" ? false : panelMotion.initial}\n animate={animation === \"none\" ? undefined : panelMotion.animate}\n exit={animation === \"none\" ? undefined : panelMotion.exit}\n transition={panelMotion.transition}\n id={id}\n style={style}\n >\n {children}\n </motion.div>\n </div>\n ) : null}\n </AnimatePresence>,\n portalTarget,\n );\n}\n\nModalContent.displayName = \"ModalContent\";\n\nexport function ModalHeader({ className, children }: ModalSectionProps) {\n return (\n <header\n data-slot=\"modal-header\"\n className={cn(\"mb-4 flex flex-col gap-2\", className)}\n >\n {children}\n </header>\n );\n}\n\nModalHeader.displayName = \"ModalHeader\";\n\nexport function ModalBody({ className, children }: ModalSectionProps) {\n return (\n <div\n data-slot=\"modal-body\"\n className={cn(\"text-sm text-slate-300\", className)}\n >\n {children}\n </div>\n );\n}\n\nModalBody.displayName = \"ModalBody\";\n\nexport function ModalFooter({ className, children }: ModalSectionProps) {\n return (\n <footer\n data-slot=\"modal-footer\"\n className={cn(\"mt-6 flex justify-end gap-2\", className)}\n >\n {children}\n </footer>\n );\n}\n\nModalFooter.displayName = \"ModalFooter\";\n\nexport function ModalTitle({ className, children }: ModalSectionProps) {\n const { titleId } = useModalContext(\"ModalTitle\");\n return (\n <h2\n id={titleId}\n data-slot=\"modal-title\"\n className={cn(\"text-lg font-semibold\", className)}\n >\n {children}\n </h2>\n );\n}\n\nModalTitle.displayName = \"ModalTitle\";\n\nexport function ModalDescription({ className, children }: ModalSectionProps) {\n const { descriptionId } = useModalContext(\"ModalDescription\");\n return (\n <p\n id={descriptionId}\n data-slot=\"modal-description\"\n className={cn(\"text-sm text-slate-400\", className)}\n >\n {children}\n </p>\n );\n}\n\nModalDescription.displayName = \"ModalDescription\";\n\nexport function ModalClose({\n className,\n children,\n ...rest\n}: ModalSectionProps) {\n const { setOpen } = useModalContext(\"ModalClose\");\n return (\n <button\n type=\"button\"\n data-slot=\"modal-close\"\n className={cn(\n \"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n aria-label=\"Close dialog\"\n onClick={() => setOpen(false)}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nModalClose.displayName = \"ModalClose\";\n"]}
|
package/dist/ui/modal.mjs
CHANGED
|
@@ -1,26 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
} from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
AnimatePresence,
|
|
10
|
-
motion,
|
|
11
|
-
useReducedMotion
|
|
12
|
-
} from "framer-motion";
|
|
13
|
-
import {
|
|
14
|
-
createContext,
|
|
15
|
-
useCallback,
|
|
16
|
-
useContext,
|
|
17
|
-
useEffect,
|
|
18
|
-
useId,
|
|
19
|
-
useMemo,
|
|
20
|
-
useRef,
|
|
21
|
-
useState
|
|
22
|
-
} from "react";
|
|
23
|
-
import { createPortal } from "react-dom";
|
|
2
|
+
import { cn } from '../chunk-B23TPTVG.mjs';
|
|
3
|
+
import { useReducedMotion, AnimatePresence, motion } from 'framer-motion';
|
|
4
|
+
import { createContext, useState, useCallback, useId, useRef, useMemo, useEffect, useContext } from 'react';
|
|
5
|
+
import { createPortal } from 'react-dom';
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
24
8
|
|
|
25
9
|
// src/ui/modal/animations.ts
|
|
26
10
|
var modalOverlayAnimationPresets = {
|
|
@@ -50,9 +34,6 @@ var modalOverlayAnimationPresets = {
|
|
|
50
34
|
transition: { type: "spring", stiffness: 380, damping: 30 }
|
|
51
35
|
}
|
|
52
36
|
};
|
|
53
|
-
|
|
54
|
-
// src/ui/modal/variants.ts
|
|
55
|
-
import { cva } from "class-variance-authority";
|
|
56
37
|
var modalOverlayVariants = cva(
|
|
57
38
|
"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm data-[state=open]:animate-in"
|
|
58
39
|
);
|
|
@@ -140,9 +121,6 @@ var modalContentVariants = cva(
|
|
|
140
121
|
}
|
|
141
122
|
}
|
|
142
123
|
);
|
|
143
|
-
|
|
144
|
-
// src/ui/modal/modal.tsx
|
|
145
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
146
124
|
var ModalContext = createContext(null);
|
|
147
125
|
function useModalContext(component) {
|
|
148
126
|
const ctx = useContext(ModalContext);
|
|
@@ -164,7 +142,12 @@ function useBodyScrollLock(locked) {
|
|
|
164
142
|
};
|
|
165
143
|
}, [locked]);
|
|
166
144
|
}
|
|
167
|
-
function Modal({
|
|
145
|
+
function Modal({
|
|
146
|
+
open,
|
|
147
|
+
defaultOpen = false,
|
|
148
|
+
onOpenChange,
|
|
149
|
+
children
|
|
150
|
+
}) {
|
|
168
151
|
const isControlled = open !== void 0;
|
|
169
152
|
const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
|
|
170
153
|
const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;
|
|
@@ -194,7 +177,14 @@ function Modal({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
194
177
|
return /* @__PURE__ */ jsx(ModalContext.Provider, { value: ctx, children });
|
|
195
178
|
}
|
|
196
179
|
Modal.displayName = "Modal";
|
|
197
|
-
function ModalTrigger({
|
|
180
|
+
function ModalTrigger({
|
|
181
|
+
className,
|
|
182
|
+
children,
|
|
183
|
+
appearance,
|
|
184
|
+
onClick,
|
|
185
|
+
ref,
|
|
186
|
+
...rest
|
|
187
|
+
}) {
|
|
198
188
|
const { setOpen } = useModalContext("ModalTrigger");
|
|
199
189
|
return /* @__PURE__ */ jsx(
|
|
200
190
|
"button",
|
|
@@ -307,7 +297,10 @@ function ModalContent({
|
|
|
307
297
|
"aria-describedby": descriptionId,
|
|
308
298
|
"data-slot": "modal-content",
|
|
309
299
|
tabIndex: -1,
|
|
310
|
-
className: cn(
|
|
300
|
+
className: cn(
|
|
301
|
+
modalContentVariants({ size, position, appearance }),
|
|
302
|
+
className
|
|
303
|
+
),
|
|
311
304
|
initial: animation === "none" ? false : panelMotion.initial,
|
|
312
305
|
animate: animation === "none" ? void 0 : panelMotion.animate,
|
|
313
306
|
exit: animation === "none" ? void 0 : panelMotion.exit,
|
|
@@ -323,28 +316,69 @@ function ModalContent({
|
|
|
323
316
|
}
|
|
324
317
|
ModalContent.displayName = "ModalContent";
|
|
325
318
|
function ModalHeader({ className, children }) {
|
|
326
|
-
return /* @__PURE__ */ jsx(
|
|
319
|
+
return /* @__PURE__ */ jsx(
|
|
320
|
+
"header",
|
|
321
|
+
{
|
|
322
|
+
"data-slot": "modal-header",
|
|
323
|
+
className: cn("mb-4 flex flex-col gap-2", className),
|
|
324
|
+
children
|
|
325
|
+
}
|
|
326
|
+
);
|
|
327
327
|
}
|
|
328
328
|
ModalHeader.displayName = "ModalHeader";
|
|
329
329
|
function ModalBody({ className, children }) {
|
|
330
|
-
return /* @__PURE__ */ jsx(
|
|
330
|
+
return /* @__PURE__ */ jsx(
|
|
331
|
+
"div",
|
|
332
|
+
{
|
|
333
|
+
"data-slot": "modal-body",
|
|
334
|
+
className: cn("text-sm text-slate-300", className),
|
|
335
|
+
children
|
|
336
|
+
}
|
|
337
|
+
);
|
|
331
338
|
}
|
|
332
339
|
ModalBody.displayName = "ModalBody";
|
|
333
340
|
function ModalFooter({ className, children }) {
|
|
334
|
-
return /* @__PURE__ */ jsx(
|
|
341
|
+
return /* @__PURE__ */ jsx(
|
|
342
|
+
"footer",
|
|
343
|
+
{
|
|
344
|
+
"data-slot": "modal-footer",
|
|
345
|
+
className: cn("mt-6 flex justify-end gap-2", className),
|
|
346
|
+
children
|
|
347
|
+
}
|
|
348
|
+
);
|
|
335
349
|
}
|
|
336
350
|
ModalFooter.displayName = "ModalFooter";
|
|
337
351
|
function ModalTitle({ className, children }) {
|
|
338
352
|
const { titleId } = useModalContext("ModalTitle");
|
|
339
|
-
return /* @__PURE__ */ jsx(
|
|
353
|
+
return /* @__PURE__ */ jsx(
|
|
354
|
+
"h2",
|
|
355
|
+
{
|
|
356
|
+
id: titleId,
|
|
357
|
+
"data-slot": "modal-title",
|
|
358
|
+
className: cn("text-lg font-semibold", className),
|
|
359
|
+
children
|
|
360
|
+
}
|
|
361
|
+
);
|
|
340
362
|
}
|
|
341
363
|
ModalTitle.displayName = "ModalTitle";
|
|
342
364
|
function ModalDescription({ className, children }) {
|
|
343
365
|
const { descriptionId } = useModalContext("ModalDescription");
|
|
344
|
-
return /* @__PURE__ */ jsx(
|
|
366
|
+
return /* @__PURE__ */ jsx(
|
|
367
|
+
"p",
|
|
368
|
+
{
|
|
369
|
+
id: descriptionId,
|
|
370
|
+
"data-slot": "modal-description",
|
|
371
|
+
className: cn("text-sm text-slate-400", className),
|
|
372
|
+
children
|
|
373
|
+
}
|
|
374
|
+
);
|
|
345
375
|
}
|
|
346
376
|
ModalDescription.displayName = "ModalDescription";
|
|
347
|
-
function ModalClose({
|
|
377
|
+
function ModalClose({
|
|
378
|
+
className,
|
|
379
|
+
children,
|
|
380
|
+
...rest
|
|
381
|
+
}) {
|
|
348
382
|
const { setOpen } = useModalContext("ModalClose");
|
|
349
383
|
return /* @__PURE__ */ jsx(
|
|
350
384
|
"button",
|
|
@@ -363,18 +397,7 @@ function ModalClose({ className, children, ...rest }) {
|
|
|
363
397
|
);
|
|
364
398
|
}
|
|
365
399
|
ModalClose.displayName = "ModalClose";
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
ModalClose,
|
|
370
|
-
ModalContent,
|
|
371
|
-
ModalDescription,
|
|
372
|
-
ModalFooter,
|
|
373
|
-
ModalHeader,
|
|
374
|
-
ModalTitle,
|
|
375
|
-
ModalTrigger,
|
|
376
|
-
modalContentVariants,
|
|
377
|
-
modalOverlayAnimationPresets,
|
|
378
|
-
modalOverlayVariants
|
|
379
|
-
};
|
|
400
|
+
|
|
401
|
+
export { Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants, modalOverlayAnimationPresets, modalOverlayVariants };
|
|
402
|
+
//# sourceMappingURL=modal.mjs.map
|
|
380
403
|
//# sourceMappingURL=modal.mjs.map
|