@spark-ui/components 10.8.2 → 10.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{DialogTrigger-5SI4dvpK.d.mts → DialogTrigger-woU7vsJi.d.mts} +9 -9
  3. package/dist/{DialogTrigger-5SI4dvpK.d.ts → DialogTrigger-woU7vsJi.d.ts} +9 -9
  4. package/dist/accordion/index.d.mts +13 -25
  5. package/dist/accordion/index.d.ts +13 -25
  6. package/dist/accordion/index.js +114 -250
  7. package/dist/accordion/index.js.map +1 -1
  8. package/dist/accordion/index.mjs +92 -134
  9. package/dist/accordion/index.mjs.map +1 -1
  10. package/dist/alert-dialog/index.d.mts +1 -1
  11. package/dist/alert-dialog/index.d.ts +1 -1
  12. package/dist/alert-dialog/index.js +60 -46
  13. package/dist/alert-dialog/index.js.map +1 -1
  14. package/dist/alert-dialog/index.mjs +1 -1
  15. package/dist/{chunk-T26TYEWV.mjs → chunk-I7UIKCZK.mjs} +56 -42
  16. package/dist/chunk-I7UIKCZK.mjs.map +1 -0
  17. package/dist/collapsible/index.d.mts +18 -35
  18. package/dist/collapsible/index.d.ts +18 -35
  19. package/dist/collapsible/index.js +47 -78
  20. package/dist/collapsible/index.js.map +1 -1
  21. package/dist/collapsible/index.mjs +73 -4
  22. package/dist/collapsible/index.mjs.map +1 -1
  23. package/dist/dialog/index.d.mts +2 -2
  24. package/dist/dialog/index.d.ts +2 -2
  25. package/dist/dialog/index.js +52 -38
  26. package/dist/dialog/index.js.map +1 -1
  27. package/dist/dialog/index.mjs +1 -1
  28. package/dist/drawer/index.d.mts +6 -2
  29. package/dist/drawer/index.d.ts +6 -2
  30. package/dist/drawer/index.js +105 -59
  31. package/dist/drawer/index.js.map +1 -1
  32. package/dist/drawer/index.mjs +81 -35
  33. package/dist/drawer/index.mjs.map +1 -1
  34. package/dist/scrolling-list/index.d.mts +2 -2
  35. package/dist/scrolling-list/index.d.ts +2 -2
  36. package/dist/scrolling-list/index.js +32 -68
  37. package/dist/scrolling-list/index.js.map +1 -1
  38. package/dist/scrolling-list/index.mjs +7 -43
  39. package/dist/scrolling-list/index.mjs.map +1 -1
  40. package/dist/spinner/index.d.mts +1 -1
  41. package/dist/spinner/index.d.ts +1 -1
  42. package/package.json +6 -7
  43. package/dist/chunk-3LEFXZNI.mjs +0 -97
  44. package/dist/chunk-3LEFXZNI.mjs.map +0 -1
  45. package/dist/chunk-T26TYEWV.mjs.map +0 -1
@@ -13,14 +13,18 @@ import { useEffect, useRef } from "react";
13
13
  import { createContext, useContext, useState } from "react";
14
14
  import { jsx } from "react/jsx-runtime";
15
15
  var DialogContext = createContext(null);
16
- var DialogProvider = ({ children: childrenProp }) => {
16
+ var DialogProvider = ({
17
+ children: childrenProp,
18
+ withFade = false
19
+ }) => {
17
20
  const [isFullScreen, setIsFullScreen] = useState(false);
18
21
  return /* @__PURE__ */ jsx(
19
22
  DialogContext.Provider,
20
23
  {
21
24
  value: {
22
25
  isFullScreen,
23
- setIsFullScreen
26
+ setIsFullScreen,
27
+ withFade
24
28
  },
25
29
  children: childrenProp
26
30
  }
@@ -36,7 +40,7 @@ var useDialog = () => {
36
40
 
37
41
  // src/dialog/Dialog.tsx
38
42
  import { jsx as jsx2 } from "react/jsx-runtime";
39
- var Dialog = ({ children, ...rest }) => {
43
+ var Dialog = ({ children, withFade = false, ...rest }) => {
40
44
  const open = rest.open;
41
45
  const activeElementRef = useRef(null);
42
46
  function handleActiveElementFocus() {
@@ -51,42 +55,52 @@ var Dialog = ({ children, ...rest }) => {
51
55
  }
52
56
  }
53
57
  useEffect(handleActiveElementFocus, [open]);
54
- return /* @__PURE__ */ jsx2(DialogProvider, { children: /* @__PURE__ */ jsx2(RadixDialog.Root, { ...rest, children }) });
58
+ return /* @__PURE__ */ jsx2(DialogProvider, { withFade, children: /* @__PURE__ */ jsx2(RadixDialog.Root, { ...rest, children }) });
55
59
  };
56
60
  Dialog.displayName = "Dialog.Root";
57
61
 
58
- // src/dialog/DialogBody.styles.ts
59
- import { cva } from "class-variance-authority";
60
- var dialogBodyStyles = cva(
61
- ["grow", "overflow-y-auto", "outline-hidden", "focus-visible:u-outline"],
62
- {
63
- variants: {
64
- inset: {
65
- true: "",
66
- false: "px-xl py-lg"
67
- }
68
- }
69
- }
70
- );
71
-
72
62
  // src/dialog/DialogBody.tsx
63
+ import { useMergeRefs } from "@spark-ui/hooks/use-merge-refs";
64
+ import { useScrollOverflow } from "@spark-ui/hooks/use-scroll-overflow";
65
+ import { cx } from "class-variance-authority";
66
+ import { useRef as useRef2 } from "react";
73
67
  import { jsx as jsx3 } from "react/jsx-runtime";
74
68
  var Body = ({
75
69
  children,
76
70
  className,
77
71
  inset = false,
78
- ref,
72
+ ref: forwardedRef,
79
73
  ...rest
80
- }) => /* @__PURE__ */ jsx3(
81
- "div",
82
- {
83
- "data-spark-component": "dialog-body",
84
- ref,
85
- className: dialogBodyStyles({ inset, className }),
86
- ...rest,
87
- children
88
- }
89
- );
74
+ }) => {
75
+ const scrollAreaRef = useRef2(null);
76
+ const ref = useMergeRefs(forwardedRef, scrollAreaRef);
77
+ const { withFade } = useDialog();
78
+ const overflow = useScrollOverflow(scrollAreaRef);
79
+ return /* @__PURE__ */ jsx3(
80
+ "div",
81
+ {
82
+ "data-spark-component": "dialog-body",
83
+ ref,
84
+ className: cx(
85
+ "focus-visible:u-outline relative grow overflow-y-auto outline-hidden",
86
+ "transition-all duration-300",
87
+ {
88
+ ["px-xl py-lg"]: !inset
89
+ },
90
+ className
91
+ ),
92
+ style: {
93
+ ...withFade && {
94
+ maskImage: "linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",
95
+ maskSize: `100% calc(100% + ${overflow.top ? "0px" : "44px"} + ${overflow.bottom ? "0px" : "44px"})`,
96
+ maskPosition: `0 ${overflow.top ? "0px" : "-44px"}`
97
+ }
98
+ },
99
+ ...rest,
100
+ children
101
+ }
102
+ );
103
+ };
90
104
  Body.displayName = "Dialog.Body";
91
105
 
92
106
  // src/dialog/DialogClose.tsx
@@ -97,7 +111,7 @@ Close.displayName = "Dialog.Close";
97
111
 
98
112
  // src/dialog/DialogCloseButton.tsx
99
113
  import { Close as CloseSVG } from "@spark-ui/icons/Close";
100
- import { cx } from "class-variance-authority";
114
+ import { cx as cx2 } from "class-variance-authority";
101
115
  import { jsx as jsx5 } from "react/jsx-runtime";
102
116
  var Root = ({
103
117
  "aria-label": ariaLabel,
@@ -115,7 +129,7 @@ var Root = ({
115
129
  "data-spark-component": "dialog-close-button",
116
130
  "data-part": "close",
117
131
  ref,
118
- className: cx(["absolute", "top-md", "right-xl"], className),
132
+ className: cx2(["absolute", "top-md", "right-xl"], className),
119
133
  asChild: true,
120
134
  ...rest,
121
135
  children: /* @__PURE__ */ jsx5(IconButton, { intent, size, design, "aria-label": ariaLabel, children: /* @__PURE__ */ jsx5(Icon, { children }) })
@@ -132,8 +146,8 @@ import { Dialog as RadixDialog3 } from "radix-ui";
132
146
  import { useEffect as useEffect2 } from "react";
133
147
 
134
148
  // src/dialog/DialogContent.styles.tsx
135
- import { cva as cva2 } from "class-variance-authority";
136
- var dialogContentStyles = cva2(
149
+ import { cva } from "class-variance-authority";
150
+ var dialogContentStyles = cva(
137
151
  [
138
152
  "z-modal flex flex-col bg-surface group",
139
153
  "focus-visible:outline-hidden focus-visible:u-outline",
@@ -224,14 +238,14 @@ var Description = (props) => /* @__PURE__ */ jsx7(RadixDialog4.Description, { "d
224
238
  Description.displayName = "Dialog.Description";
225
239
 
226
240
  // src/dialog/DialogFooter.tsx
227
- import { cx as cx2 } from "class-variance-authority";
241
+ import { cx as cx3 } from "class-variance-authority";
228
242
  import { jsx as jsx8 } from "react/jsx-runtime";
229
243
  var Footer = ({ children, className, ref, ...rest }) => /* @__PURE__ */ jsx8(
230
244
  "footer",
231
245
  {
232
246
  "data-spark-component": "dialog-footer",
233
247
  ref,
234
- className: cx2(className, ["px-xl", "py-lg"]),
248
+ className: cx3(className, ["px-xl", "py-lg"]),
235
249
  ...rest,
236
250
  children
237
251
  }
@@ -239,14 +253,14 @@ var Footer = ({ children, className, ref, ...rest }) => /* @__PURE__ */ jsx8(
239
253
  Footer.displayName = "Dialog.Footer";
240
254
 
241
255
  // src/dialog/DialogHeader.tsx
242
- import { cx as cx3 } from "class-variance-authority";
256
+ import { cx as cx4 } from "class-variance-authority";
243
257
  import { jsx as jsx9 } from "react/jsx-runtime";
244
258
  var Header = ({ children, className, ref, ...rest }) => /* @__PURE__ */ jsx9(
245
259
  "header",
246
260
  {
247
261
  "data-spark-component": "dialog-header",
248
262
  ref,
249
- className: cx3(className, ["px-xl", "py-lg"]),
263
+ className: cx4(className, ["px-xl", "py-lg"]),
250
264
  ...rest,
251
265
  children
252
266
  }
@@ -254,7 +268,7 @@ var Header = ({ children, className, ref, ...rest }) => /* @__PURE__ */ jsx9(
254
268
  Header.displayName = "Dialog.Header";
255
269
 
256
270
  // src/dialog/DialogOverlay.tsx
257
- import { cx as cx4 } from "class-variance-authority";
271
+ import { cx as cx5 } from "class-variance-authority";
258
272
  import { Dialog as RadixDialog5 } from "radix-ui";
259
273
  import { jsx as jsx10 } from "react/jsx-runtime";
260
274
  var Overlay = ({ className, ref, ...rest }) => {
@@ -264,7 +278,7 @@ var Overlay = ({ className, ref, ...rest }) => {
264
278
  {
265
279
  "data-spark-component": "dialog-overlay",
266
280
  ref,
267
- className: cx4(
281
+ className: cx5(
268
282
  isFullScreen ? "hidden" : "fixed",
269
283
  ["top-0", "left-0", "w-screen", "h-screen", "z-overlay"],
270
284
  ["bg-overlay/dim-1"],
@@ -285,7 +299,7 @@ var Portal = ({ children, ...rest }) => /* @__PURE__ */ jsx11(RadixDialog6.Porta
285
299
  Portal.displayName = "Dialog.Portal";
286
300
 
287
301
  // src/dialog/DialogTitle.tsx
288
- import { cx as cx5 } from "class-variance-authority";
302
+ import { cx as cx6 } from "class-variance-authority";
289
303
  import { Dialog as RadixDialog7 } from "radix-ui";
290
304
  import { jsx as jsx12 } from "react/jsx-runtime";
291
305
  var Title = ({ className, ref, ...others }) => {
@@ -294,7 +308,7 @@ var Title = ({ className, ref, ...others }) => {
294
308
  {
295
309
  "data-spark-component": "dialog-title",
296
310
  ref,
297
- className: cx5(
311
+ className: cx6(
298
312
  "text-headline-1 text-on-surface",
299
313
  "group-has-data-[part=close]:pr-3xl",
300
314
  className
@@ -341,4 +355,4 @@ Description.displayName = "Dialog.Description";
341
355
  export {
342
356
  Dialog2 as Dialog
343
357
  };
344
- //# sourceMappingURL=chunk-T26TYEWV.mjs.map
358
+ //# sourceMappingURL=chunk-I7UIKCZK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/dialog/Dialog.tsx","../src/dialog/DialogContext.tsx","../src/dialog/DialogBody.tsx","../src/dialog/DialogClose.tsx","../src/dialog/DialogCloseButton.tsx","../src/dialog/DialogContent.tsx","../src/dialog/DialogContent.styles.tsx","../src/dialog/DialogDescription.tsx","../src/dialog/DialogFooter.tsx","../src/dialog/DialogHeader.tsx","../src/dialog/DialogOverlay.tsx","../src/dialog/DialogPortal.tsx","../src/dialog/DialogTitle.tsx","../src/dialog/DialogTrigger.tsx","../src/dialog/index.ts"],"sourcesContent":["import { Dialog as RadixDialog } from 'radix-ui'\nimport { type ReactElement, useEffect, useRef } from 'react'\n\nimport { DialogProvider } from './DialogContext'\n\nexport interface DialogProps {\n /**\n * Children of the component.\n */\n children?: RadixDialog.DialogProps['children']\n /**\n * Specifies if the dialog is open or not.\n */\n open?: RadixDialog.DialogProps['open']\n /**\n * Default open state.\n */\n defaultOpen?: RadixDialog.DialogProps['defaultOpen']\n /**\n * Handler executen on every dialog open state change.\n */\n onOpenChange?: RadixDialog.DialogProps['onOpenChange']\n /**\n * Specifies if the dialog is a modal.\n */\n modal?: RadixDialog.DialogProps['modal']\n /**\n * Specifies if the dialog should have a fade animation on its body (in case it is scrollable).\n */\n withFade?: boolean\n}\n\nexport const Dialog = ({ children, withFade = false, ...rest }: DialogProps): ReactElement => {\n const open = rest.open\n const activeElementRef = useRef<Element>(null)\n\n /**\n * This function captures the active element when the Dialog is opened\n * and sets focus back to it when the Dialog is closed.\n */\n function handleActiveElementFocus() {\n if (open && document.activeElement) {\n activeElementRef.current = document.activeElement\n }\n\n if (!open) {\n setTimeout(() => {\n if (!(activeElementRef.current instanceof HTMLElement)) return\n activeElementRef.current.focus()\n }, 0)\n }\n }\n\n useEffect(handleActiveElementFocus, [open])\n\n return (\n <DialogProvider withFade={withFade}>\n <RadixDialog.Root {...rest}>{children}</RadixDialog.Root>\n </DialogProvider>\n )\n}\n\nDialog.displayName = 'Dialog.Root'\n","import { createContext, type ReactNode, useContext, useState } from 'react'\n\nexport interface DialogContextState {\n isFullScreen: boolean\n setIsFullScreen: (value: boolean) => void\n withFade: boolean\n}\n\nconst DialogContext = createContext<DialogContextState | null>(null)\n\nexport const DialogProvider = ({\n children: childrenProp,\n withFade = false,\n}: {\n children: ReactNode\n withFade?: boolean\n}) => {\n const [isFullScreen, setIsFullScreen] = useState(false)\n\n return (\n <DialogContext.Provider\n value={{\n isFullScreen,\n setIsFullScreen,\n withFade,\n }}\n >\n {childrenProp}\n </DialogContext.Provider>\n )\n}\n\nexport const useDialog = () => {\n const context = useContext(DialogContext)\n\n if (!context) {\n throw Error('useDialog must be used within a Dialog provider')\n }\n\n return context\n}\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { useScrollOverflow } from '@spark-ui/hooks/use-scroll-overflow'\nimport { cx } from 'class-variance-authority'\nimport { type ReactElement, type ReactNode, Ref, useRef } from 'react'\n\nimport { useDialog } from './DialogContext'\n\nexport interface BodyProps {\n children: ReactNode\n className?: string\n tabIndex?: number\n ref?: Ref<HTMLDivElement>\n inset?: boolean\n}\n\nexport const Body = ({\n children,\n className,\n inset = false,\n ref: forwardedRef,\n ...rest\n}: BodyProps): ReactElement => {\n const scrollAreaRef = useRef<HTMLDivElement>(null)\n const ref = useMergeRefs(forwardedRef, scrollAreaRef)\n\n const { withFade } = useDialog()\n\n const overflow = useScrollOverflow(scrollAreaRef)\n\n return (\n <div\n data-spark-component=\"dialog-body\"\n ref={ref}\n className={cx(\n 'focus-visible:u-outline relative grow overflow-y-auto outline-hidden',\n 'transition-all duration-300',\n {\n ['px-xl py-lg']: !inset,\n },\n className\n )}\n style={{\n ...(withFade && {\n maskImage:\n 'linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))',\n maskSize: `100% calc(100% + ${overflow.top ? '0px' : '44px'} + ${overflow.bottom ? '0px' : '44px'})`,\n maskPosition: `0 ${overflow.top ? '0px' : '-44px'}`,\n }),\n }}\n {...rest}\n >\n {children}\n </div>\n )\n}\n\nBody.displayName = 'Dialog.Body'\n","import { Dialog as RadixDialog } from 'radix-ui'\nimport { Ref } from 'react'\n\nexport type CloseProps = RadixDialog.DialogCloseProps & {\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const Close = (props: CloseProps) => <RadixDialog.Close {...props} />\n\nClose.displayName = 'Dialog.Close'\n","import { Close as CloseSVG } from '@spark-ui/icons/Close'\nimport { cx } from 'class-variance-authority'\n\nimport { Icon } from '../icon'\nimport { IconButton, type IconButtonProps } from '../icon-button'\nimport { Close, CloseProps } from './DialogClose'\n\nexport type CloseButtonProps = CloseProps &\n Pick<IconButtonProps, 'size' | 'intent' | 'design' | 'aria-label'>\n\nconst Root = ({\n 'aria-label': ariaLabel,\n className,\n size = 'md',\n intent = 'neutral',\n design = 'ghost',\n children = <CloseSVG />,\n ref,\n ...rest\n}: CloseButtonProps) => {\n return (\n <Close\n data-spark-component=\"dialog-close-button\"\n data-part=\"close\"\n ref={ref}\n className={cx(['absolute', 'top-md', 'right-xl'], className)}\n asChild\n {...rest}\n >\n <IconButton intent={intent} size={size} design={design} aria-label={ariaLabel}>\n <Icon>{children}</Icon>\n </IconButton>\n </Close>\n )\n}\n\nexport const CloseButton = Object.assign(Root, {\n id: 'CloseButton',\n})\n\nRoot.displayName = 'Dialog.CloseButton'\n","import { Dialog as RadixDialog } from 'radix-ui'\nimport { type ReactElement, Ref, useEffect } from 'react'\n\nimport { dialogContentStyles, type DialogContentStylesProps } from './DialogContent.styles'\nimport { useDialog } from './DialogContext'\n\nexport interface ContentProps extends RadixDialog.DialogContentProps, DialogContentStylesProps {\n /**\n * When set to true, the content will adjust its width to fit the content rather than taking up the full available width.\n */\n isNarrow?: boolean\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Content = ({\n children,\n className,\n isNarrow = false,\n size = 'md',\n onInteractOutside,\n ref,\n ...rest\n}: ContentProps): ReactElement => {\n const { setIsFullScreen } = useDialog()\n\n useEffect(() => {\n if (size === 'fullscreen') setIsFullScreen(true)\n\n return () => setIsFullScreen(false)\n }, [setIsFullScreen, size])\n\n return (\n <RadixDialog.Content\n data-spark-component=\"dialog-content\"\n ref={ref}\n className={dialogContentStyles({\n className,\n isNarrow,\n size,\n })}\n onInteractOutside={e => {\n const isForegroundElement = (e.target as HTMLElement).closest('.z-toast, .z-popover')\n\n /**\n * The focus trap of the dialog applies `pointer-events-none` on the body of the page in the background, but\n * some components with an higher z-index have `pointer-events-auto` applied on them to remain interactive and ignore the focust trap (ex: a Snackbar with actions).\n *\n * Clicking on the snackbar will be considered as an \"outside click\" and close the dialog. We want to prevent this.\n */\n if (isForegroundElement) {\n e.preventDefault()\n }\n\n onInteractOutside?.(e)\n }}\n {...rest}\n >\n {children}\n </RadixDialog.Content>\n )\n}\n\nContent.displayName = 'Dialog.Content'\n","import { cva, VariantProps } from 'class-variance-authority'\n\nexport const dialogContentStyles = cva(\n [\n 'z-modal flex flex-col bg-surface group',\n 'focus-visible:outline-hidden focus-visible:u-outline',\n '[&:not(:has(footer))]:pb-lg',\n '[&:not(:has(header))]:pt-lg',\n ],\n {\n variants: {\n size: {\n fullscreen: 'fixed size-full top-0 left-0',\n sm: 'max-w-sz-480',\n md: 'max-w-sz-672',\n lg: 'max-w-sz-864',\n },\n isNarrow: {\n true: [],\n false: [],\n },\n },\n compoundVariants: [\n {\n size: ['sm', 'md', 'lg'],\n class: [\n 'fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n 'max-h-[80%]',\n 'shadow-md rounded-lg',\n 'data-[state=open]:animate-fade-in',\n 'data-[state=closed]:animate-fade-out',\n ],\n },\n {\n size: ['sm', 'md', 'lg'],\n isNarrow: false,\n class: ['w-full'],\n },\n ],\n defaultVariants: {\n size: 'md',\n isNarrow: false,\n },\n }\n)\n\nexport type DialogContentStylesProps = VariantProps<typeof dialogContentStyles>\n","import { Dialog as RadixDialog } from 'radix-ui'\nimport { Ref } from 'react'\n\nexport type DescriptionProps = RadixDialog.DialogDescriptionProps & {\n ref?: Ref<HTMLParagraphElement>\n}\n\nexport const Description = (props: DescriptionProps) => (\n <RadixDialog.Description data-spark-component=\"dialog-description\" {...props} />\n)\n\nDescription.displayName = 'Dialog.Description'\n","import { cx } from 'class-variance-authority'\nimport { type ReactElement, type ReactNode, Ref } from 'react'\n\nexport interface FooterProps {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Footer = ({ children, className, ref, ...rest }: FooterProps): ReactElement => (\n <footer\n data-spark-component=\"dialog-footer\"\n ref={ref}\n className={cx(className, ['px-xl', 'py-lg'])}\n {...rest}\n >\n {children}\n </footer>\n)\n\nFooter.displayName = 'Dialog.Footer'\n","import { cx } from 'class-variance-authority'\nimport { type ReactElement, type ReactNode, Ref } from 'react'\n\nexport interface HeaderProps {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Header = ({ children, className, ref, ...rest }: HeaderProps): ReactElement => (\n <header\n data-spark-component=\"dialog-header\"\n ref={ref}\n className={cx(className, ['px-xl', 'py-lg'])}\n {...rest}\n >\n {children}\n </header>\n)\n\nHeader.displayName = 'Dialog.Header'\n","import { cx } from 'class-variance-authority'\nimport { Dialog as RadixDialog } from 'radix-ui'\nimport { type ReactElement, Ref } from 'react'\n\nimport { useDialog } from './DialogContext'\n\nexport type OverlayProps = RadixDialog.DialogOverlayProps & {\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Overlay = ({ className, ref, ...rest }: OverlayProps): ReactElement | null => {\n const { isFullScreen } = useDialog()\n\n return (\n <RadixDialog.Overlay\n data-spark-component=\"dialog-overlay\"\n ref={ref}\n className={cx(\n isFullScreen ? 'hidden' : 'fixed',\n ['top-0', 'left-0', 'w-screen', 'h-screen', 'z-overlay'],\n ['bg-overlay/dim-1'],\n ['data-[state=open]:animate-fade-in'],\n ['data-[state=closed]:animate-fade-out'],\n className\n )}\n {...rest}\n />\n )\n}\n\nOverlay.displayName = 'Dialog.Overlay'\n","import { Dialog as RadixDialog } from 'radix-ui'\nimport { type ReactElement } from 'react'\n\nexport type PortalProps = RadixDialog.DialogPortalProps\n\nexport const Portal = ({ children, ...rest }: PortalProps): ReactElement => (\n <RadixDialog.Portal {...rest}>{children}</RadixDialog.Portal>\n)\n\nPortal.displayName = 'Dialog.Portal'\n","import { cx } from 'class-variance-authority'\nimport { Dialog as RadixDialog } from 'radix-ui'\nimport { Ref } from 'react'\n\nexport type TitleProps = RadixDialog.DialogTitleProps & {\n ref?: Ref<HTMLHeadingElement>\n}\n\nexport const Title = ({ className, ref, ...others }: TitleProps) => {\n return (\n <RadixDialog.Title\n data-spark-component=\"dialog-title\"\n ref={ref}\n className={cx(\n 'text-headline-1 text-on-surface',\n 'group-has-data-[part=close]:pr-3xl',\n className\n )}\n {...others}\n />\n )\n}\n\nTitle.displayName = 'Dialog.Title'\n","import { Dialog as RadixDialog } from 'radix-ui'\nimport { type ReactElement, ReactNode, Ref } from 'react'\n\nexport interface TriggerProps {\n /**\n * Children of the component.\n */\n children?: ReactNode\n /**\n * Change the component to the HTML tag or custom component of the only child.\n */\n asChild?: RadixDialog.DialogTriggerProps['asChild']\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const Trigger = (props: TriggerProps): ReactElement => (\n <RadixDialog.Trigger data-spark-component=\"dialog-trigger\" {...props} />\n)\n\nTrigger.displayName = 'Dialog.Trigger'\n","import { Dialog as Root } from './Dialog'\nimport { Body } from './DialogBody'\nimport { Close } from './DialogClose'\nimport { CloseButton } from './DialogCloseButton'\nimport { Content } from './DialogContent'\nimport { Description } from './DialogDescription' // aria-describedby\nimport { Footer } from './DialogFooter'\nimport { Header } from './DialogHeader'\nimport { Overlay } from './DialogOverlay'\nimport { Portal } from './DialogPortal'\nimport { Title } from './DialogTitle' // aria-labelledby\nimport { Trigger } from './DialogTrigger'\n\nexport const Dialog: typeof Root & {\n Trigger: typeof Trigger\n Portal: typeof Portal\n Overlay: typeof Overlay\n Content: typeof Content\n Header: typeof Header\n Body: typeof Body\n Footer: typeof Footer\n Close: typeof Close\n CloseButton: typeof CloseButton\n Title: typeof Title\n Description: typeof Description\n} = Object.assign(Root, {\n Trigger,\n Portal,\n Overlay,\n Content,\n Header,\n Body,\n Footer,\n Close,\n CloseButton,\n Title,\n Description,\n})\n\nDialog.displayName = 'Dialog'\nDialog.Trigger.displayName = 'Dialog.Trigger'\nTrigger.displayName = 'Dialog.Trigger'\nPortal.displayName = 'Dialog.Portal'\nOverlay.displayName = 'Dialog.Overlay'\nContent.displayName = 'Dialog.Content'\nHeader.displayName = 'Dialog.Header'\nBody.displayName = 'Dialog.Body'\nFooter.displayName = 'Dialog.Footer'\nCloseButton.displayName = 'Dialog.CloseButton'\nTitle.displayName = 'Dialog.Title'\nDescription.displayName = 'Dialog.Description'\n\nexport { type DialogProps } from './Dialog'\nexport { type ContentProps as DialogContentProps } from './DialogContent'\nexport { type HeaderProps as DialogHeaderProps } from './DialogHeader'\nexport { type BodyProps as DialogBodyProps } from './DialogBody'\nexport { type FooterProps as DialogFooterProps } from './DialogFooter'\nexport { type TriggerProps as DialogTriggerProps } from './DialogTrigger'\nexport { type OverlayProps as DialogOverlayProps } from './DialogOverlay'\nexport { type PortalProps as DialogPortalProps } from './DialogPortal'\nexport { type TitleProps as DialogTitleProps } from './DialogTitle'\nexport { type DescriptionProps as DialogDescriptionProps } from './DialogDescription'\nexport { type CloseProps as DialogCloseProps } from './DialogClose'\nexport { type CloseButtonProps as DialogCloseButtonProps } from './DialogCloseButton'\n"],"mappings":"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","names":["jsx","useRef","jsx","useRef","RadixDialog","jsx","cx","jsx","cx","RadixDialog","useEffect","jsx","useEffect","RadixDialog","RadixDialog","jsx","cx","jsx","cx","jsx","cx","RadixDialog","jsx","RadixDialog","cx","RadixDialog","jsx","cx","RadixDialog","jsx","RadixDialog","jsx","Dialog"]}
@@ -1,60 +1,43 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as collapsible from '@zag-js/collapsible';
3
- import { ComponentProps, Ref, ComponentPropsWithoutRef } from 'react';
2
+ import { Collapsible as Collapsible$1 } from '@base-ui-components/react/collapsible';
3
+ import { ComponentProps } from 'react';
4
4
 
5
- interface CollapsibleProps extends ComponentProps<'div'> {
5
+ interface ContentProps extends ComponentProps<typeof Collapsible$1.Panel> {
6
6
  /**
7
7
  * Change the default rendered element for the one passed as a child, merging their props and behavior.
8
8
  */
9
9
  asChild?: boolean;
10
- /**
11
- * The open state of the collapsible when it is initially rendered. Use when you do not need to control its open state.
12
- */
13
- defaultOpen?: boolean;
14
- /**
15
- * When `true`, prevents the user from interacting with the collapsible.
16
- */
17
- disabled?: boolean;
18
- /**
19
- * Event handler called when the open state of the collapsible changes.
20
- */
21
- onOpenChange?: (open: boolean) => void;
22
- /**
23
- * The controlled open state of the collapsible. Must be used in conjunction with `onOpenChange`.
24
- */
25
- open?: boolean;
26
- /**
27
- * The ids of the elements in the collapsible. Useful for composition
28
- */
29
- ids?: collapsible.Props['ids'];
30
- ref?: Ref<HTMLDivElement>;
31
10
  }
32
- declare const Collapsible$1: {
33
- ({ asChild, children, defaultOpen, disabled, onOpenChange, open, ids, ref, ...props }: CollapsibleProps): react_jsx_runtime.JSX.Element;
11
+ declare const Content: {
12
+ ({ asChild, className, children, hiddenUntilFound, ...props }: ContentProps): react_jsx_runtime.JSX.Element;
34
13
  displayName: string;
35
14
  };
36
15
 
37
- interface CollapsibleContentProps extends ComponentPropsWithoutRef<'div'> {
16
+ interface RootProps extends ComponentProps<typeof Collapsible$1.Root> {
17
+ /**
18
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
19
+ */
38
20
  asChild?: boolean;
39
- ref?: Ref<HTMLDivElement>;
40
21
  }
41
- declare const Content: {
42
- ({ asChild, className, children, ref, ...props }: CollapsibleContentProps): react_jsx_runtime.JSX.Element;
22
+ declare const Root: {
23
+ ({ asChild, children, ...props }: RootProps): react_jsx_runtime.JSX.Element;
43
24
  displayName: string;
44
25
  };
45
26
 
46
- interface CollapsibleTriggerProps extends ComponentPropsWithoutRef<'button'> {
27
+ interface TriggerProps extends ComponentProps<'button'> {
28
+ /**
29
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
30
+ */
47
31
  asChild?: boolean;
48
- ref?: Ref<HTMLButtonElement>;
49
32
  }
50
33
  declare const Trigger: {
51
- ({ asChild, children, ref, ...props }: CollapsibleTriggerProps): react_jsx_runtime.JSX.Element;
34
+ ({ asChild, children, ...props }: TriggerProps): react_jsx_runtime.JSX.Element;
52
35
  displayName: string;
53
36
  };
54
37
 
55
- declare const Collapsible: typeof Collapsible$1 & {
38
+ declare const Collapsible: typeof Root & {
56
39
  Trigger: typeof Trigger;
57
40
  Content: typeof Content;
58
41
  };
59
42
 
60
- export { Collapsible, type CollapsibleContentProps, type CollapsibleProps, type CollapsibleTriggerProps };
43
+ export { Collapsible };
@@ -1,60 +1,43 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as collapsible from '@zag-js/collapsible';
3
- import { ComponentProps, Ref, ComponentPropsWithoutRef } from 'react';
2
+ import { Collapsible as Collapsible$1 } from '@base-ui-components/react/collapsible';
3
+ import { ComponentProps } from 'react';
4
4
 
5
- interface CollapsibleProps extends ComponentProps<'div'> {
5
+ interface ContentProps extends ComponentProps<typeof Collapsible$1.Panel> {
6
6
  /**
7
7
  * Change the default rendered element for the one passed as a child, merging their props and behavior.
8
8
  */
9
9
  asChild?: boolean;
10
- /**
11
- * The open state of the collapsible when it is initially rendered. Use when you do not need to control its open state.
12
- */
13
- defaultOpen?: boolean;
14
- /**
15
- * When `true`, prevents the user from interacting with the collapsible.
16
- */
17
- disabled?: boolean;
18
- /**
19
- * Event handler called when the open state of the collapsible changes.
20
- */
21
- onOpenChange?: (open: boolean) => void;
22
- /**
23
- * The controlled open state of the collapsible. Must be used in conjunction with `onOpenChange`.
24
- */
25
- open?: boolean;
26
- /**
27
- * The ids of the elements in the collapsible. Useful for composition
28
- */
29
- ids?: collapsible.Props['ids'];
30
- ref?: Ref<HTMLDivElement>;
31
10
  }
32
- declare const Collapsible$1: {
33
- ({ asChild, children, defaultOpen, disabled, onOpenChange, open, ids, ref, ...props }: CollapsibleProps): react_jsx_runtime.JSX.Element;
11
+ declare const Content: {
12
+ ({ asChild, className, children, hiddenUntilFound, ...props }: ContentProps): react_jsx_runtime.JSX.Element;
34
13
  displayName: string;
35
14
  };
36
15
 
37
- interface CollapsibleContentProps extends ComponentPropsWithoutRef<'div'> {
16
+ interface RootProps extends ComponentProps<typeof Collapsible$1.Root> {
17
+ /**
18
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
19
+ */
38
20
  asChild?: boolean;
39
- ref?: Ref<HTMLDivElement>;
40
21
  }
41
- declare const Content: {
42
- ({ asChild, className, children, ref, ...props }: CollapsibleContentProps): react_jsx_runtime.JSX.Element;
22
+ declare const Root: {
23
+ ({ asChild, children, ...props }: RootProps): react_jsx_runtime.JSX.Element;
43
24
  displayName: string;
44
25
  };
45
26
 
46
- interface CollapsibleTriggerProps extends ComponentPropsWithoutRef<'button'> {
27
+ interface TriggerProps extends ComponentProps<'button'> {
28
+ /**
29
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
30
+ */
47
31
  asChild?: boolean;
48
- ref?: Ref<HTMLButtonElement>;
49
32
  }
50
33
  declare const Trigger: {
51
- ({ asChild, children, ref, ...props }: CollapsibleTriggerProps): react_jsx_runtime.JSX.Element;
34
+ ({ asChild, children, ...props }: TriggerProps): react_jsx_runtime.JSX.Element;
52
35
  displayName: string;
53
36
  };
54
37
 
55
- declare const Collapsible: typeof Collapsible$1 & {
38
+ declare const Collapsible: typeof Root & {
56
39
  Trigger: typeof Trigger;
57
40
  Content: typeof Content;
58
41
  };
59
42
 
60
- export { Collapsible, type CollapsibleContentProps, type CollapsibleProps, type CollapsibleTriggerProps };
43
+ export { Collapsible };
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,27 +15,18 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
 
30
20
  // src/collapsible/index.ts
31
21
  var collapsible_exports = {};
32
22
  __export(collapsible_exports, {
33
- Collapsible: () => Collapsible2
23
+ Collapsible: () => Collapsible4
34
24
  });
35
25
  module.exports = __toCommonJS(collapsible_exports);
36
26
 
37
- // src/collapsible/Collapsible.tsx
38
- var collapsible = __toESM(require("@zag-js/collapsible"));
39
- var import_react2 = require("@zag-js/react");
40
- var import_react3 = require("react");
27
+ // src/collapsible/Content.tsx
28
+ var import_collapsible = require("@base-ui-components/react/collapsible");
29
+ var import_class_variance_authority = require("class-variance-authority");
41
30
 
42
31
  // src/slot/Slot.tsx
43
32
  var import_radix_ui = require("radix-ui");
@@ -48,89 +37,69 @@ var Slot = ({ ref, ...props }) => {
48
37
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Slot.Root, { ref, ...props });
49
38
  };
50
39
 
51
- // src/collapsible/Collapsible.tsx
40
+ // src/collapsible/useRenderSlot.tsx
52
41
  var import_jsx_runtime2 = require("react/jsx-runtime");
53
- var CollapsibleContext = (0, import_react3.createContext)(null);
54
- var Collapsible = ({
55
- asChild = false,
56
- children,
57
- defaultOpen = false,
58
- disabled = false,
59
- onOpenChange,
60
- open,
61
- ids,
62
- ref,
63
- ...props
64
- }) => {
65
- const service = (0, import_react2.useMachine)(collapsible.machine, {
66
- open,
67
- defaultOpen,
68
- disabled,
69
- id: (0, import_react3.useId)(),
70
- ids,
71
- onOpenChange(details) {
72
- onOpenChange?.(details.open);
73
- }
74
- });
75
- const api = collapsible.connect(service, import_react2.normalizeProps);
76
- const Component = asChild ? Slot : "div";
77
- const mergedProps = (0, import_react2.mergeProps)(api.getRootProps(), props);
78
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CollapsibleContext.Provider, { value: api, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Component, { "data-spark-component": "collapsible", ref, ...mergedProps, children }) });
79
- };
80
- Collapsible.displayName = "Collapsible";
81
- var useCollapsibleContext = () => {
82
- const context = (0, import_react3.useContext)(CollapsibleContext);
83
- if (!context) {
84
- throw Error("useCollapsibleContext must be used within a Collapsible provider");
85
- }
86
- return context;
87
- };
42
+ function useRenderSlot(asChild, defaultTag) {
43
+ const Component = asChild ? Slot : defaultTag;
44
+ return asChild ? ({ ...props }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Component, { ...props }) : void 0;
45
+ }
88
46
 
89
- // src/collapsible/CollapsibleContent.tsx
90
- var import_react4 = require("@zag-js/react");
91
- var import_class_variance_authority = require("class-variance-authority");
47
+ // src/collapsible/Content.tsx
92
48
  var import_jsx_runtime3 = require("react/jsx-runtime");
93
49
  var Content = ({
94
50
  asChild = false,
95
51
  className,
96
52
  children,
97
- ref,
53
+ hiddenUntilFound = true,
98
54
  ...props
99
55
  }) => {
100
- const { getContentProps } = useCollapsibleContext();
101
- const Component = asChild ? Slot : "div";
102
- const contentProps = getContentProps();
103
- const mergedProps = (0, import_react4.mergeProps)(contentProps, {
104
- className: (0, import_class_variance_authority.cx)(
105
- "overflow-hidden",
106
- "motion-reduce:animate-none!",
107
- "[&[hidden]]:hidden",
108
- "data-[state=open]:animate-standalone-collapse-in data-[state=closed]:animate-standalone-collapse-out",
109
- className
110
- ),
111
- ...props
112
- });
113
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Component, { ref, "data-spark-component": "collapsible-content", ...mergedProps, children });
56
+ const renderSlot = useRenderSlot(asChild, "div");
57
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
58
+ import_collapsible.Collapsible.Panel,
59
+ {
60
+ "data-spark-component": "collapsible-content",
61
+ className: (0, import_class_variance_authority.cx)(
62
+ "overflow-hidden",
63
+ "h-[var(--collapsible-panel-height)]",
64
+ "transition-all duration-200",
65
+ "motion-reduce:transition-none",
66
+ "data-[starting-style]:h-0",
67
+ "data-[ending-style]:h-0",
68
+ className
69
+ ),
70
+ render: renderSlot,
71
+ hiddenUntilFound,
72
+ ...props,
73
+ children
74
+ }
75
+ );
114
76
  };
115
77
  Content.displayName = "Collapsible.Content";
116
78
 
117
- // src/collapsible/CollapsibleTrigger.tsx
118
- var import_react5 = require("@zag-js/react");
79
+ // src/collapsible/Root.tsx
80
+ var import_collapsible2 = require("@base-ui-components/react/collapsible");
119
81
  var import_jsx_runtime4 = require("react/jsx-runtime");
120
- var Trigger = ({ asChild = false, children, ref, ...props }) => {
121
- const collapsibleContext = useCollapsibleContext();
122
- const Component = asChild ? Slot : "button";
123
- const mergedProps = (0, import_react5.mergeProps)(collapsibleContext.getTriggerProps(), props);
124
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Component, { ref, "data-spark-component": "collapsible-trigger", ...mergedProps, children });
82
+ var Root = ({ asChild = false, children, ...props }) => {
83
+ const renderSlot = useRenderSlot(asChild, "div");
84
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_collapsible2.Collapsible.Root, { "data-spark-component": "collapsible", render: renderSlot, ...props, children });
85
+ };
86
+ Root.displayName = "Collapsible";
87
+
88
+ // src/collapsible/Trigger.tsx
89
+ var import_collapsible3 = require("@base-ui-components/react/collapsible");
90
+ var import_jsx_runtime5 = require("react/jsx-runtime");
91
+ var Trigger = ({ asChild = false, children, ...props }) => {
92
+ const renderSlot = useRenderSlot(asChild, "button");
93
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_collapsible3.Collapsible.Trigger, { "data-spark-component": "collapsible-trigger", render: renderSlot, ...props, children });
125
94
  };
126
95
  Trigger.displayName = "Collapsible.Trigger";
127
96
 
128
97
  // src/collapsible/index.ts
129
- var Collapsible2 = Object.assign(Collapsible, {
98
+ var Collapsible4 = Object.assign(Root, {
130
99
  Trigger,
131
100
  Content
132
101
  });
133
- Collapsible2.displayName = "Collapsible";
102
+ Collapsible4.displayName = "Collapsible";
134
103
  Trigger.displayName = "Collapsible.Trigger";
135
104
  Content.displayName = "Collapsible.Content";
136
105
  // Annotate the CommonJS export names for ESM import in node: