@wow-two-beta/ui 0.0.13 → 0.0.15

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 (137) hide show
  1. package/dist/actions/index.d.ts +1 -0
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +3 -3
  4. package/dist/actions/speedDial/SpeedDial.d.ts +38 -0
  5. package/dist/actions/speedDial/SpeedDial.d.ts.map +1 -0
  6. package/dist/actions/speedDial/index.d.ts +3 -0
  7. package/dist/actions/speedDial/index.d.ts.map +1 -0
  8. package/dist/{chunk-EU6JT5B4.js → chunk-2VAZKEQD.js} +22 -272
  9. package/dist/chunk-2VAZKEQD.js.map +1 -0
  10. package/dist/{chunk-RIW2V3N4.js → chunk-3IN5ULKY.js} +213 -5
  11. package/dist/chunk-3IN5ULKY.js.map +1 -0
  12. package/dist/{chunk-UGHPZ3I7.js → chunk-4ESR253U.js} +331 -5
  13. package/dist/chunk-4ESR253U.js.map +1 -0
  14. package/dist/chunk-ASIHQQDQ.js +27 -0
  15. package/dist/chunk-ASIHQQDQ.js.map +1 -0
  16. package/dist/chunk-FFQENBTW.js +31 -0
  17. package/dist/chunk-FFQENBTW.js.map +1 -0
  18. package/dist/{chunk-A4N52LL6.js → chunk-ILYL6ROC.js} +716 -342
  19. package/dist/chunk-ILYL6ROC.js.map +1 -0
  20. package/dist/{chunk-YMSAS7M7.js → chunk-NC2CBGX2.js} +24 -4
  21. package/dist/chunk-NC2CBGX2.js.map +1 -0
  22. package/dist/{chunk-ULAOIBCP.js → chunk-NRAJPSEK.js} +164 -7
  23. package/dist/chunk-NRAJPSEK.js.map +1 -0
  24. package/dist/chunk-SM2TOB4U.js +641 -0
  25. package/dist/chunk-SM2TOB4U.js.map +1 -0
  26. package/dist/{chunk-PRRVOVUC.js → chunk-W7LQZKTH.js} +766 -42
  27. package/dist/chunk-W7LQZKTH.js.map +1 -0
  28. package/dist/chunk-XHGWBSIR.js +222 -0
  29. package/dist/chunk-XHGWBSIR.js.map +1 -0
  30. package/dist/chunk-ZCA365IX.js +44 -0
  31. package/dist/chunk-ZCA365IX.js.map +1 -0
  32. package/dist/display/carousel/Carousel.d.ts +47 -0
  33. package/dist/display/carousel/Carousel.d.ts.map +1 -0
  34. package/dist/display/carousel/index.d.ts +3 -0
  35. package/dist/display/carousel/index.d.ts.map +1 -0
  36. package/dist/display/dataTable/DataTable.d.ts +34 -0
  37. package/dist/display/dataTable/DataTable.d.ts.map +1 -0
  38. package/dist/display/dataTable/index.d.ts +2 -0
  39. package/dist/display/dataTable/index.d.ts.map +1 -0
  40. package/dist/display/index.d.ts +6 -0
  41. package/dist/display/index.d.ts.map +1 -1
  42. package/dist/display/index.js +4 -3
  43. package/dist/display/list/List.d.ts +23 -0
  44. package/dist/display/list/List.d.ts.map +1 -0
  45. package/dist/display/list/List.variants.d.ts +89 -0
  46. package/dist/display/list/List.variants.d.ts.map +1 -0
  47. package/dist/display/list/index.d.ts +2 -0
  48. package/dist/display/list/index.d.ts.map +1 -0
  49. package/dist/display/table/Table.d.ts +35 -0
  50. package/dist/display/table/Table.d.ts.map +1 -0
  51. package/dist/display/table/index.d.ts +2 -0
  52. package/dist/display/table/index.d.ts.map +1 -0
  53. package/dist/display/timeline/Timeline.d.ts +29 -0
  54. package/dist/display/timeline/Timeline.d.ts.map +1 -0
  55. package/dist/display/timeline/index.d.ts +2 -0
  56. package/dist/display/timeline/index.d.ts.map +1 -0
  57. package/dist/display/tree/Tree.d.ts +30 -0
  58. package/dist/display/tree/Tree.d.ts.map +1 -0
  59. package/dist/display/tree/index.d.ts +2 -0
  60. package/dist/display/tree/index.d.ts.map +1 -0
  61. package/dist/feedback/index.d.ts +2 -0
  62. package/dist/feedback/index.d.ts.map +1 -1
  63. package/dist/feedback/index.js +4 -1
  64. package/dist/feedback/loadingOverlay/LoadingOverlay.d.ts +19 -0
  65. package/dist/feedback/loadingOverlay/LoadingOverlay.d.ts.map +1 -0
  66. package/dist/feedback/loadingOverlay/index.d.ts +2 -0
  67. package/dist/feedback/loadingOverlay/index.d.ts.map +1 -0
  68. package/dist/feedback/toaster/Toaster.d.ts +49 -0
  69. package/dist/feedback/toaster/Toaster.d.ts.map +1 -0
  70. package/dist/feedback/toaster/index.d.ts +2 -0
  71. package/dist/feedback/toaster/index.d.ts.map +1 -0
  72. package/dist/forms/MonthGrid.d.ts +29 -0
  73. package/dist/forms/MonthGrid.d.ts.map +1 -0
  74. package/dist/forms/calendar/Calendar.d.ts.map +1 -1
  75. package/dist/forms/editable/Editable.d.ts +37 -0
  76. package/dist/forms/editable/Editable.d.ts.map +1 -0
  77. package/dist/forms/editable/index.d.ts +3 -0
  78. package/dist/forms/editable/index.d.ts.map +1 -0
  79. package/dist/forms/fileUpload/FileUpload.d.ts +25 -0
  80. package/dist/forms/fileUpload/FileUpload.d.ts.map +1 -0
  81. package/dist/forms/fileUpload/index.d.ts +2 -0
  82. package/dist/forms/fileUpload/index.d.ts.map +1 -0
  83. package/dist/forms/index.d.ts +3 -0
  84. package/dist/forms/index.d.ts.map +1 -1
  85. package/dist/forms/index.js +8 -4
  86. package/dist/forms/multiSelect/MultiSelect.d.ts +4 -5
  87. package/dist/forms/multiSelect/MultiSelect.d.ts.map +1 -1
  88. package/dist/forms/rangeCalendar/RangeCalendar.d.ts.map +1 -1
  89. package/dist/forms/select/Select.d.ts +5 -9
  90. package/dist/forms/select/Select.d.ts.map +1 -1
  91. package/dist/forms/tagsInput/TagsInput.d.ts +26 -0
  92. package/dist/forms/tagsInput/TagsInput.d.ts.map +1 -0
  93. package/dist/forms/tagsInput/index.d.ts +2 -0
  94. package/dist/forms/tagsInput/index.d.ts.map +1 -0
  95. package/dist/index.js +13 -9
  96. package/dist/layout/index.d.ts +1 -0
  97. package/dist/layout/index.d.ts.map +1 -1
  98. package/dist/layout/index.js +3 -1
  99. package/dist/layout/resizablePanels/ResizablePanels.d.ts +27 -0
  100. package/dist/layout/resizablePanels/ResizablePanels.d.ts.map +1 -0
  101. package/dist/layout/resizablePanels/index.d.ts +3 -0
  102. package/dist/layout/resizablePanels/index.d.ts.map +1 -0
  103. package/dist/nav/commandPalette/CommandPalette.d.ts +48 -0
  104. package/dist/nav/commandPalette/CommandPalette.d.ts.map +1 -0
  105. package/dist/nav/commandPalette/index.d.ts +3 -0
  106. package/dist/nav/commandPalette/index.d.ts.map +1 -0
  107. package/dist/nav/index.d.ts +1 -0
  108. package/dist/nav/index.d.ts.map +1 -1
  109. package/dist/nav/index.js +6 -3
  110. package/dist/overlays/OverlayChrome.d.ts +34 -0
  111. package/dist/overlays/OverlayChrome.d.ts.map +1 -0
  112. package/dist/overlays/dialog/Dialog.d.ts +7 -25
  113. package/dist/overlays/dialog/Dialog.d.ts.map +1 -1
  114. package/dist/overlays/dialog/index.d.ts +1 -1
  115. package/dist/overlays/dialog/index.d.ts.map +1 -1
  116. package/dist/overlays/drawer/Drawer.d.ts +7 -21
  117. package/dist/overlays/drawer/Drawer.d.ts.map +1 -1
  118. package/dist/overlays/drawer/index.d.ts +1 -1
  119. package/dist/overlays/drawer/index.d.ts.map +1 -1
  120. package/dist/overlays/index.js +5 -3
  121. package/dist/primitives/announce/Announce.d.ts +13 -0
  122. package/dist/primitives/announce/Announce.d.ts.map +1 -0
  123. package/dist/primitives/announce/index.d.ts +2 -0
  124. package/dist/primitives/announce/index.d.ts.map +1 -0
  125. package/dist/primitives/index.d.ts +1 -0
  126. package/dist/primitives/index.d.ts.map +1 -1
  127. package/dist/primitives/index.js +2 -2
  128. package/package.json +1 -1
  129. package/dist/chunk-A4N52LL6.js.map +0 -1
  130. package/dist/chunk-EU6JT5B4.js.map +0 -1
  131. package/dist/chunk-NKGNOOXJ.js +0 -330
  132. package/dist/chunk-NKGNOOXJ.js.map +0 -1
  133. package/dist/chunk-PRRVOVUC.js.map +0 -1
  134. package/dist/chunk-RIW2V3N4.js.map +0 -1
  135. package/dist/chunk-UGHPZ3I7.js.map +0 -1
  136. package/dist/chunk-ULAOIBCP.js.map +0 -1
  137. package/dist/chunk-YMSAS7M7.js.map +0 -1
@@ -10,4 +10,5 @@ export * from './copyButton';
10
10
  export * from './disclosureButton';
11
11
  export * from './overlayButton';
12
12
  export * from './toolbar';
13
+ export * from './speedDial';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -1,10 +1,10 @@
1
- export { Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, overlayButtonVariants, toggleButtonVariants } from '../chunk-ULAOIBCP.js';
1
+ 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 } from '../chunk-NRAJPSEK.js';
2
2
  import '../chunk-4P2TFUVW.js';
3
- import '../chunk-YMSAS7M7.js';
4
- import '../chunk-KDXJQNB6.js';
5
3
  import '../chunk-BMBIZLO4.js';
6
4
  import '../chunk-TDX22OWF.js';
5
+ import '../chunk-NC2CBGX2.js';
7
6
  import '../chunk-DN7WBRIV.js';
7
+ import '../chunk-KDXJQNB6.js';
8
8
  import '../chunk-KZ4VFY2T.js';
9
9
  import '../chunk-PZ5AY32C.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,38 @@
1
+ import { type ButtonHTMLAttributes, type ReactNode } from 'react';
2
+ import type { FABVariants } from '../fab/FAB.variants';
3
+ export type SpeedDialPosition = NonNullable<FABVariants['position']>;
4
+ export type SpeedDialDirection = 'up' | 'down' | 'left' | 'right';
5
+ export interface SpeedDialProps {
6
+ position?: SpeedDialPosition;
7
+ direction?: SpeedDialDirection;
8
+ open?: boolean;
9
+ defaultOpen?: boolean;
10
+ onOpenChange?: (open: boolean) => void;
11
+ gap?: number;
12
+ className?: string;
13
+ children: ReactNode;
14
+ }
15
+ export declare function SpeedDial({ position, direction, open: openProp, defaultOpen, onOpenChange, gap, className, children, }: SpeedDialProps): import("react/jsx-runtime").JSX.Element;
16
+ export interface SpeedDialTriggerProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
17
+ /** Required accessible label. Default `"Toggle actions"`. */
18
+ 'aria-label'?: string;
19
+ closedIcon?: ReactNode;
20
+ openIcon?: ReactNode;
21
+ variant?: FABVariants['variant'];
22
+ size?: FABVariants['size'];
23
+ }
24
+ export declare const SpeedDialTrigger: import("react").ForwardRefExoticComponent<SpeedDialTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
25
+ export interface SpeedDialActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
26
+ 'aria-label': string;
27
+ icon: ReactNode;
28
+ onSelect?: () => void;
29
+ tooltip?: ReactNode;
30
+ }
31
+ export declare const SpeedDialAction: import("react").ForwardRefExoticComponent<SpeedDialActionProps & import("react").RefAttributes<HTMLButtonElement>>;
32
+ type SpeedDialComponent = typeof SpeedDial & {
33
+ Trigger: typeof SpeedDialTrigger;
34
+ Action: typeof SpeedDialAction;
35
+ };
36
+ declare const _default: SpeedDialComponent;
37
+ export default _default;
38
+ //# sourceMappingURL=SpeedDial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedDial.d.ts","sourceRoot":"","sources":["../../../src/actions/speedDial/SpeedDial.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAiDlE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAyB,EACzB,SAAS,EACT,IAAI,EAAE,QAAQ,EACd,WAAmB,EACnB,YAAY,EACZ,GAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE,cAAc,2CAoDhB;AAED,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,gBAAgB,qHAoC5B,CAAC;AAEF,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,oHA0C3B,CAAC;AAEF,KAAK,kBAAkB,GAAG,OAAO,SAAS,GAAG;IAC3C,OAAO,EAAE,OAAO,gBAAgB,CAAC;IACjC,MAAM,EAAE,OAAO,eAAe,CAAC;CAChC,CAAC;wBAK0B,kBAAkB;AAA9C,wBAA+C"}
@@ -0,0 +1,3 @@
1
+ export { SpeedDial, SpeedDialAction, SpeedDialTrigger, type SpeedDialActionProps, type SpeedDialDirection, type SpeedDialPosition, type SpeedDialProps, type SpeedDialTriggerProps, } from './SpeedDial';
2
+ export { default } from './SpeedDial';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/speedDial/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -1,205 +1,13 @@
1
+ import { DialogContent, DialogClose, OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-XHGWBSIR.js';
1
2
  import { useControlled } from './chunk-4P2TFUVW.js';
2
- import { Portal, Slot, ScrollLockProvider, DismissableLayer, AnchoredPositioner, OverlayArrow } from './chunk-YMSAS7M7.js';
3
+ import { Backdrop } from './chunk-ASIHQQDQ.js';
4
+ import { Slot, Portal, ScrollLockProvider, DismissableLayer, AnchoredPositioner, OverlayArrow } from './chunk-NC2CBGX2.js';
3
5
  import { composeRefs } from './chunk-DN7WBRIV.js';
4
6
  import { cn } from './chunk-KZ4VFY2T.js';
5
- import { forwardRef, createContext, useContext, useRef, useId, useMemo, useCallback, isValidElement, cloneElement } from 'react';
7
+ import { forwardRef, createContext, useCallback, useMemo, useContext, useRef, useId, isValidElement, cloneElement } from 'react';
6
8
  import { jsx, jsxs } from 'react/jsx-runtime';
7
- import { X } from 'lucide-react';
8
9
  import { FocusScope } from '@radix-ui/react-focus-scope';
9
10
 
10
- var Backdrop = forwardRef(function Backdrop2({ open = true, blur, pointerEvents = "auto", inline, className, style, ...rest }, ref) {
11
- if (!open) return null;
12
- const node = /* @__PURE__ */ jsx(
13
- "div",
14
- {
15
- ref,
16
- "data-state": open ? "open" : "closed",
17
- style: { pointerEvents, ...style },
18
- className: cn(
19
- "fixed inset-0 z-50 bg-black/50 animate-in fade-in-0",
20
- blur && "backdrop-blur-sm",
21
- className
22
- ),
23
- ...rest
24
- }
25
- );
26
- return inline ? node : /* @__PURE__ */ jsx(Portal, { children: node });
27
- });
28
- var DialogContext = createContext(null);
29
- function useDialogContext() {
30
- const ctx = useContext(DialogContext);
31
- if (!ctx) throw new Error("Dialog.* must be used inside <Dialog>");
32
- return ctx;
33
- }
34
- function Dialog({
35
- open: openProp,
36
- defaultOpen = false,
37
- onOpenChange,
38
- dismissOnOutsideClick = true,
39
- dismissOnEscape = true,
40
- role = "dialog",
41
- children
42
- }) {
43
- const [open, setOpen] = useControlled({
44
- controlled: openProp,
45
- default: defaultOpen,
46
- onChange: onOpenChange
47
- });
48
- const triggerRef = useRef(null);
49
- const titleId = useId();
50
- const descriptionId = useId();
51
- const ctx = useMemo(
52
- () => ({
53
- open,
54
- setOpen,
55
- triggerRef,
56
- titleId,
57
- descriptionId,
58
- role,
59
- dismissOnOutsideClick,
60
- dismissOnEscape
61
- }),
62
- [open, setOpen, titleId, descriptionId, role, dismissOnOutsideClick, dismissOnEscape]
63
- );
64
- return /* @__PURE__ */ jsx(DialogContext.Provider, { value: ctx, children });
65
- }
66
- var DialogTrigger = forwardRef(
67
- function DialogTrigger2({ asChild, onClick, children, ...rest }, forwardedRef) {
68
- const ctx = useDialogContext();
69
- const Component = asChild ? Slot : "button";
70
- return /* @__PURE__ */ jsx(
71
- Component,
72
- {
73
- ref: composeRefs(forwardedRef, ctx.triggerRef),
74
- type: "button",
75
- "aria-haspopup": ctx.role === "alertdialog" ? "dialog" : "dialog",
76
- "aria-expanded": ctx.open,
77
- "data-state": ctx.open ? "open" : "closed",
78
- onClick: (e) => {
79
- onClick?.(e);
80
- if (e.defaultPrevented) return;
81
- ctx.setOpen(true);
82
- },
83
- ...rest,
84
- children
85
- }
86
- );
87
- }
88
- );
89
- var DialogContent = forwardRef(
90
- function DialogContent2({ hideBackdrop, blur, className, children, ...rest }, forwardedRef) {
91
- const ctx = useDialogContext();
92
- if (!ctx.open) return null;
93
- return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(ScrollLockProvider, { children: [
94
- !hideBackdrop && /* @__PURE__ */ jsx(
95
- Backdrop,
96
- {
97
- inline: true,
98
- blur,
99
- onClick: () => {
100
- if (ctx.dismissOnOutsideClick) ctx.setOpen(false);
101
- }
102
- }
103
- ),
104
- /* @__PURE__ */ jsx("div", { className: "fixed inset-0 z-50 grid place-items-center overflow-y-auto p-4", children: /* @__PURE__ */ jsx(FocusScope, { asChild: true, trapped: true, loop: true, children: /* @__PURE__ */ jsx(
105
- DismissableLayer,
106
- {
107
- disableEscape: !ctx.dismissOnEscape,
108
- onEscape: () => ctx.setOpen(false),
109
- disableOutsideClick: true,
110
- children: /* @__PURE__ */ jsx(
111
- "div",
112
- {
113
- ref: forwardedRef,
114
- role: ctx.role,
115
- "aria-modal": "true",
116
- "aria-labelledby": ctx.titleId,
117
- "aria-describedby": ctx.descriptionId,
118
- "data-state": "open",
119
- className: cn(
120
- "relative w-full max-w-lg rounded-lg border border-border bg-background p-6 shadow-lg outline-none animate-in fade-in-0 zoom-in-95",
121
- className
122
- ),
123
- ...rest,
124
- children
125
- }
126
- )
127
- }
128
- ) }) })
129
- ] }) });
130
- }
131
- );
132
- function DialogHeader({ className, children, ...rest }) {
133
- return /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex flex-col gap-1.5", className), ...rest, children });
134
- }
135
- function DialogTitle({ className, children, ...rest }) {
136
- const ctx = useDialogContext();
137
- return /* @__PURE__ */ jsx(
138
- "h2",
139
- {
140
- id: ctx.titleId,
141
- className: cn("text-lg font-semibold leading-none text-foreground", className),
142
- ...rest,
143
- children
144
- }
145
- );
146
- }
147
- function DialogDescription({
148
- className,
149
- children,
150
- ...rest
151
- }) {
152
- const ctx = useDialogContext();
153
- return /* @__PURE__ */ jsx("p", { id: ctx.descriptionId, className: cn("text-sm text-muted-foreground", className), ...rest, children });
154
- }
155
- function DialogBody({ className, children, ...rest }) {
156
- return /* @__PURE__ */ jsx("div", { className: cn("text-sm text-foreground", className), ...rest, children });
157
- }
158
- function DialogFooter({ className, children, ...rest }) {
159
- return /* @__PURE__ */ jsx(
160
- "div",
161
- {
162
- className: cn(
163
- "mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
164
- className
165
- ),
166
- ...rest,
167
- children
168
- }
169
- );
170
- }
171
- var DialogClose = forwardRef(function DialogClose2({ asChild, onClick, className, children, ...rest }, forwardedRef) {
172
- const ctx = useDialogContext();
173
- const Component = asChild ? Slot : "button";
174
- return /* @__PURE__ */ jsx(
175
- Component,
176
- {
177
- ref: forwardedRef,
178
- type: "button",
179
- "aria-label": children ? void 0 : "Close",
180
- onClick: (e) => {
181
- onClick?.(e);
182
- if (e.defaultPrevented) return;
183
- ctx.setOpen(false);
184
- requestAnimationFrame(() => ctx.triggerRef.current?.focus());
185
- },
186
- className: asChild ? className : cn(
187
- "absolute right-4 top-4 grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
188
- className
189
- ),
190
- ...rest,
191
- children: children ?? /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
192
- }
193
- );
194
- });
195
- Dialog.Trigger = DialogTrigger;
196
- Dialog.Content = DialogContent;
197
- Dialog.Header = DialogHeader;
198
- Dialog.Title = DialogTitle;
199
- Dialog.Description = DialogDescription;
200
- Dialog.Body = DialogBody;
201
- Dialog.Footer = DialogFooter;
202
- Dialog.Close = DialogClose;
203
11
  function AlertDialog(props) {
204
12
  return /* @__PURE__ */ jsx(Dialog, { ...props, role: "alertdialog", dismissOnOutsideClick: false });
205
13
  }
@@ -324,6 +132,14 @@ var SIDE_CLASSES = {
324
132
  var DrawerContent = forwardRef(
325
133
  function DrawerContent2({ hideBackdrop, blur, className, children, ...rest }, forwardedRef) {
326
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
+ );
327
143
  if (!ctx.open) return null;
328
144
  return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(ScrollLockProvider, { children: [
329
145
  !hideBackdrop && /* @__PURE__ */ jsx(
@@ -358,7 +174,7 @@ var DrawerContent = forwardRef(
358
174
  className
359
175
  ),
360
176
  ...rest,
361
- children
177
+ children: /* @__PURE__ */ jsx(OverlayChromeProvider, { value: chromeCtx, children })
362
178
  }
363
179
  )
364
180
  }
@@ -366,78 +182,12 @@ var DrawerContent = forwardRef(
366
182
  ] }) });
367
183
  }
368
184
  );
369
- function DrawerHeader({ className, children, ...rest }) {
370
- return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-1.5", className), ...rest, children });
371
- }
372
- function DrawerTitle({
373
- className,
374
- children,
375
- ...rest
376
- }) {
377
- const ctx = useDrawerContext();
378
- return /* @__PURE__ */ jsx(
379
- "h2",
380
- {
381
- id: ctx.titleId,
382
- className: cn("text-lg font-semibold leading-none text-foreground", className),
383
- ...rest,
384
- children
385
- }
386
- );
387
- }
388
- function DrawerDescription({
389
- className,
390
- children,
391
- ...rest
392
- }) {
393
- const ctx = useDrawerContext();
394
- return /* @__PURE__ */ jsx("p", { id: ctx.descriptionId, className: cn("text-sm text-muted-foreground", className), ...rest, children });
395
- }
396
- function DrawerBody({
397
- className,
398
- children,
399
- ...rest
400
- }) {
401
- return /* @__PURE__ */ jsx("div", { className: cn("flex-1 overflow-y-auto text-sm text-foreground", className), ...rest, children });
402
- }
403
- function DrawerFooter({
404
- className,
405
- children,
406
- ...rest
407
- }) {
408
- return /* @__PURE__ */ jsx(
409
- "div",
410
- {
411
- className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
412
- ...rest,
413
- children
414
- }
415
- );
416
- }
417
- var DrawerClose = forwardRef(function DrawerClose2({ asChild, onClick, className, children, ...rest }, forwardedRef) {
418
- const ctx = useDrawerContext();
419
- const Component = asChild ? Slot : "button";
420
- return /* @__PURE__ */ jsx(
421
- Component,
422
- {
423
- ref: forwardedRef,
424
- type: "button",
425
- "aria-label": children ? void 0 : "Close",
426
- onClick: (e) => {
427
- onClick?.(e);
428
- if (e.defaultPrevented) return;
429
- ctx.setOpen(false);
430
- requestAnimationFrame(() => ctx.triggerRef.current?.focus());
431
- },
432
- className: asChild ? className : cn(
433
- "absolute right-4 top-4 grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
434
- className
435
- ),
436
- ...rest,
437
- children: children ?? /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
438
- }
439
- );
440
- });
185
+ var DrawerHeader = OverlayHeader;
186
+ var DrawerTitle = OverlayTitle;
187
+ var DrawerDescription = OverlayDescription;
188
+ var DrawerBody = OverlayBody;
189
+ var DrawerFooter = OverlayFooter;
190
+ var DrawerClose = OverlayCloseButton;
441
191
  Drawer.Trigger = DrawerTrigger;
442
192
  Drawer.Content = DrawerContent;
443
193
  Drawer.Header = DrawerHeader;
@@ -673,6 +423,6 @@ HoverCard.Trigger = HoverCardTrigger;
673
423
  HoverCard.Content = HoverCardContent;
674
424
  HoverCard.Arrow = HoverCardArrow;
675
425
 
676
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, Backdrop, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, Popover, PopoverArrow, PopoverContent, PopoverTrigger };
677
- //# sourceMappingURL=chunk-EU6JT5B4.js.map
678
- //# sourceMappingURL=chunk-EU6JT5B4.js.map
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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/overlays/alertDialog/AlertDialog.tsx","../src/overlays/drawer/Drawer.tsx","../src/overlays/popover/Popover.tsx","../src/overlays/hoverCard/HoverCard.tsx"],"names":["AlertDialogContent","AlertDialogAction","AlertDialogCancel","jsx","forwardRef","DrawerTrigger","DrawerContent","createContext","useContext","useRef","useMemo","PopoverTrigger","PopoverContent","FocusScope","useCallback","HoverCardContent"],"mappings":"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","file":"chunk-2VAZKEQD.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 useCallback,\n useContext,\n useId,\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 { DismissableLayer, Portal, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\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(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nconst SIDE_CLASSES: Record<DrawerSide, string> = {\n right:\n 'inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right',\n left: 'inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left',\n top: 'inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom',\n};\n\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement> {\n hideBackdrop?: boolean;\n blur?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n { hideBackdrop, blur, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n if (!ctx.open) return null;\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n inline\n blur={blur}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n data-side={ctx.side}\n className={cn(\n 'fixed z-50 flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none',\n SIDE_CLASSES[ctx.side],\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\ntype DrawerComponent = typeof Drawer & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n Header: typeof DrawerHeader;\n Title: typeof DrawerTitle;\n Description: typeof DrawerDescription;\n Body: typeof DrawerBody;\n Footer: typeof DrawerFooter;\n Close: typeof DrawerClose;\n};\n\n(Drawer as DrawerComponent).Trigger = DrawerTrigger;\n(Drawer as DrawerComponent).Content = DrawerContent;\n(Drawer as DrawerComponent).Header = DrawerHeader;\n(Drawer as DrawerComponent).Title = DrawerTitle;\n(Drawer as DrawerComponent).Description = DrawerDescription;\n(Drawer as DrawerComponent).Body = DrawerBody;\n(Drawer as DrawerComponent).Footer = DrawerFooter;\n(Drawer as DrawerComponent).Close = DrawerClose;\n\nexport default Drawer as DrawerComponent;\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"]}