@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.
Files changed (112) hide show
  1. package/README.md +72 -34
  2. package/dist/chunk-B23TPTVG.mjs +11 -0
  3. package/dist/chunk-B23TPTVG.mjs.map +1 -0
  4. package/dist/{chunk-BZSIXBA7.js → chunk-BITDSQMR.js} +8 -6
  5. package/dist/chunk-BITDSQMR.js.map +1 -0
  6. package/dist/{chunk-VJHD7QZH.mjs → chunk-BORK3BJO.mjs} +4 -7
  7. package/dist/chunk-BORK3BJO.mjs.map +1 -0
  8. package/dist/chunk-WZ2GOU2J.js +13 -0
  9. package/dist/chunk-WZ2GOU2J.js.map +1 -0
  10. package/dist/ui/accordion.d.mts +1 -1
  11. package/dist/ui/accordion.d.ts +1 -1
  12. package/dist/ui/accordion.js +80 -61
  13. package/dist/ui/accordion.js.map +1 -1
  14. package/dist/ui/accordion.mjs +46 -39
  15. package/dist/ui/accordion.mjs.map +1 -1
  16. package/dist/ui/alert.d.mts +1 -1
  17. package/dist/ui/alert.d.ts +1 -1
  18. package/dist/ui/alert.js +57 -46
  19. package/dist/ui/alert.js.map +1 -1
  20. package/dist/ui/alert.mjs +28 -30
  21. package/dist/ui/alert.mjs.map +1 -1
  22. package/dist/ui/badge.js +20 -25
  23. package/dist/ui/badge.js.map +1 -1
  24. package/dist/ui/badge.mjs +8 -20
  25. package/dist/ui/badge.mjs.map +1 -1
  26. package/dist/ui/buttons.js +19 -21
  27. package/dist/ui/buttons.js.map +1 -1
  28. package/dist/ui/buttons.mjs +8 -18
  29. package/dist/ui/buttons.mjs.map +1 -1
  30. package/dist/ui/card.js +59 -54
  31. package/dist/ui/card.js.map +1 -1
  32. package/dist/ui/card.mjs +29 -39
  33. package/dist/ui/card.mjs.map +1 -1
  34. package/dist/ui/divider.js +39 -35
  35. package/dist/ui/divider.js.map +1 -1
  36. package/dist/ui/divider.mjs +18 -23
  37. package/dist/ui/divider.mjs.map +1 -1
  38. package/dist/ui/drawer.d.mts +1 -1
  39. package/dist/ui/drawer.d.ts +1 -1
  40. package/dist/ui/drawer.js +106 -73
  41. package/dist/ui/drawer.js.map +1 -1
  42. package/dist/ui/drawer.mjs +64 -45
  43. package/dist/ui/drawer.mjs.map +1 -1
  44. package/dist/ui/dropdown.js +42 -48
  45. package/dist/ui/dropdown.js.map +1 -1
  46. package/dist/ui/dropdown.mjs +13 -29
  47. package/dist/ui/dropdown.mjs.map +1 -1
  48. package/dist/ui/empty-state.d.mts +3 -3
  49. package/dist/ui/empty-state.d.ts +3 -3
  50. package/dist/ui/empty-state.js +83 -59
  51. package/dist/ui/empty-state.js.map +1 -1
  52. package/dist/ui/empty-state.mjs +64 -52
  53. package/dist/ui/empty-state.mjs.map +1 -1
  54. package/dist/ui/inputs.js +26 -31
  55. package/dist/ui/inputs.js.map +1 -1
  56. package/dist/ui/inputs.mjs +8 -19
  57. package/dist/ui/inputs.mjs.map +1 -1
  58. package/dist/ui/modal.d.mts +1 -1
  59. package/dist/ui/modal.d.ts +1 -1
  60. package/dist/ui/modal.js +116 -78
  61. package/dist/ui/modal.js.map +1 -1
  62. package/dist/ui/modal.mjs +74 -51
  63. package/dist/ui/modal.mjs.map +1 -1
  64. package/dist/ui/pagination.js +47 -60
  65. package/dist/ui/pagination.js.map +1 -1
  66. package/dist/ui/pagination.mjs +10 -32
  67. package/dist/ui/pagination.mjs.map +1 -1
  68. package/dist/ui/progress.js +70 -58
  69. package/dist/ui/progress.js.map +1 -1
  70. package/dist/ui/progress.mjs +44 -43
  71. package/dist/ui/progress.mjs.map +1 -1
  72. package/dist/ui/select.js +73 -81
  73. package/dist/ui/select.js.map +1 -1
  74. package/dist/ui/select.mjs +38 -59
  75. package/dist/ui/select.mjs.map +1 -1
  76. package/dist/ui/skeleton.js +45 -50
  77. package/dist/ui/skeleton.js.map +1 -1
  78. package/dist/ui/skeleton.mjs +8 -25
  79. package/dist/ui/skeleton.mjs.map +1 -1
  80. package/dist/ui/spinner.js +37 -38
  81. package/dist/ui/spinner.js.map +1 -1
  82. package/dist/ui/spinner.mjs +11 -18
  83. package/dist/ui/spinner.mjs.map +1 -1
  84. package/dist/ui/table.js +77 -79
  85. package/dist/ui/table.js.map +1 -1
  86. package/dist/ui/table.mjs +43 -60
  87. package/dist/ui/table.mjs.map +1 -1
  88. package/dist/ui/tabs.js +75 -75
  89. package/dist/ui/tabs.js.map +1 -1
  90. package/dist/ui/tabs.mjs +48 -59
  91. package/dist/ui/tabs.mjs.map +1 -1
  92. package/dist/ui/toast.d.mts +2 -2
  93. package/dist/ui/toast.d.ts +2 -2
  94. package/dist/ui/toast.js +111 -88
  95. package/dist/ui/toast.js.map +1 -1
  96. package/dist/ui/toast.mjs +77 -69
  97. package/dist/ui/toast.mjs.map +1 -1
  98. package/dist/ui/toggle.js +26 -28
  99. package/dist/ui/toggle.js.map +1 -1
  100. package/dist/ui/toggle.mjs +12 -21
  101. package/dist/ui/toggle.mjs.map +1 -1
  102. package/dist/ui/tooltip.js +29 -36
  103. package/dist/ui/tooltip.js.map +1 -1
  104. package/dist/ui/tooltip.mjs +8 -23
  105. package/dist/ui/tooltip.mjs.map +1 -1
  106. package/package.json +5 -3
  107. package/dist/chunk-BZSIXBA7.js.map +0 -1
  108. package/dist/chunk-E5UX537J.js +0 -11
  109. package/dist/chunk-E5UX537J.js.map +0 -1
  110. package/dist/chunk-MEWYFWBX.mjs +0 -14
  111. package/dist/chunk-MEWYFWBX.mjs.map +0 -1
  112. package/dist/chunk-VJHD7QZH.mjs.map +0 -1
package/dist/ui/modal.js CHANGED
@@ -1,24 +1,12 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
1
+ "use client";
2
+ 'use strict';
2
3
 
3
- var _chunkE5UX537Jjs = require('../chunk-E5UX537J.js');
4
-
5
- // src/ui/modal/modal.tsx
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 = _classvarianceauthority.cva.call(void 0,
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 = _classvarianceauthority.cva.call(void 0,
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 = _react.useContext.call(void 0, ModalContext);
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
- _react.useEffect.call(void 0, () => {
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({ open, defaultOpen = false, onOpenChange, children }) {
147
+ function Modal({
148
+ open,
149
+ defaultOpen = false,
150
+ onOpenChange,
151
+ children
152
+ }) {
166
153
  const isControlled = open !== void 0;
167
- const [uncontrolledOpen, setUncontrolledOpen] = _react.useState.call(void 0, defaultOpen);
154
+ const [uncontrolledOpen, setUncontrolledOpen] = react.useState(defaultOpen);
168
155
  const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;
169
- const setOpen = _react.useCallback.call(void 0,
156
+ const setOpen = react.useCallback(
170
157
  (next) => {
171
158
  if (!isControlled) {
172
159
  setUncontrolledOpen(next);
173
160
  }
174
- _optionalChain([onOpenChange, 'optionalCall', _ => _(next)]);
161
+ onOpenChange?.(next);
175
162
  },
176
163
  [isControlled, onOpenChange]
177
164
  );
178
- const baseId = _react.useId.call(void 0, );
165
+ const baseId = react.useId();
179
166
  const titleId = `${baseId}-title`;
180
167
  const descriptionId = `${baseId}-description`;
181
- const contentRef = _react.useRef.call(void 0, null);
182
- const ctx = _react.useMemo.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, ModalContext.Provider, { value: ctx, children });
179
+ return /* @__PURE__ */ jsxRuntime.jsx(ModalContext.Provider, { value: ctx, children });
193
180
  }
194
181
  Modal.displayName = "Modal";
195
- function ModalTrigger({ className, children, appearance, onClick, ref, ...rest }) {
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__ */ _jsxruntime.jsx.call(void 0,
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: _chunkE5UX537Jjs.cn.call(void 0, modalTriggerVariants({ appearance }), className),
197
+ className: chunkWZ2GOU2J_js.cn(modalTriggerVariants({ appearance }), className),
204
198
  onClick: (event) => {
205
- _optionalChain([onClick, 'optionalCall', _2 => _2(event)]);
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 = _framermotion.useReducedMotion.call(void 0, );
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
- _react.useEffect.call(void 0, () => {
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
- _react.useEffect.call(void 0, () => {
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 = _nullishCoalesce(focusables[0], () => ( node));
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
- _optionalChain([previouslyFocused, 'optionalAccess', _3 => _3.focus, 'optionalCall', _4 => _4()]);
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 _reactdom.createPortal.call(void 0,
275
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _framermotion.AnimatePresence, { children: open ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "fixed inset-0 z-50", "data-slot": "modal-portal", children: [
276
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
277
- _framermotion.motion.button,
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__ */ _jsxruntime.jsx.call(void 0,
292
- _framermotion.motion.div,
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: _chunkE5UX537Jjs.cn.call(void 0, modalContentVariants({ size, position, appearance }), 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__ */ _jsxruntime.jsx.call(void 0, "header", { "data-slot": "modal-header", className: _chunkE5UX537Jjs.cn.call(void 0, "mb-4 flex flex-col gap-2", className), children });
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__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "modal-body", className: _chunkE5UX537Jjs.cn.call(void 0, "text-sm text-slate-300", className), children });
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__ */ _jsxruntime.jsx.call(void 0, "footer", { "data-slot": "modal-footer", className: _chunkE5UX537Jjs.cn.call(void 0, "mt-6 flex justify-end gap-2", className), children });
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__ */ _jsxruntime.jsx.call(void 0, "h2", { id: titleId, "data-slot": "modal-title", className: _chunkE5UX537Jjs.cn.call(void 0, "text-lg font-semibold", className), children });
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__ */ _jsxruntime.jsx.call(void 0, "p", { id: descriptionId, "data-slot": "modal-description", className: _chunkE5UX537Jjs.cn.call(void 0, "text-sm text-slate-400", className), children });
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({ className, children, ...rest }) {
379
+ function ModalClose({
380
+ className,
381
+ children,
382
+ ...rest
383
+ }) {
346
384
  const { setOpen } = useModalContext("ModalClose");
347
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
385
+ return /* @__PURE__ */ jsxRuntime.jsx(
348
386
  "button",
349
387
  {
350
388
  type: "button",
351
389
  "data-slot": "modal-close",
352
- className: _chunkE5UX537Jjs.cn.call(void 0,
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: _nullishCoalesce(children, () => ( "\xD7"))
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
- exports.Modal = Modal; exports.ModalBody = ModalBody; exports.ModalClose = ModalClose; exports.ModalContent = ModalContent; exports.ModalDescription = ModalDescription; exports.ModalFooter = ModalFooter; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalTrigger = ModalTrigger; exports.modalContentVariants = modalContentVariants; exports.modalOverlayAnimationPresets = modalOverlayAnimationPresets; exports.modalOverlayVariants = modalOverlayVariants;
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
@@ -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
- cn
5
- } from "../chunk-MEWYFWBX.mjs";
6
-
7
- // src/ui/modal/modal.tsx
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({ open, defaultOpen = false, onOpenChange, children }) {
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({ className, children, appearance, onClick, ref, ...rest }) {
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(modalContentVariants({ size, position, appearance }), className),
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("header", { "data-slot": "modal-header", className: cn("mb-4 flex flex-col gap-2", className), children });
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("div", { "data-slot": "modal-body", className: cn("text-sm text-slate-300", className), children });
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("footer", { "data-slot": "modal-footer", className: cn("mt-6 flex justify-end gap-2", className), children });
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("h2", { id: titleId, "data-slot": "modal-title", className: cn("text-lg font-semibold", className), children });
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("p", { id: descriptionId, "data-slot": "modal-description", className: cn("text-sm text-slate-400", className), children });
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({ className, children, ...rest }) {
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
- export {
367
- Modal,
368
- ModalBody,
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