@wow-two-beta/ui 0.0.16 → 0.0.18

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 (101) hide show
  1. package/dist/actions/backToTopButton/BackToTopButton.d.ts +19 -0
  2. package/dist/actions/backToTopButton/BackToTopButton.d.ts.map +1 -0
  3. package/dist/actions/backToTopButton/index.d.ts +2 -0
  4. package/dist/actions/backToTopButton/index.d.ts.map +1 -0
  5. package/dist/actions/index.d.ts +1 -0
  6. package/dist/actions/index.d.ts.map +1 -1
  7. package/dist/actions/index.js +2 -2
  8. package/dist/{chunk-XHGWBSIR.js → chunk-25CGSOXZ.js} +5 -87
  9. package/dist/chunk-25CGSOXZ.js.map +1 -0
  10. package/dist/{chunk-SM2TOB4U.js → chunk-3KPILWVX.js} +268 -4
  11. package/dist/chunk-3KPILWVX.js.map +1 -0
  12. package/dist/{chunk-ILYL6ROC.js → chunk-3P7DZCDS.js} +257 -5
  13. package/dist/chunk-3P7DZCDS.js.map +1 -0
  14. package/dist/{chunk-3IN5ULKY.js → chunk-45SFQEMP.js} +417 -37
  15. package/dist/chunk-45SFQEMP.js.map +1 -0
  16. package/dist/{chunk-W7LQZKTH.js → chunk-D7XIPKDJ.js} +109 -4
  17. package/dist/chunk-D7XIPKDJ.js.map +1 -0
  18. package/dist/{chunk-2VAZKEQD.js → chunk-DSA7L7PD.js} +256 -141
  19. package/dist/chunk-DSA7L7PD.js.map +1 -0
  20. package/dist/{chunk-NRAJPSEK.js → chunk-GRJBIGUD.js} +72 -6
  21. package/dist/chunk-GRJBIGUD.js.map +1 -0
  22. package/dist/chunk-NKADHZMX.js +39 -0
  23. package/dist/chunk-NKADHZMX.js.map +1 -0
  24. package/dist/chunk-NTW7SDAP.js +92 -0
  25. package/dist/chunk-NTW7SDAP.js.map +1 -0
  26. package/dist/chunk-O6UUYPTB.js +148 -0
  27. package/dist/chunk-O6UUYPTB.js.map +1 -0
  28. package/dist/{chunk-4ESR253U.js → chunk-XRTXK5Y4.js} +119 -7
  29. package/dist/chunk-XRTXK5Y4.js.map +1 -0
  30. package/dist/display/index.d.ts +1 -0
  31. package/dist/display/index.d.ts.map +1 -1
  32. package/dist/display/index.js +2 -2
  33. package/dist/display/swipeActions/SwipeActions.d.ts +17 -0
  34. package/dist/display/swipeActions/SwipeActions.d.ts.map +1 -0
  35. package/dist/display/swipeActions/index.d.ts +2 -0
  36. package/dist/display/swipeActions/index.d.ts.map +1 -0
  37. package/dist/feedback/index.d.ts +3 -0
  38. package/dist/feedback/index.d.ts.map +1 -1
  39. package/dist/feedback/index.js +3 -1
  40. package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +33 -0
  41. package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts.map +1 -0
  42. package/dist/feedback/onboardingChecklist/index.d.ts +3 -0
  43. package/dist/feedback/onboardingChecklist/index.d.ts.map +1 -0
  44. package/dist/feedback/tour/Tour.d.ts +25 -0
  45. package/dist/feedback/tour/Tour.d.ts.map +1 -0
  46. package/dist/feedback/tour/index.d.ts +2 -0
  47. package/dist/feedback/tour/index.d.ts.map +1 -0
  48. package/dist/feedback/undoBar/UndoBar.d.ts +22 -0
  49. package/dist/feedback/undoBar/UndoBar.d.ts.map +1 -0
  50. package/dist/feedback/undoBar/index.d.ts +2 -0
  51. package/dist/feedback/undoBar/index.d.ts.map +1 -0
  52. package/dist/forms/index.d.ts +1 -0
  53. package/dist/forms/index.d.ts.map +1 -1
  54. package/dist/forms/index.js +6 -4
  55. package/dist/forms/wizard/Wizard.d.ts +58 -0
  56. package/dist/forms/wizard/Wizard.d.ts.map +1 -0
  57. package/dist/forms/wizard/index.d.ts +3 -0
  58. package/dist/forms/wizard/index.d.ts.map +1 -0
  59. package/dist/index.js +12 -9
  60. package/dist/layout/appShell/AppShell.d.ts +50 -0
  61. package/dist/layout/appShell/AppShell.d.ts.map +1 -0
  62. package/dist/layout/appShell/index.d.ts +3 -0
  63. package/dist/layout/appShell/index.d.ts.map +1 -0
  64. package/dist/layout/index.d.ts +2 -0
  65. package/dist/layout/index.d.ts.map +1 -1
  66. package/dist/layout/index.js +7 -2
  67. package/dist/layout/pullToRefresh/PullToRefresh.d.ts +15 -0
  68. package/dist/layout/pullToRefresh/PullToRefresh.d.ts.map +1 -0
  69. package/dist/layout/pullToRefresh/index.d.ts +2 -0
  70. package/dist/layout/pullToRefresh/index.d.ts.map +1 -0
  71. package/dist/nav/index.d.ts +2 -0
  72. package/dist/nav/index.d.ts.map +1 -1
  73. package/dist/nav/index.js +4 -3
  74. package/dist/nav/scrollSpy/ScrollSpy.d.ts +25 -0
  75. package/dist/nav/scrollSpy/ScrollSpy.d.ts.map +1 -0
  76. package/dist/nav/scrollSpy/index.d.ts +2 -0
  77. package/dist/nav/scrollSpy/index.d.ts.map +1 -0
  78. package/dist/nav/tableOfContents/TableOfContents.d.ts +24 -0
  79. package/dist/nav/tableOfContents/TableOfContents.d.ts.map +1 -0
  80. package/dist/nav/tableOfContents/index.d.ts +2 -0
  81. package/dist/nav/tableOfContents/index.d.ts.map +1 -0
  82. package/dist/overlays/actionSheet/ActionSheet.d.ts +29 -0
  83. package/dist/overlays/actionSheet/ActionSheet.d.ts.map +1 -0
  84. package/dist/overlays/actionSheet/index.d.ts +3 -0
  85. package/dist/overlays/actionSheet/index.d.ts.map +1 -0
  86. package/dist/overlays/bottomSheet/BottomSheet.d.ts +29 -0
  87. package/dist/overlays/bottomSheet/BottomSheet.d.ts.map +1 -0
  88. package/dist/overlays/bottomSheet/index.d.ts +2 -0
  89. package/dist/overlays/bottomSheet/index.d.ts.map +1 -0
  90. package/dist/overlays/index.d.ts +2 -0
  91. package/dist/overlays/index.d.ts.map +1 -1
  92. package/dist/overlays/index.js +5 -3
  93. package/package.json +1 -1
  94. package/dist/chunk-2VAZKEQD.js.map +0 -1
  95. package/dist/chunk-3IN5ULKY.js.map +0 -1
  96. package/dist/chunk-4ESR253U.js.map +0 -1
  97. package/dist/chunk-ILYL6ROC.js.map +0 -1
  98. package/dist/chunk-NRAJPSEK.js.map +0 -1
  99. package/dist/chunk-SM2TOB4U.js.map +0 -1
  100. package/dist/chunk-W7LQZKTH.js.map +0 -1
  101. package/dist/chunk-XHGWBSIR.js.map +0 -1
@@ -1,10 +1,11 @@
1
- import { DialogContent, DialogClose, OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-XHGWBSIR.js';
2
- import { useControlled } from './chunk-4P2TFUVW.js';
1
+ import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-O6UUYPTB.js';
2
+ import { DialogContent, DialogClose, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-25CGSOXZ.js';
3
3
  import { Backdrop } from './chunk-ASIHQQDQ.js';
4
- import { Slot, Portal, ScrollLockProvider, DismissableLayer, AnchoredPositioner, OverlayArrow } from './chunk-NC2CBGX2.js';
4
+ import { useControlled } from './chunk-4P2TFUVW.js';
5
+ import { Slot, Portal, AnchoredPositioner, DismissableLayer, ScrollLockProvider, OverlayArrow } from './chunk-NC2CBGX2.js';
5
6
  import { composeRefs } from './chunk-DN7WBRIV.js';
6
7
  import { cn } from './chunk-KZ4VFY2T.js';
7
- import { forwardRef, createContext, useCallback, useMemo, useContext, useRef, useId, isValidElement, cloneElement } from 'react';
8
+ import { forwardRef, createContext, useState, useRef, useEffect, useMemo, useContext, useCallback, isValidElement, cloneElement } from 'react';
8
9
  import { jsx, jsxs } from 'react/jsx-runtime';
9
10
  import { FocusScope } from '@radix-ui/react-focus-scope';
10
11
 
@@ -62,140 +63,6 @@ AlertDialog.Body = DialogBody;
62
63
  AlertDialog.Footer = DialogFooter;
63
64
  AlertDialog.Action = AlertDialogAction;
64
65
  AlertDialog.Cancel = AlertDialogCancel;
65
- var DrawerContext = createContext(null);
66
- function useDrawerContext() {
67
- const ctx = useContext(DrawerContext);
68
- if (!ctx) throw new Error("Drawer.* must be used inside <Drawer>");
69
- return ctx;
70
- }
71
- function Drawer({
72
- open: openProp,
73
- defaultOpen = false,
74
- onOpenChange,
75
- side = "right",
76
- dismissOnOutsideClick = true,
77
- dismissOnEscape = true,
78
- children
79
- }) {
80
- const [open, setOpen] = useControlled({
81
- controlled: openProp,
82
- default: defaultOpen,
83
- onChange: onOpenChange
84
- });
85
- const triggerRef = useRef(null);
86
- const titleId = useId();
87
- const descriptionId = useId();
88
- const ctx = useMemo(
89
- () => ({
90
- open,
91
- setOpen,
92
- triggerRef,
93
- titleId,
94
- descriptionId,
95
- side,
96
- dismissOnOutsideClick,
97
- dismissOnEscape
98
- }),
99
- [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape]
100
- );
101
- return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: ctx, children });
102
- }
103
- var DrawerTrigger = forwardRef(
104
- function DrawerTrigger2({ asChild, onClick, children, ...rest }, forwardedRef) {
105
- const ctx = useDrawerContext();
106
- const Component = asChild ? Slot : "button";
107
- return /* @__PURE__ */ jsx(
108
- Component,
109
- {
110
- ref: composeRefs(forwardedRef, ctx.triggerRef),
111
- type: "button",
112
- "aria-haspopup": "dialog",
113
- "aria-expanded": ctx.open,
114
- "data-state": ctx.open ? "open" : "closed",
115
- onClick: (e) => {
116
- onClick?.(e);
117
- if (e.defaultPrevented) return;
118
- ctx.setOpen(true);
119
- },
120
- ...rest,
121
- children
122
- }
123
- );
124
- }
125
- );
126
- var SIDE_CLASSES = {
127
- right: "inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right",
128
- left: "inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left",
129
- top: "inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top",
130
- bottom: "inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom"
131
- };
132
- var DrawerContent = forwardRef(
133
- function DrawerContent2({ hideBackdrop, blur, className, children, ...rest }, forwardedRef) {
134
- const ctx = useDrawerContext();
135
- const close = useCallback(() => {
136
- ctx.setOpen(false);
137
- requestAnimationFrame(() => ctx.triggerRef.current?.focus());
138
- }, [ctx]);
139
- const chromeCtx = useMemo(
140
- () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),
141
- [ctx.titleId, ctx.descriptionId, close]
142
- );
143
- if (!ctx.open) return null;
144
- return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(ScrollLockProvider, { children: [
145
- !hideBackdrop && /* @__PURE__ */ jsx(
146
- Backdrop,
147
- {
148
- inline: true,
149
- blur,
150
- onClick: () => {
151
- if (ctx.dismissOnOutsideClick) ctx.setOpen(false);
152
- }
153
- }
154
- ),
155
- /* @__PURE__ */ jsx(FocusScope, { asChild: true, trapped: true, loop: true, children: /* @__PURE__ */ jsx(
156
- DismissableLayer,
157
- {
158
- disableEscape: !ctx.dismissOnEscape,
159
- onEscape: () => ctx.setOpen(false),
160
- disableOutsideClick: true,
161
- children: /* @__PURE__ */ jsx(
162
- "div",
163
- {
164
- ref: forwardedRef,
165
- role: "dialog",
166
- "aria-modal": "true",
167
- "aria-labelledby": ctx.titleId,
168
- "aria-describedby": ctx.descriptionId,
169
- "data-state": "open",
170
- "data-side": ctx.side,
171
- className: cn(
172
- "fixed z-50 flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none",
173
- SIDE_CLASSES[ctx.side],
174
- className
175
- ),
176
- ...rest,
177
- children: /* @__PURE__ */ jsx(OverlayChromeProvider, { value: chromeCtx, children })
178
- }
179
- )
180
- }
181
- ) })
182
- ] }) });
183
- }
184
- );
185
- var DrawerHeader = OverlayHeader;
186
- var DrawerTitle = OverlayTitle;
187
- var DrawerDescription = OverlayDescription;
188
- var DrawerBody = OverlayBody;
189
- var DrawerFooter = OverlayFooter;
190
- var DrawerClose = OverlayCloseButton;
191
- Drawer.Trigger = DrawerTrigger;
192
- Drawer.Content = DrawerContent;
193
- Drawer.Header = DrawerHeader;
194
- Drawer.Title = DrawerTitle;
195
- Drawer.Description = DrawerDescription;
196
- Drawer.Body = DrawerBody;
197
- Drawer.Footer = DrawerFooter;
198
- Drawer.Close = DrawerClose;
199
66
  var PopoverContext = createContext(null);
200
67
  function usePopoverContext() {
201
68
  const ctx = useContext(PopoverContext);
@@ -422,7 +289,255 @@ function HoverCardArrow({ className, ...rest }) {
422
289
  HoverCard.Trigger = HoverCardTrigger;
423
290
  HoverCard.Content = HoverCardContent;
424
291
  HoverCard.Arrow = HoverCardArrow;
292
+ var ActionSheetContext = createContext(null);
293
+ function useActionSheetContext() {
294
+ const ctx = useContext(ActionSheetContext);
295
+ if (!ctx) throw new Error("ActionSheet.* must be used inside <ActionSheet>");
296
+ return ctx;
297
+ }
298
+ function ActionSheet({
299
+ open,
300
+ defaultOpen,
301
+ onOpenChange,
302
+ title,
303
+ description,
304
+ className,
305
+ children
306
+ }) {
307
+ const handleOpenChange = (next) => onOpenChange?.(next);
308
+ const ctx = useMemo(
309
+ () => ({ setOpen: handleOpenChange }),
310
+ // eslint-disable-next-line react-hooks/exhaustive-deps
311
+ [onOpenChange]
312
+ );
313
+ return /* @__PURE__ */ jsx(ActionSheetContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(Drawer, { open, defaultOpen, onOpenChange, side: "bottom", children: /* @__PURE__ */ jsxs(
314
+ DrawerContent,
315
+ {
316
+ className: cn(
317
+ "mx-auto max-w-md rounded-t-xl bg-card p-2 text-card-foreground",
318
+ className
319
+ ),
320
+ children: [
321
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: "px-3 py-2 text-center", children: [
322
+ title && /* @__PURE__ */ jsx(DrawerTitle, { className: "text-sm font-medium text-muted-foreground", children: title }),
323
+ description && /* @__PURE__ */ jsx(DrawerDescription, { className: "mt-1 text-xs text-muted-foreground", children: description })
324
+ ] }),
325
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-px overflow-hidden rounded-lg bg-border", children })
326
+ ]
327
+ }
328
+ ) }) });
329
+ }
330
+ var ActionSheetAction = forwardRef(
331
+ function ActionSheetAction2({ className, onSelect, destructive, onClick, children, type = "button", ...rest }, ref) {
332
+ const ctx = useActionSheetContext();
333
+ return /* @__PURE__ */ jsx(
334
+ "button",
335
+ {
336
+ ref,
337
+ type,
338
+ onClick: (e) => {
339
+ onClick?.(e);
340
+ if (e.defaultPrevented) return;
341
+ onSelect?.();
342
+ ctx.setOpen(false);
343
+ },
344
+ className: cn(
345
+ "flex h-12 w-full items-center justify-center bg-card px-4 text-base font-medium transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
346
+ destructive ? "text-destructive" : "text-foreground",
347
+ className
348
+ ),
349
+ ...rest,
350
+ children
351
+ }
352
+ );
353
+ }
354
+ );
355
+ var ActionSheetCancel = forwardRef(
356
+ function ActionSheetCancel2({ className, onClick, children = "Cancel", type = "button", ...rest }, ref) {
357
+ const ctx = useActionSheetContext();
358
+ return /* @__PURE__ */ jsx(
359
+ "button",
360
+ {
361
+ ref,
362
+ type,
363
+ onClick: (e) => {
364
+ onClick?.(e);
365
+ if (e.defaultPrevented) return;
366
+ ctx.setOpen(false);
367
+ },
368
+ className: cn(
369
+ "mt-2 flex h-12 w-full items-center justify-center rounded-lg bg-card text-base font-semibold text-foreground shadow-sm transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
370
+ className
371
+ ),
372
+ ...rest,
373
+ children
374
+ }
375
+ );
376
+ }
377
+ );
378
+ ActionSheet.Action = ActionSheetAction;
379
+ ActionSheet.Cancel = ActionSheetCancel;
380
+ var BottomSheetContext = createContext(null);
381
+ function useBottomSheet() {
382
+ const ctx = useContext(BottomSheetContext);
383
+ if (!ctx) throw new Error("useBottomSheet must be used inside <BottomSheet>");
384
+ return ctx;
385
+ }
386
+ function resolveSnapPx(point, viewport) {
387
+ if (typeof point === "number") return point;
388
+ const trimmed = point.trim();
389
+ if (trimmed.endsWith("vh")) return parseFloat(trimmed) / 100 * viewport;
390
+ if (trimmed.endsWith("px")) return parseFloat(trimmed);
391
+ if (trimmed.endsWith("%")) return parseFloat(trimmed) / 100 * viewport;
392
+ const n = parseFloat(trimmed);
393
+ return Number.isFinite(n) ? n : 0;
394
+ }
395
+ var BottomSheet = forwardRef(function BottomSheet2({
396
+ open: openProp,
397
+ defaultOpen = false,
398
+ onOpenChange,
399
+ snapPoints = ["40vh", "90vh"],
400
+ initialSnap = 0,
401
+ dismissOnOutsideClick = true,
402
+ dismissOnEscape = true,
403
+ dragToDismiss = true,
404
+ className,
405
+ children,
406
+ ...rest
407
+ }, forwardedRef) {
408
+ const [open, setOpen] = useControlled({
409
+ controlled: openProp,
410
+ default: defaultOpen,
411
+ onChange: onOpenChange
412
+ });
413
+ const [currentSnap, setCurrentSnap] = useState(
414
+ Math.min(initialSnap, snapPoints.length - 1)
415
+ );
416
+ const sheetRef = useRef(null);
417
+ const startYRef = useRef(null);
418
+ const startHeightRef = useRef(0);
419
+ const [dragHeight, setDragHeight] = useState(null);
420
+ useEffect(() => {
421
+ if (open) setCurrentSnap(Math.min(initialSnap, snapPoints.length - 1));
422
+ }, [open, initialSnap, snapPoints.length]);
423
+ const ctx = useMemo(
424
+ () => ({ open, setOpen, currentSnap, setCurrentSnap, snapPoints }),
425
+ [open, setOpen, currentSnap, snapPoints]
426
+ );
427
+ const handlePointerDown = (e) => {
428
+ startYRef.current = e.clientY;
429
+ const rect = sheetRef.current?.getBoundingClientRect();
430
+ startHeightRef.current = rect ? rect.height : 0;
431
+ e.currentTarget.setPointerCapture(e.pointerId);
432
+ };
433
+ const handlePointerMove = (e) => {
434
+ if (startYRef.current == null) return;
435
+ const dy = e.clientY - startYRef.current;
436
+ setDragHeight(Math.max(0, startHeightRef.current - dy));
437
+ };
438
+ const handlePointerUp = (e) => {
439
+ if (startYRef.current == null) return;
440
+ startYRef.current = null;
441
+ e.currentTarget.releasePointerCapture?.(e.pointerId);
442
+ const viewport = typeof window !== "undefined" ? window.innerHeight : 800;
443
+ const heights = snapPoints.map((p) => resolveSnapPx(p, viewport));
444
+ const liveHeight = dragHeight ?? heights[currentSnap] ?? 0;
445
+ setDragHeight(null);
446
+ if (dragToDismiss && liveHeight < (heights[0] ?? 0) - 60) {
447
+ setOpen(false);
448
+ return;
449
+ }
450
+ let bestIdx = 0;
451
+ let bestDist = Number.POSITIVE_INFINITY;
452
+ heights.forEach((h, i) => {
453
+ const d = Math.abs(h - liveHeight);
454
+ if (d < bestDist) {
455
+ bestDist = d;
456
+ bestIdx = i;
457
+ }
458
+ });
459
+ setCurrentSnap(bestIdx);
460
+ };
461
+ const handleKeyDown = (e) => {
462
+ if (e.key === "ArrowUp" && currentSnap < snapPoints.length - 1) {
463
+ e.preventDefault();
464
+ setCurrentSnap(currentSnap + 1);
465
+ } else if (e.key === "ArrowDown") {
466
+ e.preventDefault();
467
+ if (currentSnap > 0) setCurrentSnap(currentSnap - 1);
468
+ else if (dragToDismiss) setOpen(false);
469
+ }
470
+ };
471
+ if (!open) return null;
472
+ const heightStyle = (() => {
473
+ if (dragHeight != null) return `${dragHeight}px`;
474
+ const point = snapPoints[currentSnap];
475
+ if (typeof point === "number") return `${point}px`;
476
+ return point ?? "40vh";
477
+ })();
478
+ return /* @__PURE__ */ jsx(BottomSheetContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(ScrollLockProvider, { children: [
479
+ /* @__PURE__ */ jsx(
480
+ Backdrop,
481
+ {
482
+ inline: true,
483
+ onClick: () => {
484
+ if (dismissOnOutsideClick) setOpen(false);
485
+ }
486
+ }
487
+ ),
488
+ /* @__PURE__ */ jsx(FocusScope, { asChild: true, trapped: true, loop: true, children: /* @__PURE__ */ jsx(
489
+ DismissableLayer,
490
+ {
491
+ disableEscape: !dismissOnEscape,
492
+ onEscape: () => setOpen(false),
493
+ disableOutsideClick: true,
494
+ children: /* @__PURE__ */ jsxs(
495
+ "div",
496
+ {
497
+ ref: (el) => {
498
+ sheetRef.current = el;
499
+ if (typeof forwardedRef === "function") forwardedRef(el);
500
+ else if (forwardedRef) forwardedRef.current = el;
501
+ },
502
+ role: "dialog",
503
+ "aria-modal": "true",
504
+ style: {
505
+ height: heightStyle,
506
+ transition: dragHeight == null ? "height 220ms ease-out" : "none"
507
+ },
508
+ className: cn(
509
+ "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-xl border-t border-border bg-card text-card-foreground shadow-2xl outline-none",
510
+ className
511
+ ),
512
+ ...rest,
513
+ children: [
514
+ /* @__PURE__ */ jsx(
515
+ "div",
516
+ {
517
+ role: "separator",
518
+ "aria-orientation": "horizontal",
519
+ "aria-valuenow": currentSnap,
520
+ "aria-valuemin": 0,
521
+ "aria-valuemax": snapPoints.length - 1,
522
+ tabIndex: 0,
523
+ onPointerDown: handlePointerDown,
524
+ onPointerMove: handlePointerMove,
525
+ onPointerUp: handlePointerUp,
526
+ onPointerCancel: handlePointerUp,
527
+ onKeyDown: handleKeyDown,
528
+ className: "flex h-7 cursor-ns-resize items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
529
+ children: /* @__PURE__ */ jsx("span", { className: "h-1 w-10 rounded-full bg-border-strong", "aria-hidden": "true" })
530
+ }
531
+ ),
532
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-4", children })
533
+ ]
534
+ }
535
+ )
536
+ }
537
+ ) })
538
+ ] }) }) });
539
+ });
425
540
 
426
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, Popover, PopoverArrow, PopoverContent, PopoverTrigger };
427
- //# sourceMappingURL=chunk-2VAZKEQD.js.map
428
- //# sourceMappingURL=chunk-2VAZKEQD.js.map
541
+ export { ActionSheet, ActionSheetAction, ActionSheetCancel, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, BottomSheet, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, Popover, PopoverArrow, PopoverContent, PopoverTrigger, useBottomSheet };
542
+ //# sourceMappingURL=chunk-DSA7L7PD.js.map
543
+ //# sourceMappingURL=chunk-DSA7L7PD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/overlays/alertDialog/AlertDialog.tsx","../src/overlays/popover/Popover.tsx","../src/overlays/hoverCard/HoverCard.tsx","../src/overlays/actionSheet/ActionSheet.tsx","../src/overlays/bottomSheet/BottomSheet.tsx"],"names":["AlertDialogContent","AlertDialogAction","AlertDialogCancel","jsx","forwardRef","PopoverTrigger","PopoverContent","createContext","useContext","useRef","useMemo","HoverCardContent","ActionSheetAction","ActionSheetCancel","BottomSheet","jsxs","FocusScope"],"mappings":"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","file":"chunk-DSA7L7PD.js","sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n DialogClose,\n type DialogProps,\n type DialogContentProps,\n} from '../dialog';\n\nexport type AlertDialogProps = Omit<DialogProps, 'role' | 'dismissOnOutsideClick'>;\n\nexport function AlertDialog(props: AlertDialogProps) {\n return <Dialog {...props} role=\"alertdialog\" dismissOnOutsideClick={false} />;\n}\n\nexport const AlertDialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n function AlertDialogContent(props, ref) {\n return <DialogContent ref={ref} {...props} />;\n },\n);\n\nexport interface AlertDialogActionProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n /** Runs before the dialog closes. */\n onAction?: () => void;\n children: ReactNode;\n}\n\nexport const AlertDialogAction = forwardRef<HTMLButtonElement, AlertDialogActionProps>(\n function AlertDialogAction({ onAction, onClick, className, children, ...rest }, ref) {\n return (\n <DialogClose\n ref={ref}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n onAction?.();\n }}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </DialogClose>\n );\n },\n);\n\nexport interface AlertDialogCancelProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const AlertDialogCancel = forwardRef<HTMLButtonElement, AlertDialogCancelProps>(\n function AlertDialogCancel({ className, children, ...rest }, ref) {\n return (\n <DialogClose\n ref={ref}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </DialogClose>\n );\n },\n);\n\ntype AlertDialogComponent = typeof AlertDialog & {\n Trigger: typeof DialogTrigger;\n Content: typeof AlertDialogContent;\n Header: typeof DialogHeader;\n Title: typeof DialogTitle;\n Description: typeof DialogDescription;\n Body: typeof DialogBody;\n Footer: typeof DialogFooter;\n Action: typeof AlertDialogAction;\n Cancel: typeof AlertDialogCancel;\n};\n\n(AlertDialog as AlertDialogComponent).Trigger = DialogTrigger;\n(AlertDialog as AlertDialogComponent).Content = AlertDialogContent;\n(AlertDialog as AlertDialogComponent).Header = DialogHeader;\n(AlertDialog as AlertDialogComponent).Title = DialogTitle;\n(AlertDialog as AlertDialogComponent).Description = DialogDescription;\n(AlertDialog as AlertDialogComponent).Body = DialogBody;\n(AlertDialog as AlertDialogComponent).Footer = DialogFooter;\n(AlertDialog as AlertDialogComponent).Action = AlertDialogAction;\n(AlertDialog as AlertDialogComponent).Cancel = AlertDialogCancel;\n\nexport default AlertDialog as AlertDialogComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n OverlayArrow,\n Portal,\n Slot,\n type AnchoredPositionerProps,\n type OverlayArrowProps,\n} from '../../primitives';\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n placement: AnchoredPositionerProps['placement'];\n offset: number;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext() {\n const ctx = useContext(PopoverContext);\n if (!ctx) throw new Error('Popover.* must be used inside <Popover>');\n return ctx;\n}\n\nexport interface PopoverProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: AnchoredPositionerProps['placement'];\n offset?: number;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Popover({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom',\n offset = 8,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: PopoverProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const ctx = useMemo<PopoverContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n placement,\n offset,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, placement, offset, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <PopoverContext.Provider value={ctx}>{children}</PopoverContext.Provider>;\n}\n\nexport interface PopoverTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = usePopoverContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport interface PopoverContentProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Strip the default chrome (bg / border / padding / shadow / fixed width).\n * Use when the child provides its own container — e.g. wrapping a `Calendar`,\n * `Listbox`, or any pre-styled card. Keeps only structural classes\n * (z-index, animation, outline).\n */\n bare?: boolean;\n children: ReactNode;\n}\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent({ bare, className, children, ...rest }, forwardedRef) {\n const ctx = usePopoverContext();\n if (!ctx.open) return null;\n return (\n <Portal>\n <AnchoredPositioner\n anchor={ctx.triggerRef.current}\n placement={ctx.placement}\n offset={ctx.offset}\n >\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }}\n disableOutsideClick={!ctx.dismissOnOutsideClick}\n onOutsidePointerDown={(e) => {\n if (ctx.triggerRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n data-state=\"open\"\n className={cn(\n 'z-50 outline-none animate-in fade-in-0 zoom-in-95',\n !bare &&\n 'w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\nexport function PopoverArrow({ className, ...rest }: OverlayArrowProps) {\n return <OverlayArrow className={cn('text-popover', className)} {...rest} />;\n}\n\ntype PopoverComponent = typeof Popover & {\n Trigger: typeof PopoverTrigger;\n Content: typeof PopoverContent;\n Arrow: typeof PopoverArrow;\n};\n\n(Popover as PopoverComponent).Trigger = PopoverTrigger;\n(Popover as PopoverComponent).Content = PopoverContent;\n(Popover as PopoverComponent).Arrow = PopoverArrow;\n\nexport default Popover as PopoverComponent;\n","import {\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n OverlayArrow,\n Portal,\n type AnchoredPositionerProps,\n type OverlayArrowProps,\n} from '../../primitives';\n\ninterface HoverCardContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n show: () => void;\n hide: () => void;\n cancelHide: () => void;\n placement: AnchoredPositionerProps['placement'];\n offset: number;\n}\n\nconst HoverCardContext = createContext<HoverCardContextValue | null>(null);\n\nfunction useHoverCardContext() {\n const ctx = useContext(HoverCardContext);\n if (!ctx) throw new Error('HoverCard.* must be used inside <HoverCard>');\n return ctx;\n}\n\nexport interface HoverCardProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n placement?: AnchoredPositionerProps['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function HoverCard({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n placement = 'bottom',\n offset = 8,\n children,\n}: HoverCardProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const openTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = useCallback(() => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n openTimer.current = null;\n closeTimer.current = null;\n }, []);\n\n const show = useCallback(() => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n }, [clear, openDelay, setOpen]);\n\n const hide = useCallback(() => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n }, [clear, closeDelay, setOpen]);\n\n const cancelHide = useCallback(() => {\n if (closeTimer.current) {\n clearTimeout(closeTimer.current);\n closeTimer.current = null;\n }\n }, []);\n\n const ctx = useMemo<HoverCardContextValue>(\n () => ({ open, setOpen, triggerRef, show, hide, cancelHide, placement, offset }),\n [open, setOpen, show, hide, cancelHide, placement, offset],\n );\n\n return <HoverCardContext.Provider value={ctx}>{children}</HoverCardContext.Provider>;\n}\n\nexport interface HoverCardTriggerProps {\n asChild?: boolean;\n children: ReactElement;\n}\n\nexport function HoverCardTrigger({ children }: HoverCardTriggerProps) {\n const ctx = useHoverCardContext();\n if (!isValidElement(children)) return children;\n const trigger = children as ReactElement<{\n ref?: Ref<HTMLElement>;\n onPointerEnter?: (e: React.PointerEvent) => void;\n onPointerLeave?: (e: React.PointerEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n }> & { ref?: Ref<HTMLElement> };\n\n return cloneElement(trigger, {\n ref: composeRefs((node: HTMLElement | null) => {\n ctx.triggerRef.current = node;\n }, trigger.ref),\n onPointerEnter: (e: React.PointerEvent) => {\n trigger.props.onPointerEnter?.(e);\n ctx.show();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n trigger.props.onPointerLeave?.(e);\n ctx.hide();\n },\n onFocus: (e: React.FocusEvent) => {\n trigger.props.onFocus?.(e);\n ctx.show();\n },\n onBlur: (e: React.FocusEvent) => {\n trigger.props.onBlur?.(e);\n ctx.hide();\n },\n });\n}\n\nexport interface HoverCardContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const HoverCardContent = forwardRef<HTMLDivElement, HoverCardContentProps>(\n function HoverCardContent({ className, children, onPointerEnter, onPointerLeave, ...rest }, forwardedRef) {\n const ctx = useHoverCardContext();\n if (!ctx.open) return null;\n return (\n <Portal>\n <AnchoredPositioner\n anchor={ctx.triggerRef.current}\n placement={ctx.placement}\n offset={ctx.offset}\n >\n <div\n ref={forwardedRef}\n data-state=\"open\"\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n ctx.cancelHide();\n }}\n onPointerLeave={(e) => {\n onPointerLeave?.(e);\n ctx.hide();\n }}\n className={cn(\n 'z-50 w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none animate-in fade-in-0 zoom-in-95',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\nexport function HoverCardArrow({ className, ...rest }: OverlayArrowProps) {\n return <OverlayArrow className={cn('text-popover', className)} {...rest} />;\n}\n\ntype HoverCardComponent = typeof HoverCard & {\n Trigger: typeof HoverCardTrigger;\n Content: typeof HoverCardContent;\n Arrow: typeof HoverCardArrow;\n};\n\n(HoverCard as HoverCardComponent).Trigger = HoverCardTrigger;\n(HoverCard as HoverCardComponent).Content = HoverCardContent;\n(HoverCard as HoverCardComponent).Arrow = HoverCardArrow;\n\nexport default HoverCard as HoverCardComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerTitle } from '../drawer';\n\ninterface ActionSheetContextValue {\n setOpen: (open: boolean) => void;\n}\n\nconst ActionSheetContext = createContext<ActionSheetContextValue | null>(null);\n\nfunction useActionSheetContext() {\n const ctx = useContext(ActionSheetContext);\n if (!ctx) throw new Error('ActionSheet.* must be used inside <ActionSheet>');\n return ctx;\n}\n\nexport interface ActionSheetProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: ReactNode;\n description?: ReactNode;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * iOS-style action sheet — opinionated bottom Drawer with stacked button rows\n * and a separated Cancel.\n */\nexport function ActionSheet({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n className,\n children,\n}: ActionSheetProps) {\n // We can't intercept `setOpen` from Drawer's context directly, so the\n // ActionSheet wraps Drawer with our own controlled bridge.\n const handleOpenChange = (next: boolean) => onOpenChange?.(next);\n\n const ctx = useMemo<ActionSheetContextValue>(\n () => ({ setOpen: handleOpenChange }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onOpenChange],\n );\n\n return (\n <ActionSheetContext.Provider value={ctx}>\n <Drawer open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange} side=\"bottom\">\n <DrawerContent\n className={cn(\n 'mx-auto max-w-md rounded-t-xl bg-card p-2 text-card-foreground',\n className,\n )}\n >\n {(title || description) && (\n <div className=\"px-3 py-2 text-center\">\n {title && (\n <DrawerTitle className=\"text-sm font-medium text-muted-foreground\">\n {title}\n </DrawerTitle>\n )}\n {description && (\n <DrawerDescription className=\"mt-1 text-xs text-muted-foreground\">\n {description}\n </DrawerDescription>\n )}\n </div>\n )}\n <div className=\"flex flex-col gap-px overflow-hidden rounded-lg bg-border\">\n {children}\n </div>\n </DrawerContent>\n </Drawer>\n </ActionSheetContext.Provider>\n );\n}\n\nexport interface ActionSheetActionProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n onSelect?: () => void;\n destructive?: boolean;\n}\n\nexport const ActionSheetAction = forwardRef<HTMLButtonElement, ActionSheetActionProps>(\n function ActionSheetAction(\n { className, onSelect, destructive, onClick, children, type = 'button', ...rest },\n ref,\n ) {\n const ctx = useActionSheetContext();\n return (\n <button\n ref={ref}\n type={type}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n onSelect?.();\n ctx.setOpen(false);\n }}\n className={cn(\n 'flex h-12 w-full items-center justify-center bg-card px-4 text-base font-medium transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n destructive ? 'text-destructive' : 'text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nexport type ActionSheetCancelProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ActionSheetCancel = forwardRef<HTMLButtonElement, ActionSheetCancelProps>(\n function ActionSheetCancel({ className, onClick, children = 'Cancel', type = 'button', ...rest }, ref) {\n const ctx = useActionSheetContext();\n return (\n <button\n ref={ref}\n type={type}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(false);\n }}\n className={cn(\n 'mt-2 flex h-12 w-full items-center justify-center rounded-lg bg-card text-base font-semibold text-foreground shadow-sm transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\ntype ActionSheetComponent = typeof ActionSheet & {\n Action: typeof ActionSheetAction;\n Cancel: typeof ActionSheetCancel;\n};\n\n(ActionSheet as ActionSheetComponent).Action = ActionSheetAction;\n(ActionSheet as ActionSheetComponent).Cancel = ActionSheetCancel;\n\nexport default ActionSheet as ActionSheetComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider } from '../../primitives';\nimport { Backdrop } from '../backdrop';\n\ntype SnapPoint = number | string;\n\ninterface BottomSheetContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n currentSnap: number;\n setCurrentSnap: (i: number) => void;\n snapPoints: SnapPoint[];\n}\n\nconst BottomSheetContext = createContext<BottomSheetContextValue | null>(null);\n\nexport function useBottomSheet() {\n const ctx = useContext(BottomSheetContext);\n if (!ctx) throw new Error('useBottomSheet must be used inside <BottomSheet>');\n return ctx;\n}\n\nfunction resolveSnapPx(point: SnapPoint, viewport: number): number {\n if (typeof point === 'number') return point;\n const trimmed = point.trim();\n if (trimmed.endsWith('vh')) return (parseFloat(trimmed) / 100) * viewport;\n if (trimmed.endsWith('px')) return parseFloat(trimmed);\n if (trimmed.endsWith('%')) return (parseFloat(trimmed) / 100) * viewport;\n // Fallback: try parseFloat as px.\n const n = parseFloat(trimmed);\n return Number.isFinite(n) ? n : 0;\n}\n\nexport interface BottomSheetProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n snapPoints?: SnapPoint[];\n initialSnap?: number;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n dragToDismiss?: boolean;\n children: ReactNode;\n}\n\n/**\n * Mobile bottom sheet with drag handle + snap points. Pointer-event drag\n * between heights; releasing snaps to the nearest point. Past the lowest\n * snap with `dragToDismiss`, the sheet closes.\n */\nexport const BottomSheet = forwardRef<HTMLDivElement, BottomSheetProps>(function BottomSheet(\n {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n snapPoints = ['40vh', '90vh'],\n initialSnap = 0,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n dragToDismiss = true,\n className,\n children,\n ...rest\n },\n forwardedRef,\n) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [currentSnap, setCurrentSnap] = useState(\n Math.min(initialSnap, snapPoints.length - 1),\n );\n const sheetRef = useRef<HTMLDivElement | null>(null);\n const startYRef = useRef<number | null>(null);\n const startHeightRef = useRef(0);\n const [dragHeight, setDragHeight] = useState<number | null>(null);\n\n // Reset to initialSnap each time we re-open.\n useEffect(() => {\n if (open) setCurrentSnap(Math.min(initialSnap, snapPoints.length - 1));\n }, [open, initialSnap, snapPoints.length]);\n\n const ctx = useMemo<BottomSheetContextValue>(\n () => ({ open, setOpen, currentSnap, setCurrentSnap, snapPoints }),\n [open, setOpen, currentSnap, snapPoints],\n );\n\n const handlePointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n startYRef.current = e.clientY;\n const rect = sheetRef.current?.getBoundingClientRect();\n startHeightRef.current = rect ? rect.height : 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n };\n\n const handlePointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n const dy = e.clientY - startYRef.current;\n setDragHeight(Math.max(0, startHeightRef.current - dy));\n };\n\n const handlePointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n startYRef.current = null;\n (e.currentTarget as HTMLElement).releasePointerCapture?.(e.pointerId);\n\n const viewport = typeof window !== 'undefined' ? window.innerHeight : 800;\n const heights = snapPoints.map((p) => resolveSnapPx(p, viewport));\n const liveHeight = dragHeight ?? heights[currentSnap] ?? 0;\n setDragHeight(null);\n\n // Below lowest snap by 60px → dismiss.\n if (dragToDismiss && liveHeight < (heights[0] ?? 0) - 60) {\n setOpen(false);\n return;\n }\n // Snap to nearest.\n let bestIdx = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n heights.forEach((h, i) => {\n const d = Math.abs(h - liveHeight);\n if (d < bestDist) {\n bestDist = d;\n bestIdx = i;\n }\n });\n setCurrentSnap(bestIdx);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'ArrowUp' && currentSnap < snapPoints.length - 1) {\n e.preventDefault();\n setCurrentSnap(currentSnap + 1);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (currentSnap > 0) setCurrentSnap(currentSnap - 1);\n else if (dragToDismiss) setOpen(false);\n }\n };\n\n if (!open) return null;\n\n const heightStyle: string | number = (() => {\n if (dragHeight != null) return `${dragHeight}px`;\n const point = snapPoints[currentSnap];\n if (typeof point === 'number') return `${point}px`;\n return point ?? '40vh';\n })();\n\n return (\n <BottomSheetContext.Provider value={ctx}>\n <Portal>\n <ScrollLockProvider>\n <Backdrop\n inline\n onClick={() => {\n if (dismissOnOutsideClick) setOpen(false);\n }}\n />\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!dismissOnEscape}\n onEscape={() => setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={(el) => {\n sheetRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n style={{\n height: heightStyle,\n transition: dragHeight == null ? 'height 220ms ease-out' : 'none',\n }}\n className={cn(\n 'fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-xl border-t border-border bg-card text-card-foreground shadow-2xl outline-none',\n className,\n )}\n {...rest}\n >\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-valuenow={currentSnap}\n aria-valuemin={0}\n aria-valuemax={snapPoints.length - 1}\n tabIndex={0}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onKeyDown={handleKeyDown}\n className=\"flex h-7 cursor-ns-resize items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n >\n <span className=\"h-1 w-10 rounded-full bg-border-strong\" aria-hidden=\"true\" />\n </div>\n <div className=\"flex-1 overflow-y-auto px-4 pb-4\">{children}</div>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n </BottomSheetContext.Provider>\n );\n});\n"]}
@@ -1,13 +1,13 @@
1
- import { useControlled, useClipboard, useEscape, useOutsideClick } from './chunk-4P2TFUVW.js';
2
1
  import { tv as tv$1, dataAttr } from './chunk-BMBIZLO4.js';
2
+ import { useControlled, useClipboard, useEscape, useOutsideClick } from './chunk-4P2TFUVW.js';
3
3
  import { Icon } from './chunk-TDX22OWF.js';
4
4
  import { Slot, RovingFocusGroup, useRovingFocusItem } from './chunk-NC2CBGX2.js';
5
5
  import { composeRefs } from './chunk-DN7WBRIV.js';
6
6
  import { cn } from './chunk-KZ4VFY2T.js';
7
- import { forwardRef, Children, isValidElement, cloneElement, createContext, useContext, useRef, useMemo } from 'react';
7
+ import { forwardRef, Children, isValidElement, cloneElement, createContext, useState, useEffect, useContext, useRef, useMemo } from 'react';
8
8
  import { tv } from 'tailwind-variants';
9
9
  import { jsx, jsxs } from 'react/jsx-runtime';
10
- import { Check, Copy, ChevronDown, X, Plus } from 'lucide-react';
10
+ import { Check, Copy, ChevronDown, X, Plus, ArrowUp } from 'lucide-react';
11
11
 
12
12
  var buttonVariants = tv({
13
13
  base: "inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
@@ -682,7 +682,73 @@ var SpeedDialAction = forwardRef(
682
682
  );
683
683
  SpeedDial.Trigger = SpeedDialTrigger;
684
684
  SpeedDial.Action = SpeedDialAction;
685
+ var POSITION = {
686
+ "bottom-right": "bottom-6 right-6",
687
+ "bottom-left": "bottom-6 left-6",
688
+ "bottom-center": "bottom-6 left-1/2 -translate-x-1/2",
689
+ "top-right": "top-6 right-6",
690
+ "top-left": "top-6 left-6"
691
+ };
692
+ var BackToTopButton = forwardRef(
693
+ function BackToTopButton2({
694
+ threshold = 400,
695
+ scrollContainer,
696
+ position = "bottom-right",
697
+ label,
698
+ "aria-label": ariaLabel = "Back to top",
699
+ className,
700
+ onClick,
701
+ type = "button",
702
+ ...rest
703
+ }, ref) {
704
+ const [visible, setVisible] = useState(false);
705
+ useEffect(() => {
706
+ const el = scrollContainer ?? window;
707
+ const read = () => {
708
+ const y = "scrollY" in el ? el.scrollY : el.scrollTop;
709
+ setVisible(y >= threshold);
710
+ };
711
+ read();
712
+ const target = el;
713
+ target.addEventListener("scroll", read, { passive: true });
714
+ return () => target.removeEventListener("scroll", read);
715
+ }, [threshold, scrollContainer]);
716
+ if (!visible) return null;
717
+ return /* @__PURE__ */ jsxs(
718
+ "button",
719
+ {
720
+ ref,
721
+ type,
722
+ "aria-label": ariaLabel,
723
+ onClick: (e) => {
724
+ onClick?.(e);
725
+ if (e.defaultPrevented) return;
726
+ const reducedMotion = typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
727
+ const target = scrollContainer ?? window;
728
+ if ("scrollTo" in target) {
729
+ target.scrollTo({
730
+ top: 0,
731
+ behavior: reducedMotion ? "auto" : "smooth"
732
+ });
733
+ }
734
+ },
735
+ className: cn(
736
+ "fixed z-40 inline-flex items-center justify-center gap-2 rounded-full bg-card text-card-foreground shadow-lg ring-1 ring-border transition-all hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
737
+ label ? "h-11 px-4 text-sm font-medium" : "h-11 w-11",
738
+ POSITION[position],
739
+ className
740
+ ),
741
+ ...rest,
742
+ children: [
743
+ /* @__PURE__ */ jsx(Icon, { icon: ArrowUp, size: 16 }),
744
+ label
745
+ ]
746
+ }
747
+ );
748
+ }
749
+ );
750
+ BackToTopButton.displayName = "BackToTopButton";
685
751
 
686
- export { Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, overlayButtonVariants, toggleButtonVariants };
687
- //# sourceMappingURL=chunk-NRAJPSEK.js.map
688
- //# sourceMappingURL=chunk-NRAJPSEK.js.map
752
+ export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, overlayButtonVariants, toggleButtonVariants };
753
+ //# sourceMappingURL=chunk-GRJBIGUD.js.map
754
+ //# sourceMappingURL=chunk-GRJBIGUD.js.map