@kamod-ch/ui 0.2.1 → 1.1.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 (73) hide show
  1. package/README.md +103 -16
  2. package/dist/{AlertDialog-ALB541qy.d.ts → AlertDialog-GadhKjPC.d.ts} +1 -1
  3. package/dist/{DialogContent-CK1t4m4e.d.ts → DialogContent-cQHSRQdT.d.ts} +1 -1
  4. package/dist/{Drawer-B3pZMn5j.d.ts → Drawer-CdjXZxxK.d.ts} +1 -1
  5. package/dist/{Sheet-s0xRF22F.d.ts → Sheet-DZ-p-aHY.d.ts} +1 -1
  6. package/dist/SidebarProvider-Bx7-BdQn.d.ts +160 -0
  7. package/dist/chunk-24QD2FTA.js +722 -0
  8. package/dist/chunk-24QD2FTA.js.map +1 -0
  9. package/dist/{chunk-MJG6UKD4.js → chunk-262EK2XT.js} +9 -17
  10. package/dist/chunk-262EK2XT.js.map +1 -0
  11. package/dist/{chunk-7AJT2E2Y.js → chunk-3LIT5GWF.js} +2 -2
  12. package/dist/chunk-3LIT5GWF.js.map +1 -0
  13. package/dist/chunk-B47B6KK6.js +59 -0
  14. package/dist/chunk-B47B6KK6.js.map +1 -0
  15. package/dist/{chunk-JKXSX67K.js → chunk-EMUPVA2F.js} +4 -4
  16. package/dist/chunk-EMUPVA2F.js.map +1 -0
  17. package/dist/{chunk-26CRIZXP.js → chunk-HCTZJYHK.js} +19 -17
  18. package/dist/chunk-HCTZJYHK.js.map +1 -0
  19. package/dist/{chunk-4BJJOHZT.js → chunk-HHLQYMPT.js} +3 -3
  20. package/dist/{chunk-4BJJOHZT.js.map → chunk-HHLQYMPT.js.map} +1 -1
  21. package/dist/{chunk-YJGECAOZ.js → chunk-IQH3XSOI.js} +4 -4
  22. package/dist/{chunk-YJGECAOZ.js.map → chunk-IQH3XSOI.js.map} +1 -1
  23. package/dist/{chunk-LFJF3M6M.js → chunk-JSHUWI3C.js} +3 -3
  24. package/dist/{chunk-LFJF3M6M.js.map → chunk-JSHUWI3C.js.map} +1 -1
  25. package/dist/{chunk-2BQ54337.js → chunk-MJQ6R345.js} +2 -2
  26. package/dist/{chunk-2BQ54337.js.map → chunk-MJQ6R345.js.map} +1 -1
  27. package/dist/{chunk-PZS2D2QM.js → chunk-NILG56Z7.js} +3 -3
  28. package/dist/{chunk-PZS2D2QM.js.map → chunk-NILG56Z7.js.map} +1 -1
  29. package/dist/{chunk-2HZCH73K.js → chunk-STRBBF45.js} +5 -5
  30. package/dist/chunk-STRBBF45.js.map +1 -0
  31. package/dist/{chunk-YVALXJRN.js → chunk-TXKPDNRD.js} +7 -8
  32. package/dist/chunk-TXKPDNRD.js.map +1 -0
  33. package/dist/{chunk-YTJRKLUR.js → chunk-UARVH66B.js} +4 -4
  34. package/dist/{chunk-YTJRKLUR.js.map → chunk-UARVH66B.js.map} +1 -1
  35. package/dist/{chunk-ROKLAZHC.js → chunk-UIA74JVN.js} +3 -3
  36. package/dist/{chunk-ROKLAZHC.js.map → chunk-UIA74JVN.js.map} +1 -1
  37. package/dist/{chunk-BQP4UA44.js → chunk-X2YUFNK7.js} +3 -3
  38. package/dist/{chunk-BQP4UA44.js.map → chunk-X2YUFNK7.js.map} +1 -1
  39. package/dist/{chunk-3DNIMQX6.js → chunk-XNYAQZIB.js} +15 -9
  40. package/dist/chunk-XNYAQZIB.js.map +1 -0
  41. package/dist/components/alert-dialog/index.d.ts +3 -3
  42. package/dist/components/alert-dialog/index.js +3 -2
  43. package/dist/components/command/index.js +4 -3
  44. package/dist/components/context-menu/index.d.ts +1 -1
  45. package/dist/components/context-menu/index.js +2 -1
  46. package/dist/components/dialog/index.d.ts +3 -3
  47. package/dist/components/dialog/index.js +3 -2
  48. package/dist/components/drawer/index.d.ts +3 -3
  49. package/dist/components/drawer/index.js +4 -3
  50. package/dist/components/dropdown/index.js +1 -1
  51. package/dist/components/hover-card/index.js +1 -1
  52. package/dist/components/radio-group/index.js +2 -2
  53. package/dist/components/selectable-card/index.js +2 -2
  54. package/dist/components/sheet/index.d.ts +3 -3
  55. package/dist/components/sheet/index.js +4 -3
  56. package/dist/components/sidebar/index.d.ts +15 -10
  57. package/dist/components/sidebar/index.js +13 -1
  58. package/dist/components/tabs/index.js +1 -1
  59. package/dist/components/theme-toggle/index.js +1 -1
  60. package/dist/index.d.ts +5 -5
  61. package/dist/index.js +18 -17
  62. package/package.json +15 -12
  63. package/LICENSE.md +0 -9
  64. package/dist/SidebarProvider-IAihmyD7.d.ts +0 -46
  65. package/dist/chunk-26CRIZXP.js.map +0 -1
  66. package/dist/chunk-2HZCH73K.js.map +0 -1
  67. package/dist/chunk-3DNIMQX6.js.map +0 -1
  68. package/dist/chunk-7AJT2E2Y.js.map +0 -1
  69. package/dist/chunk-JKXSX67K.js.map +0 -1
  70. package/dist/chunk-MJG6UKD4.js.map +0 -1
  71. package/dist/chunk-R565SY7K.js +0 -69
  72. package/dist/chunk-R565SY7K.js.map +0 -1
  73. package/dist/chunk-YVALXJRN.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/dialog/Dialog.tsx","../src/components/dialog/DialogClose.tsx","../src/components/dialog/useModalPanelA11y.ts","../src/components/dialog/DialogContent.tsx","../src/components/dialog/DialogDescription.tsx","../src/components/dialog/DialogTitle.tsx","../src/components/dialog/DialogTrigger.tsx"],"names":["jsx","useRef","useEffect","useMemo","useLayoutEffect","callRef","isValidElement","cloneElement"],"mappings":"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","file":"chunk-4BJJOHZT.js","sourcesContent":["import { type Signal, signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createDismissableLayer } from \"../../lib/interactive\";\nimport { createControllableSignal } from \"../../lib/signals\";\n\nconst SCROLL_LOCK_COUNT_ATTR = \"data-kamod-scroll-lock-count\";\nconst SCROLL_LOCK_BODY_OVERFLOW_ATTR = \"data-kamod-scroll-lock-body-overflow\";\nconst SCROLL_LOCK_HTML_OVERFLOW_ATTR = \"data-kamod-scroll-lock-html-overflow\";\nconst SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR = \"data-kamod-scroll-lock-body-padding-right\";\nconst SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR = \"data-kamod-scroll-lock-html-scrollbar-gutter\";\n\nconst lockDocumentScroll = () => {\n const body = document.body;\n const html = document.documentElement;\n const lockCount = Number.parseInt(body.getAttribute(SCROLL_LOCK_COUNT_ATTR) ?? \"0\", 10);\n\n if (lockCount === 0) {\n body.setAttribute(SCROLL_LOCK_BODY_OVERFLOW_ATTR, body.style.overflow);\n body.setAttribute(SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR, body.style.paddingRight);\n html.setAttribute(SCROLL_LOCK_HTML_OVERFLOW_ATTR, html.style.overflow);\n html.setAttribute(SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR, html.style.scrollbarGutter);\n\n const gutter = getComputedStyle(html).scrollbarGutter;\n const viewportUsesStableGutter = gutter === \"stable\" || gutter === \"stable both-edges\";\n\n if (viewportUsesStableGutter) {\n // Stylesheet `html { scrollbar-gutter: stable }` already reserves scrollbar width; do not\n // force `auto` or add body padding-right (that combo reintroduces the header “jump”).\n html.style.setProperty(\"--kamod-scroll-lock-gutter\", \"0px\");\n } else {\n // If the page does not use stable gutter, measure scrollbar width and pad like Radix/shadcn.\n html.style.scrollbarGutter = \"auto\";\n void html.offsetHeight;\n\n const scrollbarWidth = Math.max(0, window.innerWidth - document.documentElement.clientWidth);\n html.style.setProperty(\"--kamod-scroll-lock-gutter\", `${scrollbarWidth}px`);\n\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n\n html.style.overflow = \"hidden\";\n body.style.overflow = \"hidden\";\n html.setAttribute(\"data-kamod-scroll-lock\", \"\");\n }\n\n body.setAttribute(SCROLL_LOCK_COUNT_ATTR, String(lockCount + 1));\n\n return () => {\n const currentCount = Number.parseInt(body.getAttribute(SCROLL_LOCK_COUNT_ATTR) ?? \"0\", 10);\n const nextCount = Math.max(0, currentCount - 1);\n\n if (nextCount > 0) {\n body.setAttribute(SCROLL_LOCK_COUNT_ATTR, String(nextCount));\n return;\n }\n\n const previousBodyOverflow = body.getAttribute(SCROLL_LOCK_BODY_OVERFLOW_ATTR) ?? \"\";\n const previousHtmlOverflow = html.getAttribute(SCROLL_LOCK_HTML_OVERFLOW_ATTR) ?? \"\";\n const previousBodyPaddingRight = body.getAttribute(SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR) ?? \"\";\n const previousHtmlScrollbarGutter =\n html.getAttribute(SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR) ?? \"\";\n\n body.style.overflow = previousBodyOverflow;\n body.style.paddingRight = previousBodyPaddingRight;\n html.style.overflow = previousHtmlOverflow;\n if (previousHtmlScrollbarGutter === \"\") {\n html.style.removeProperty(\"scrollbar-gutter\");\n } else {\n html.style.scrollbarGutter = previousHtmlScrollbarGutter;\n }\n html.style.removeProperty(\"--kamod-scroll-lock-gutter\");\n html.removeAttribute(\"data-kamod-scroll-lock\");\n body.removeAttribute(SCROLL_LOCK_COUNT_ATTR);\n body.removeAttribute(SCROLL_LOCK_BODY_OVERFLOW_ATTR);\n body.removeAttribute(SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR);\n html.removeAttribute(SCROLL_LOCK_HTML_OVERFLOW_ATTR);\n html.removeAttribute(SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR);\n };\n};\n\nexport type DialogContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n setOpen: (next: boolean) => void;\n triggerRef: { current: HTMLElement | null };\n titleId: Signal<string | undefined>;\n descriptionId: Signal<string | undefined>;\n};\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nexport const useDialog = () => {\n const context = useContext(DialogContext);\n if (!context) throw new Error(\"Dialog subcomponents must be used within Dialog\");\n return context;\n};\n\nexport type DialogProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** When true, locks document scroll while open (shadcn default). */\n lockBodyScroll?: boolean;\n children?: ComponentChildren;\n};\n\nexport const Dialog = ({\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n lockBodyScroll = true,\n children,\n ...rest\n}: DialogProps) => {\n const onOpenChangeRef = useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useMemo(() => signal<string | undefined>(undefined), []);\n const descriptionId = useMemo(() => signal<string | undefined>(undefined), []);\n\n const controllable = useMemo(\n () =>\n createControllableSignal<boolean>({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: (next) => onOpenChangeRef.current?.(next),\n }),\n [],\n );\n const open = controllable.state;\n\n // Controlled mode: keep the internal signal in sync before paint. If we only\n // sync in useEffect, the first commit can render DialogContent with open=false\n // while openProp is already true (portal stays unmounted / dismiss layer races).\n if (openProp !== undefined && open.value !== openProp) {\n open.value = openProp;\n }\n\n const setOpen = (next: boolean) => {\n const wasOpen = open.value;\n controllable.setState(next);\n if (wasOpen && !next) {\n const trigger = triggerRef.current;\n if (trigger && typeof trigger.focus === \"function\") {\n trigger.focus();\n }\n }\n };\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => open.value,\n onDismiss: () => {\n setOpen(false);\n },\n });\n return () => layer.dispose();\n }, []);\n\n useEffect(() => {\n if (!lockBodyScroll || typeof document === \"undefined\") return;\n if (!open.value) return;\n return lockDocumentScroll();\n }, [lockBodyScroll, open.value]);\n\n return (\n <DialogContext.Provider value={{ open, setOpen, triggerRef, titleId, descriptionId }}>\n <div ref={rootRef} data-slot=\"dialog\" data-state={open.value ? \"open\" : \"closed\"} {...rest}>\n {children}\n </div>\n </DialogContext.Provider>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { useDialog } from \"./Dialog\";\n\nexport type DialogCloseProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const DialogClose = ({\n asChild = false,\n children,\n onClick,\n ref: outerRef,\n \"data-slot\": dataSlot = \"dialog-close\",\n ...rest\n}: DialogCloseProps) => {\n const dialog = useDialog();\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n dialog.setOpen(false);\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"data-slot\": dataSlot,\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n callRef(outerRef, node);\n }}\n type=\"button\"\n data-slot={dataSlot}\n onClick={(event) => handleClick(event as unknown as JSX.TargetedMouseEvent<HTMLElement>)}\n {...rest}\n >\n {children}\n </button>\n );\n};\n","import { useEffect, useRef } from \"preact/hooks\";\nimport { trapFocus } from \"../../lib/interactive\";\nimport { useDialog } from \"./Dialog\";\n\nexport const useModalPanelA11y = (open: boolean) => {\n const dialog = useDialog();\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n const labelledBy = dialog.titleId.value;\n const describedBy = dialog.descriptionId.value;\n\n useEffect(() => {\n if (!open) return;\n const panel = panelRef.current;\n if (!panel) return;\n return trapFocus(panel);\n }, [open]);\n\n return {\n panelRef,\n labelledBy,\n describedBy,\n };\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { isPointerWithinModalDialogPanelSlop } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"./Dialog\";\nimport { DialogClose } from \"./DialogClose\";\nimport { useModalPanelA11y } from \"./useModalPanelA11y\";\n\n/**\n * `fixed inset-0` can miss edge pixels vs full-viewport overlays; explicit `100vw` / `100vh`\n * keeps the backdrop flush with the visual viewport.\n */\nexport const dialogViewportBleedClass =\n \"fixed left-0 top-0 h-screen min-h-[100dvh] w-screen min-w-[100vw]\";\n\nconst modalOverlayClass = [\n dialogViewportBleedClass,\n \"z-40 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-in fade-out\",\n].join(\" \");\n\nconst modalPanelBase = [\n \"fixed left-1/2 top-1/2 z-50 grid w-full max-w-[calc(100vw-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg outline-none\",\n \"rounded-lg sm:max-w-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards\",\n \"fade-in zoom-in-95 fade-out zoom-out-95 duration-200\",\n \"max-h-[calc(100dvh-2rem)] overflow-y-auto overflow-x-hidden\",\n].join(\" \");\n\nexport type DialogContentPresentation = \"modal\" | \"slot\";\n\nexport type DialogContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n forceMount?: boolean;\n /**\n * `modal` — built-in overlay + centered panel + optional corner close.\n * `slot` — one portaled element only; use when **you** provide overlay + panel (legacy fullscreen `DialogContent` pattern with `fixed inset-0 …`).\n */\n presentation?: DialogContentPresentation;\n showCloseButton?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\n/**\n * Renders dialog body in a portal.\n *\n * - **modal (default):** Backdrop + centered panel; use `class` only for sizing (e.g. `sm:max-w-sm`).\n * - **slot:** Single root node — **required** for legacy/custom layouts that already implement `fixed inset-0` overlay + inner card (otherwise you stack two modals).\n */\nexport const DialogContent = ({\n forceMount = false,\n presentation = \"modal\",\n showCloseButton = true,\n class: className,\n children,\n onKeyDown,\n \"data-slot\": dataSlot = \"dialog-content\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: DialogContentProps) => {\n const dialog = useDialog();\n const isOpen = dialog.open.value;\n const { panelRef, labelledBy, describedBy } = useModalPanelA11y(isOpen || forceMount);\n if (!isOpen && !forceMount) return null;\n\n const state = isOpen ? \"open\" : \"closed\";\n const modalA11y = {\n \"aria-labelledby\": ariaLabelledBy ?? labelledBy,\n \"aria-describedby\": ariaDescribedBy ?? describedBy,\n };\n\n const handleKeyDown = (event: JSX.TargetedKeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n dialog.setOpen(false);\n }\n onKeyDown?.(event);\n };\n\n if (presentation === \"slot\") {\n const content = (\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-slot={dataSlot}\n data-kamod-root-dismissible=\"\"\n data-state={state}\n {...modalA11y}\n {...rest}\n onKeyDown={handleKeyDown}\n class={cn(className as string | undefined)}\n >\n {children}\n </div>\n );\n\n if (typeof document === \"undefined\") return content;\n return createPortal(content, document.body);\n }\n\n const tree = (\n <>\n <div\n aria-hidden=\"true\"\n data-slot=\"dialog-overlay\"\n data-state={state}\n class={modalOverlayClass}\n onPointerDown={(event) => {\n if (event.target !== event.currentTarget) return;\n if (isPointerWithinModalDialogPanelSlop(event)) return;\n dialog.setOpen(false);\n }}\n />\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-slot={dataSlot}\n data-state={state}\n {...rest}\n {...modalA11y}\n onKeyDown={handleKeyDown}\n class={cn(modalPanelBase, className as string | undefined)}\n >\n {showCloseButton ? (\n <DialogClose\n aria-label=\"Close\"\n data-slot=\"dialog-close\"\n class={cn(\n \"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n \"disabled:pointer-events-none\",\n )}\n >\n <span class=\"sr-only\">Close</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-4\"\n aria-hidden\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </DialogClose>\n ) : null}\n {children}\n </div>\n </>\n );\n\n if (typeof document === \"undefined\") return tree;\n return createPortal(tree, document.body);\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useLayoutEffect, useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"./Dialog\";\n\nconst nextDescriptionId = createIdFactory(\"dialog-description\");\n\nexport type DialogDescriptionProps = JSX.HTMLAttributes<HTMLParagraphElement> & {\n children?: ComponentChildren;\n};\n\nexport const DialogDescription = ({\n class: className,\n children,\n id: idProp,\n ...rest\n}: DialogDescriptionProps) => {\n const dialog = useDialog();\n const id = useMemo(() => {\n if (typeof idProp === \"string\") return idProp;\n return nextDescriptionId();\n }, [idProp]);\n\n useLayoutEffect(() => {\n dialog.descriptionId.value = id;\n return () => {\n if (dialog.descriptionId.value === id) {\n dialog.descriptionId.value = undefined;\n }\n };\n }, [dialog.descriptionId, id]);\n\n return (\n <p\n data-slot=\"dialog-description\"\n id={id}\n class={cn(\"text-muted-foreground text-sm\", className)}\n {...rest}\n >\n {children}\n </p>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useLayoutEffect, useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"./Dialog\";\n\nconst nextTitleId = createIdFactory(\"dialog-title\");\n\nexport type DialogTitleProps = JSX.HTMLAttributes<HTMLHeadingElement> & {\n children?: ComponentChildren;\n};\n\nexport const DialogTitle = ({\n class: className,\n children,\n id: idProp,\n ...rest\n}: DialogTitleProps) => {\n const dialog = useDialog();\n const id = useMemo(() => {\n if (typeof idProp === \"string\") return idProp;\n return nextTitleId();\n }, [idProp]);\n\n useLayoutEffect(() => {\n dialog.titleId.value = id;\n return () => {\n if (dialog.titleId.value === id) {\n dialog.titleId.value = undefined;\n }\n };\n }, [dialog.titleId, id]);\n\n return (\n <h2\n data-slot=\"dialog-title\"\n id={id}\n class={cn(\"text-lg leading-none font-semibold tracking-tight\", className)}\n {...rest}\n >\n {children}\n </h2>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { useDialog } from \"./Dialog\";\n\nexport type DialogTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const DialogTrigger = ({\n asChild = false,\n children,\n onClick,\n onPointerDown,\n ref: outerRef,\n \"data-slot\": dataSlot = \"dialog-trigger\",\n ...rest\n}: DialogTriggerProps) => {\n const dialog = useDialog();\n\n const openDialog = () => {\n dialog.setOpen(true);\n };\n\n const handlePointerDown = (event: JSX.TargetedPointerEvent<HTMLElement>) => {\n onPointerDown?.(event as JSX.TargetedPointerEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n if (event.button === 0) {\n openDialog();\n }\n };\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n openDialog();\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n onPointerDown?: (event: JSX.TargetedPointerEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"aria-expanded\": dialog.open.value,\n \"data-slot\": dataSlot,\n onPointerDown: (event: JSX.TargetedPointerEvent<HTMLElement>) => {\n childProps.onPointerDown?.(event);\n handlePointerDown(event);\n },\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n dialog.triggerRef.current = node;\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n dialog.triggerRef.current = node;\n callRef(outerRef, node);\n }}\n {...rest}\n type=\"button\"\n data-slot={dataSlot}\n aria-expanded={dialog.open.value}\n onPointerDown={(event) => {\n if (event.button === 0) {\n openDialog();\n }\n onPointerDown?.(event);\n }}\n onClick={(event) => {\n openDialog();\n onClick?.(event);\n }}\n >\n {children}\n </button>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/dialog/Dialog.tsx","../src/components/dialog/DialogClose.tsx","../src/components/dialog/useModalPanelA11y.ts","../src/components/dialog/DialogContent.tsx","../src/components/dialog/DialogDescription.tsx","../src/components/dialog/DialogTitle.tsx","../src/components/dialog/DialogTrigger.tsx"],"names":["jsx","useRef","useEffect","useMemo","useLayoutEffect","callRef","isValidElement","cloneElement"],"mappings":"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","file":"chunk-HHLQYMPT.js","sourcesContent":["import { type Signal, signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createDismissableLayer } from \"../../lib/interactive\";\nimport { createControllableSignal } from \"../../lib/signals\";\n\nconst SCROLL_LOCK_COUNT_ATTR = \"data-kamod-scroll-lock-count\";\nconst SCROLL_LOCK_BODY_OVERFLOW_ATTR = \"data-kamod-scroll-lock-body-overflow\";\nconst SCROLL_LOCK_HTML_OVERFLOW_ATTR = \"data-kamod-scroll-lock-html-overflow\";\nconst SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR = \"data-kamod-scroll-lock-body-padding-right\";\nconst SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR = \"data-kamod-scroll-lock-html-scrollbar-gutter\";\n\nconst lockDocumentScroll = () => {\n const body = document.body;\n const html = document.documentElement;\n const lockCount = Number.parseInt(body.getAttribute(SCROLL_LOCK_COUNT_ATTR) ?? \"0\", 10);\n\n if (lockCount === 0) {\n body.setAttribute(SCROLL_LOCK_BODY_OVERFLOW_ATTR, body.style.overflow);\n body.setAttribute(SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR, body.style.paddingRight);\n html.setAttribute(SCROLL_LOCK_HTML_OVERFLOW_ATTR, html.style.overflow);\n html.setAttribute(SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR, html.style.scrollbarGutter);\n\n const gutter = getComputedStyle(html).scrollbarGutter;\n const viewportUsesStableGutter = gutter === \"stable\" || gutter === \"stable both-edges\";\n\n if (viewportUsesStableGutter) {\n // Stylesheet `html { scrollbar-gutter: stable }` already reserves scrollbar width; do not\n // force `auto` or add body padding-right (that combo reintroduces the header “jump”).\n html.style.setProperty(\"--kamod-scroll-lock-gutter\", \"0px\");\n } else {\n // If the page does not use stable gutter, measure scrollbar width and pad like Radix/shadcn.\n html.style.scrollbarGutter = \"auto\";\n void html.offsetHeight;\n\n const scrollbarWidth = Math.max(0, window.innerWidth - document.documentElement.clientWidth);\n html.style.setProperty(\"--kamod-scroll-lock-gutter\", `${scrollbarWidth}px`);\n\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n\n html.style.overflow = \"hidden\";\n body.style.overflow = \"hidden\";\n html.setAttribute(\"data-kamod-scroll-lock\", \"\");\n }\n\n body.setAttribute(SCROLL_LOCK_COUNT_ATTR, String(lockCount + 1));\n\n return () => {\n const currentCount = Number.parseInt(body.getAttribute(SCROLL_LOCK_COUNT_ATTR) ?? \"0\", 10);\n const nextCount = Math.max(0, currentCount - 1);\n\n if (nextCount > 0) {\n body.setAttribute(SCROLL_LOCK_COUNT_ATTR, String(nextCount));\n return;\n }\n\n const previousBodyOverflow = body.getAttribute(SCROLL_LOCK_BODY_OVERFLOW_ATTR) ?? \"\";\n const previousHtmlOverflow = html.getAttribute(SCROLL_LOCK_HTML_OVERFLOW_ATTR) ?? \"\";\n const previousBodyPaddingRight = body.getAttribute(SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR) ?? \"\";\n const previousHtmlScrollbarGutter =\n html.getAttribute(SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR) ?? \"\";\n\n body.style.overflow = previousBodyOverflow;\n body.style.paddingRight = previousBodyPaddingRight;\n html.style.overflow = previousHtmlOverflow;\n if (previousHtmlScrollbarGutter === \"\") {\n html.style.removeProperty(\"scrollbar-gutter\");\n } else {\n html.style.scrollbarGutter = previousHtmlScrollbarGutter;\n }\n html.style.removeProperty(\"--kamod-scroll-lock-gutter\");\n html.removeAttribute(\"data-kamod-scroll-lock\");\n body.removeAttribute(SCROLL_LOCK_COUNT_ATTR);\n body.removeAttribute(SCROLL_LOCK_BODY_OVERFLOW_ATTR);\n body.removeAttribute(SCROLL_LOCK_BODY_PADDING_RIGHT_ATTR);\n html.removeAttribute(SCROLL_LOCK_HTML_OVERFLOW_ATTR);\n html.removeAttribute(SCROLL_LOCK_HTML_SCROLLBAR_GUTTER_ATTR);\n };\n};\n\nexport type DialogContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n setOpen: (next: boolean) => void;\n triggerRef: { current: HTMLElement | null };\n titleId: Signal<string | undefined>;\n descriptionId: Signal<string | undefined>;\n};\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nexport const useDialog = () => {\n const context = useContext(DialogContext);\n if (!context) throw new Error(\"Dialog subcomponents must be used within Dialog\");\n return context;\n};\n\nexport type DialogProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** When true, locks document scroll while open (shadcn default). */\n lockBodyScroll?: boolean;\n children?: ComponentChildren;\n};\n\nexport const Dialog = ({\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n lockBodyScroll = true,\n children,\n ...rest\n}: DialogProps) => {\n const onOpenChangeRef = useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useMemo(() => signal<string | undefined>(undefined), []);\n const descriptionId = useMemo(() => signal<string | undefined>(undefined), []);\n\n const controllable = useMemo(\n () =>\n createControllableSignal<boolean>({\n value: openProp,\n defaultValue: defaultOpen,\n onChange: (next) => onOpenChangeRef.current?.(next),\n }),\n [],\n );\n const open = controllable.state;\n\n // Controlled mode: keep the internal signal in sync before paint. If we only\n // sync in useEffect, the first commit can render DialogContent with open=false\n // while openProp is already true (portal stays unmounted / dismiss layer races).\n if (openProp !== undefined && open.value !== openProp) {\n open.value = openProp;\n }\n\n const setOpen = (next: boolean) => {\n const wasOpen = open.value;\n controllable.setState(next);\n if (wasOpen && !next) {\n const trigger = triggerRef.current;\n if (trigger && typeof trigger.focus === \"function\") {\n trigger.focus();\n }\n }\n };\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => open.value,\n onDismiss: () => {\n setOpen(false);\n },\n });\n return () => layer.dispose();\n }, []);\n\n useEffect(() => {\n if (!lockBodyScroll || typeof document === \"undefined\") return;\n if (!open.value) return;\n return lockDocumentScroll();\n }, [lockBodyScroll, open.value]);\n\n return (\n <DialogContext.Provider value={{ open, setOpen, triggerRef, titleId, descriptionId }}>\n <div ref={rootRef} data-slot=\"dialog\" data-state={open.value ? \"open\" : \"closed\"} {...rest}>\n {children}\n </div>\n </DialogContext.Provider>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { useDialog } from \"./Dialog\";\n\nexport type DialogCloseProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const DialogClose = ({\n asChild = false,\n children,\n onClick,\n ref: outerRef,\n \"data-slot\": dataSlot = \"dialog-close\",\n ...rest\n}: DialogCloseProps) => {\n const dialog = useDialog();\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n dialog.setOpen(false);\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"data-slot\": dataSlot,\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n callRef(outerRef, node);\n }}\n type=\"button\"\n data-slot={dataSlot}\n onClick={(event) => handleClick(event as unknown as JSX.TargetedMouseEvent<HTMLElement>)}\n {...rest}\n >\n {children}\n </button>\n );\n};\n","import { useEffect, useRef } from \"preact/hooks\";\nimport { trapFocus } from \"../../lib/interactive\";\nimport { useDialog } from \"./Dialog\";\n\nexport const useModalPanelA11y = (open: boolean) => {\n const dialog = useDialog();\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n const labelledBy = dialog.titleId.value;\n const describedBy = dialog.descriptionId.value;\n\n useEffect(() => {\n if (!open) return;\n const panel = panelRef.current;\n if (!panel) return;\n return trapFocus(panel);\n }, [open]);\n\n return {\n panelRef,\n labelledBy,\n describedBy,\n };\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { createPortal } from \"../../lib/createPortal\";\nimport { isPointerWithinModalDialogPanelSlop } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"./Dialog\";\nimport { DialogClose } from \"./DialogClose\";\nimport { useModalPanelA11y } from \"./useModalPanelA11y\";\n\n/**\n * `fixed inset-0` can miss edge pixels vs full-viewport overlays; explicit `100vw` / `100vh`\n * keeps the backdrop flush with the visual viewport.\n */\nexport const dialogViewportBleedClass =\n \"fixed left-0 top-0 h-screen min-h-[100dvh] w-screen min-w-[100vw]\";\n\nconst modalOverlayClass = [\n dialogViewportBleedClass,\n \"z-40 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-in fade-out\",\n].join(\" \");\n\nconst modalPanelBase = [\n \"fixed left-1/2 top-1/2 z-50 grid w-full max-w-[calc(100vw-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg outline-none\",\n \"rounded-lg sm:max-w-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards\",\n \"fade-in zoom-in-95 fade-out zoom-out-95 duration-200\",\n \"max-h-[calc(100dvh-2rem)] overflow-y-auto overflow-x-hidden\",\n].join(\" \");\n\nexport type DialogContentPresentation = \"modal\" | \"slot\";\n\nexport type DialogContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n forceMount?: boolean;\n /**\n * `modal` — built-in overlay + centered panel + optional corner close.\n * `slot` — one portaled element only; use when **you** provide overlay + panel (legacy fullscreen `DialogContent` pattern with `fixed inset-0 …`).\n */\n presentation?: DialogContentPresentation;\n showCloseButton?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\n/**\n * Renders dialog body in a portal.\n *\n * - **modal (default):** Backdrop + centered panel; use `class` only for sizing (e.g. `sm:max-w-sm`).\n * - **slot:** Single root node — **required** for legacy/custom layouts that already implement `fixed inset-0` overlay + inner card (otherwise you stack two modals).\n */\nexport const DialogContent = ({\n forceMount = false,\n presentation = \"modal\",\n showCloseButton = true,\n class: className,\n children,\n onKeyDown,\n \"data-slot\": dataSlot = \"dialog-content\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n}: DialogContentProps) => {\n const dialog = useDialog();\n const isOpen = dialog.open.value;\n const { panelRef, labelledBy, describedBy } = useModalPanelA11y(isOpen || forceMount);\n if (!isOpen && !forceMount) return null;\n\n const state = isOpen ? \"open\" : \"closed\";\n const modalA11y = {\n \"aria-labelledby\": ariaLabelledBy ?? labelledBy,\n \"aria-describedby\": ariaDescribedBy ?? describedBy,\n };\n\n const handleKeyDown = (event: JSX.TargetedKeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n dialog.setOpen(false);\n }\n onKeyDown?.(event);\n };\n\n if (presentation === \"slot\") {\n const content = (\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-slot={dataSlot}\n data-kamod-root-dismissible=\"\"\n data-state={state}\n {...modalA11y}\n {...rest}\n onKeyDown={handleKeyDown}\n class={cn(className as string | undefined)}\n >\n {children}\n </div>\n );\n\n if (typeof document === \"undefined\") return content;\n return createPortal(content, document.body);\n }\n\n const tree = (\n <>\n <div\n aria-hidden=\"true\"\n data-slot=\"dialog-overlay\"\n data-state={state}\n class={modalOverlayClass}\n onPointerDown={(event) => {\n if (event.target !== event.currentTarget) return;\n if (isPointerWithinModalDialogPanelSlop(event)) return;\n dialog.setOpen(false);\n }}\n />\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-slot={dataSlot}\n data-state={state}\n {...rest}\n {...modalA11y}\n onKeyDown={handleKeyDown}\n class={cn(modalPanelBase, className as string | undefined)}\n >\n {showCloseButton ? (\n <DialogClose\n aria-label=\"Close\"\n data-slot=\"dialog-close\"\n class={cn(\n \"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n \"disabled:pointer-events-none\",\n )}\n >\n <span class=\"sr-only\">Close</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-4\"\n aria-hidden\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </DialogClose>\n ) : null}\n {children}\n </div>\n </>\n );\n\n if (typeof document === \"undefined\") return tree;\n return createPortal(tree, document.body);\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useLayoutEffect, useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"./Dialog\";\n\nconst nextDescriptionId = createIdFactory(\"dialog-description\");\n\nexport type DialogDescriptionProps = JSX.HTMLAttributes<HTMLParagraphElement> & {\n children?: ComponentChildren;\n};\n\nexport const DialogDescription = ({\n class: className,\n children,\n id: idProp,\n ...rest\n}: DialogDescriptionProps) => {\n const dialog = useDialog();\n const id = useMemo(() => {\n if (typeof idProp === \"string\") return idProp;\n return nextDescriptionId();\n }, [idProp]);\n\n useLayoutEffect(() => {\n dialog.descriptionId.value = id;\n return () => {\n if (dialog.descriptionId.value === id) {\n dialog.descriptionId.value = undefined;\n }\n };\n }, [dialog.descriptionId, id]);\n\n return (\n <p\n data-slot=\"dialog-description\"\n id={id}\n class={cn(\"text-muted-foreground text-sm\", className)}\n {...rest}\n >\n {children}\n </p>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useLayoutEffect, useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useDialog } from \"./Dialog\";\n\nconst nextTitleId = createIdFactory(\"dialog-title\");\n\nexport type DialogTitleProps = JSX.HTMLAttributes<HTMLHeadingElement> & {\n children?: ComponentChildren;\n};\n\nexport const DialogTitle = ({\n class: className,\n children,\n id: idProp,\n ...rest\n}: DialogTitleProps) => {\n const dialog = useDialog();\n const id = useMemo(() => {\n if (typeof idProp === \"string\") return idProp;\n return nextTitleId();\n }, [idProp]);\n\n useLayoutEffect(() => {\n dialog.titleId.value = id;\n return () => {\n if (dialog.titleId.value === id) {\n dialog.titleId.value = undefined;\n }\n };\n }, [dialog.titleId, id]);\n\n return (\n <h2\n data-slot=\"dialog-title\"\n id={id}\n class={cn(\"text-lg leading-none font-semibold tracking-tight\", className)}\n {...rest}\n >\n {children}\n </h2>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { useDialog } from \"./Dialog\";\n\nexport type DialogTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n \"data-slot\"?: string;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const DialogTrigger = ({\n asChild = false,\n children,\n onClick,\n onPointerDown,\n ref: outerRef,\n \"data-slot\": dataSlot = \"dialog-trigger\",\n ...rest\n}: DialogTriggerProps) => {\n const dialog = useDialog();\n\n const openDialog = () => {\n dialog.setOpen(true);\n };\n\n const handlePointerDown = (event: JSX.TargetedPointerEvent<HTMLElement>) => {\n onPointerDown?.(event as JSX.TargetedPointerEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n if (event.button === 0) {\n openDialog();\n }\n };\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n if (event.defaultPrevented) return;\n openDialog();\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n onPointerDown?: (event: JSX.TargetedPointerEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"aria-expanded\": dialog.open.value,\n \"data-slot\": dataSlot,\n onPointerDown: (event: JSX.TargetedPointerEvent<HTMLElement>) => {\n childProps.onPointerDown?.(event);\n handlePointerDown(event);\n },\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n dialog.triggerRef.current = node;\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n dialog.triggerRef.current = node;\n callRef(outerRef, node);\n }}\n {...rest}\n type=\"button\"\n data-slot={dataSlot}\n aria-expanded={dialog.open.value}\n onPointerDown={(event) => {\n if (event.button === 0) {\n openDialog();\n }\n onPointerDown?.(event);\n }}\n onClick={(event) => {\n openDialog();\n onClick?.(event);\n }}\n >\n {children}\n </button>\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { SheetFooter, SheetHeader, SheetContent, Sheet } from './chunk-JKXSX67K.js';
2
- import { DialogClose, DialogDescription, DialogTitle, DialogTrigger } from './chunk-4BJJOHZT.js';
1
+ import { SheetFooter, SheetHeader, SheetContent, Sheet } from './chunk-EMUPVA2F.js';
2
+ import { DialogClose, DialogDescription, DialogTitle, DialogTrigger } from './chunk-HHLQYMPT.js';
3
3
 
4
4
  // src/components/sheet/index.ts
5
5
  var sheet_default = {
@@ -14,5 +14,5 @@ var sheet_default = {
14
14
  };
15
15
 
16
16
  export { sheet_default };
17
- //# sourceMappingURL=chunk-YJGECAOZ.js.map
18
- //# sourceMappingURL=chunk-YJGECAOZ.js.map
17
+ //# sourceMappingURL=chunk-IQH3XSOI.js.map
18
+ //# sourceMappingURL=chunk-IQH3XSOI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/sheet/index.ts"],"names":[],"mappings":";;;;AAoBA,IAAO,aAAA,GAAQ;AAAA,EACb,IAAA,EAAM,KAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAO,WAAA;AAAA,EACP,WAAA,EAAa,iBAAA;AAAA,EACb,KAAA,EAAO;AACT","file":"chunk-YJGECAOZ.js","sourcesContent":["import { Sheet } from \"./Sheet\";\nimport { SheetClose } from \"./SheetClose\";\nimport { SheetContent } from \"./SheetContent\";\nimport { SheetDescription } from \"./SheetDescription\";\nimport { SheetFooter } from \"./SheetFooter\";\nimport { SheetHeader } from \"./SheetHeader\";\nimport { SheetTitle } from \"./SheetTitle\";\nimport { SheetTrigger } from \"./SheetTrigger\";\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n\nexport default {\n Root: Sheet,\n Trigger: SheetTrigger,\n Content: SheetContent,\n Header: SheetHeader,\n Footer: SheetFooter,\n Title: SheetTitle,\n Description: SheetDescription,\n Close: SheetClose,\n};\n"]}
1
+ {"version":3,"sources":["../src/components/sheet/index.ts"],"names":[],"mappings":";;;;AAoBA,IAAO,aAAA,GAAQ;AAAA,EACb,IAAA,EAAM,KAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAO,WAAA;AAAA,EACP,WAAA,EAAa,iBAAA;AAAA,EACb,KAAA,EAAO;AACT","file":"chunk-IQH3XSOI.js","sourcesContent":["import { Sheet } from \"./Sheet\";\nimport { SheetClose } from \"./SheetClose\";\nimport { SheetContent } from \"./SheetContent\";\nimport { SheetDescription } from \"./SheetDescription\";\nimport { SheetFooter } from \"./SheetFooter\";\nimport { SheetHeader } from \"./SheetHeader\";\nimport { SheetTitle } from \"./SheetTitle\";\nimport { SheetTrigger } from \"./SheetTrigger\";\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n\nexport default {\n Root: Sheet,\n Trigger: SheetTrigger,\n Content: SheetContent,\n Header: SheetHeader,\n Footer: SheetFooter,\n Title: SheetTitle,\n Description: SheetDescription,\n Close: SheetClose,\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { DialogFooter, DialogHeader } from './chunk-5Q4RBIMZ.js';
2
- import { Dialog, DialogClose, DialogContent, dialogViewportBleedClass, DialogDescription, DialogTitle, DialogTrigger } from './chunk-4BJJOHZT.js';
2
+ import { Dialog, DialogClose, DialogContent, dialogViewportBleedClass, DialogDescription, DialogTitle, DialogTrigger } from './chunk-HHLQYMPT.js';
3
3
  import { button } from './chunk-5FBD2NTR.js';
4
4
  import { cn } from './chunk-MS2ZNYCJ.js';
5
5
  import { jsx } from 'preact/jsx-runtime';
@@ -167,5 +167,5 @@ var alert_dialog_default = {
167
167
  };
168
168
 
169
169
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogTitle, AlertDialogTrigger, alert_dialog_default };
170
- //# sourceMappingURL=chunk-LFJF3M6M.js.map
171
- //# sourceMappingURL=chunk-LFJF3M6M.js.map
170
+ //# sourceMappingURL=chunk-JSHUWI3C.js.map
171
+ //# sourceMappingURL=chunk-JSHUWI3C.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/alert-dialog/AlertDialog.tsx","../src/components/alert-dialog/AlertDialogAction.tsx","../src/components/alert-dialog/AlertDialogCancel.tsx","../src/components/alert-dialog/AlertDialogContent.tsx","../src/components/alert-dialog/AlertDialogDescription.tsx","../src/components/alert-dialog/AlertDialogFooter.tsx","../src/components/alert-dialog/AlertDialogHeader.tsx","../src/components/alert-dialog/AlertDialogMedia.tsx","../src/components/alert-dialog/AlertDialogTitle.tsx","../src/components/alert-dialog/AlertDialogTrigger.tsx","../src/components/alert-dialog/index.ts"],"names":["jsx"],"mappings":"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","file":"chunk-LFJF3M6M.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, type DialogProps } from \"../dialog/Dialog\";\n\nexport type AlertDialogProps = DialogProps & { children?: ComponentChildren };\n\nexport const AlertDialog = ({ children, ...rest }: AlertDialogProps) => (\n <Dialog data-slot=\"alert-dialog\" lockBodyScroll {...rest}>\n {children}\n </Dialog>\n);\n","import type { ComponentChildren } from \"preact\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { button } from \"../button/Button\";\nimport { DialogClose, type DialogCloseProps } from \"../dialog/DialogClose\";\n\nexport type AlertDialogActionProps = DialogCloseProps & {\n variant?: VariantProps<typeof button>[\"variant\"];\n children?: ComponentChildren;\n};\n\nexport const AlertDialogAction = ({\n variant = \"default\",\n class: className,\n children,\n ...rest\n}: AlertDialogActionProps) => (\n <DialogClose\n class={button({ variant, class: cn(\"w-full sm:w-auto\", className as string | undefined) })}\n data-slot=\"alert-dialog-action\"\n {...rest}\n >\n {children}\n </DialogClose>\n);\n","import type { ComponentChildren } from \"preact\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { button } from \"../button/Button\";\nimport { DialogClose, type DialogCloseProps } from \"../dialog/DialogClose\";\n\nexport type AlertDialogCancelProps = DialogCloseProps & {\n variant?: VariantProps<typeof button>[\"variant\"];\n children?: ComponentChildren;\n};\n\nexport const AlertDialogCancel = ({\n variant = \"outline\",\n class: className,\n children,\n ...rest\n}: AlertDialogCancelProps) => (\n <DialogClose\n class={button({ variant, class: cn(\"w-full sm:w-auto\", className as string | undefined) })}\n data-slot=\"alert-dialog-cancel\"\n {...rest}\n >\n {children}\n </DialogClose>\n);\n","import type { ComponentChildren } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DialogContent,\n type DialogContentProps,\n dialogViewportBleedClass,\n} from \"../dialog/DialogContent\";\n\nexport type AlertDialogContentSize = \"default\" | \"sm\";\n\nexport type AlertDialogContentProps = DialogContentProps & {\n /** `sm` — narrower panel (shadcn parity). */\n size?: AlertDialogContentSize;\n children?: ComponentChildren;\n};\n\nexport const AlertDialogContent = ({\n size = \"default\",\n class: className,\n children,\n ...rest\n}: AlertDialogContentProps) => (\n // presentation=\"slot\": we own the full-screen flex overlay + inner panel; default \"modal\" would add a second backdrop.\n <DialogContent\n presentation=\"slot\"\n class={cn(\n dialogViewportBleedClass,\n \"z-50 flex items-center justify-center bg-black/50 p-3 sm:p-6 pointer-events-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-in fade-out\",\n )}\n data-slot=\"alert-dialog-content\"\n {...rest}\n >\n <div\n class={cn(\n \"data-open:animate-in relative z-[1] grid min-h-0 min-w-0 w-full max-w-[calc(100svw-1.5rem)] max-h-[calc(100dvh-1.5rem)] overflow-y-auto overflow-x-hidden rounded-xl border bg-background shadow-lg pointer-events-auto\",\n size === \"sm\"\n ? \"gap-3 p-4 sm:max-w-sm sm:max-h-[calc(100dvh-3rem)] sm:p-4\"\n : \"gap-4 p-4 sm:max-w-[32rem] sm:max-h-[calc(100dvh-3rem)] sm:p-6\",\n className,\n )}\n data-slot=\"alert-dialog-panel\"\n data-size={size}\n data-open=\"true\"\n >\n {children}\n </div>\n </DialogContent>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogDescription } from \"../dialog/DialogDescription\";\n\nexport type AlertDialogDescriptionProps = JSX.HTMLAttributes<HTMLParagraphElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogDescription = ({\n class: className,\n children,\n ...rest\n}: AlertDialogDescriptionProps) => (\n <DialogDescription\n class={cn(\"text-muted-foreground text-sm leading-relaxed break-words\", className)}\n data-slot=\"alert-dialog-description\"\n {...rest}\n >\n {children}\n </DialogDescription>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogFooter } from \"../dialog/DialogFooter\";\n\nexport type AlertDialogFooterProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogFooter = ({\n class: className,\n children,\n ...rest\n}: AlertDialogFooterProps) => (\n <DialogFooter\n class={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n data-slot=\"alert-dialog-footer\"\n {...rest}\n >\n {children}\n </DialogFooter>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogHeader } from \"../dialog/DialogHeader\";\n\nexport type AlertDialogHeaderProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogHeader = ({\n class: className,\n children,\n ...rest\n}: AlertDialogHeaderProps) => (\n <DialogHeader\n class={cn(\"grid gap-2 text-center sm:text-left\", className)}\n data-slot=\"alert-dialog-header\"\n {...rest}\n >\n {children}\n </DialogHeader>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type AlertDialogMediaProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\n/** Optional icon or image slot above the title (shadcn AlertDialogMedia pattern). */\nexport const AlertDialogMedia = ({\n class: className,\n children,\n ...rest\n}: AlertDialogMediaProps) => (\n <div\n data-slot=\"alert-dialog-media\"\n class={cn(\n \"mx-auto flex size-12 shrink-0 items-center justify-center rounded-full bg-muted text-foreground\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogTitle } from \"../dialog/DialogTitle\";\n\nexport type AlertDialogTitleProps = JSX.HTMLAttributes<HTMLHeadingElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogTitle = ({\n class: className,\n children,\n ...rest\n}: AlertDialogTitleProps) => (\n <DialogTitle\n class={cn(\"text-lg font-semibold break-words\", className)}\n data-slot=\"alert-dialog-title\"\n {...rest}\n >\n {children}\n </DialogTitle>\n);\n","import type { ComponentChildren } from \"preact\";\nimport { button } from \"../button/Button\";\nimport { DialogTrigger, type DialogTriggerProps } from \"../dialog/DialogTrigger\";\n\nexport type AlertDialogTriggerProps = DialogTriggerProps & { children?: ComponentChildren };\n\nexport const AlertDialogTrigger = ({\n asChild,\n class: className,\n children,\n ...rest\n}: AlertDialogTriggerProps) => (\n <DialogTrigger\n asChild={asChild}\n class={\n asChild ? className : button({ variant: \"outline\", class: className as string | undefined })\n }\n data-slot=\"alert-dialog-trigger\"\n {...rest}\n >\n {children}\n </DialogTrigger>\n);\n","import { AlertDialog } from \"./AlertDialog\";\nimport { AlertDialogAction } from \"./AlertDialogAction\";\nimport { AlertDialogCancel } from \"./AlertDialogCancel\";\nimport { AlertDialogContent } from \"./AlertDialogContent\";\nimport { AlertDialogDescription } from \"./AlertDialogDescription\";\nimport { AlertDialogFooter } from \"./AlertDialogFooter\";\nimport { AlertDialogHeader } from \"./AlertDialogHeader\";\nimport { AlertDialogMedia } from \"./AlertDialogMedia\";\nimport { AlertDialogTitle } from \"./AlertDialogTitle\";\nimport { AlertDialogTrigger } from \"./AlertDialogTrigger\";\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n\nexport default {\n Root: AlertDialog,\n Trigger: AlertDialogTrigger,\n Content: AlertDialogContent,\n Header: AlertDialogHeader,\n Footer: AlertDialogFooter,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Media: AlertDialogMedia,\n Cancel: AlertDialogCancel,\n Action: AlertDialogAction,\n};\n"]}
1
+ {"version":3,"sources":["../src/components/alert-dialog/AlertDialog.tsx","../src/components/alert-dialog/AlertDialogAction.tsx","../src/components/alert-dialog/AlertDialogCancel.tsx","../src/components/alert-dialog/AlertDialogContent.tsx","../src/components/alert-dialog/AlertDialogDescription.tsx","../src/components/alert-dialog/AlertDialogFooter.tsx","../src/components/alert-dialog/AlertDialogHeader.tsx","../src/components/alert-dialog/AlertDialogMedia.tsx","../src/components/alert-dialog/AlertDialogTitle.tsx","../src/components/alert-dialog/AlertDialogTrigger.tsx","../src/components/alert-dialog/index.ts"],"names":["jsx"],"mappings":"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","file":"chunk-JSHUWI3C.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, type DialogProps } from \"../dialog/Dialog\";\n\nexport type AlertDialogProps = DialogProps & { children?: ComponentChildren };\n\nexport const AlertDialog = ({ children, ...rest }: AlertDialogProps) => (\n <Dialog data-slot=\"alert-dialog\" lockBodyScroll {...rest}>\n {children}\n </Dialog>\n);\n","import type { ComponentChildren } from \"preact\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { button } from \"../button/Button\";\nimport { DialogClose, type DialogCloseProps } from \"../dialog/DialogClose\";\n\nexport type AlertDialogActionProps = DialogCloseProps & {\n variant?: VariantProps<typeof button>[\"variant\"];\n children?: ComponentChildren;\n};\n\nexport const AlertDialogAction = ({\n variant = \"default\",\n class: className,\n children,\n ...rest\n}: AlertDialogActionProps) => (\n <DialogClose\n class={button({ variant, class: cn(\"w-full sm:w-auto\", className as string | undefined) })}\n data-slot=\"alert-dialog-action\"\n {...rest}\n >\n {children}\n </DialogClose>\n);\n","import type { ComponentChildren } from \"preact\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { button } from \"../button/Button\";\nimport { DialogClose, type DialogCloseProps } from \"../dialog/DialogClose\";\n\nexport type AlertDialogCancelProps = DialogCloseProps & {\n variant?: VariantProps<typeof button>[\"variant\"];\n children?: ComponentChildren;\n};\n\nexport const AlertDialogCancel = ({\n variant = \"outline\",\n class: className,\n children,\n ...rest\n}: AlertDialogCancelProps) => (\n <DialogClose\n class={button({ variant, class: cn(\"w-full sm:w-auto\", className as string | undefined) })}\n data-slot=\"alert-dialog-cancel\"\n {...rest}\n >\n {children}\n </DialogClose>\n);\n","import type { ComponentChildren } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DialogContent,\n type DialogContentProps,\n dialogViewportBleedClass,\n} from \"../dialog/DialogContent\";\n\nexport type AlertDialogContentSize = \"default\" | \"sm\";\n\nexport type AlertDialogContentProps = DialogContentProps & {\n /** `sm` — narrower panel (shadcn parity). */\n size?: AlertDialogContentSize;\n children?: ComponentChildren;\n};\n\nexport const AlertDialogContent = ({\n size = \"default\",\n class: className,\n children,\n ...rest\n}: AlertDialogContentProps) => (\n // presentation=\"slot\": we own the full-screen flex overlay + inner panel; default \"modal\" would add a second backdrop.\n <DialogContent\n presentation=\"slot\"\n class={cn(\n dialogViewportBleedClass,\n \"z-50 flex items-center justify-center bg-black/50 p-3 sm:p-6 pointer-events-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-in fade-out\",\n )}\n data-slot=\"alert-dialog-content\"\n {...rest}\n >\n <div\n class={cn(\n \"data-open:animate-in relative z-[1] grid min-h-0 min-w-0 w-full max-w-[calc(100svw-1.5rem)] max-h-[calc(100dvh-1.5rem)] overflow-y-auto overflow-x-hidden rounded-xl border bg-background shadow-lg pointer-events-auto\",\n size === \"sm\"\n ? \"gap-3 p-4 sm:max-w-sm sm:max-h-[calc(100dvh-3rem)] sm:p-4\"\n : \"gap-4 p-4 sm:max-w-[32rem] sm:max-h-[calc(100dvh-3rem)] sm:p-6\",\n className,\n )}\n data-slot=\"alert-dialog-panel\"\n data-size={size}\n data-open=\"true\"\n >\n {children}\n </div>\n </DialogContent>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogDescription } from \"../dialog/DialogDescription\";\n\nexport type AlertDialogDescriptionProps = JSX.HTMLAttributes<HTMLParagraphElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogDescription = ({\n class: className,\n children,\n ...rest\n}: AlertDialogDescriptionProps) => (\n <DialogDescription\n class={cn(\"text-muted-foreground text-sm leading-relaxed break-words\", className)}\n data-slot=\"alert-dialog-description\"\n {...rest}\n >\n {children}\n </DialogDescription>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogFooter } from \"../dialog/DialogFooter\";\n\nexport type AlertDialogFooterProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogFooter = ({\n class: className,\n children,\n ...rest\n}: AlertDialogFooterProps) => (\n <DialogFooter\n class={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n data-slot=\"alert-dialog-footer\"\n {...rest}\n >\n {children}\n </DialogFooter>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogHeader } from \"../dialog/DialogHeader\";\n\nexport type AlertDialogHeaderProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogHeader = ({\n class: className,\n children,\n ...rest\n}: AlertDialogHeaderProps) => (\n <DialogHeader\n class={cn(\"grid gap-2 text-center sm:text-left\", className)}\n data-slot=\"alert-dialog-header\"\n {...rest}\n >\n {children}\n </DialogHeader>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type AlertDialogMediaProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\n/** Optional icon or image slot above the title (shadcn AlertDialogMedia pattern). */\nexport const AlertDialogMedia = ({\n class: className,\n children,\n ...rest\n}: AlertDialogMediaProps) => (\n <div\n data-slot=\"alert-dialog-media\"\n class={cn(\n \"mx-auto flex size-12 shrink-0 items-center justify-center rounded-full bg-muted text-foreground\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogTitle } from \"../dialog/DialogTitle\";\n\nexport type AlertDialogTitleProps = JSX.HTMLAttributes<HTMLHeadingElement> & {\n children?: ComponentChildren;\n};\n\nexport const AlertDialogTitle = ({\n class: className,\n children,\n ...rest\n}: AlertDialogTitleProps) => (\n <DialogTitle\n class={cn(\"text-lg font-semibold break-words\", className)}\n data-slot=\"alert-dialog-title\"\n {...rest}\n >\n {children}\n </DialogTitle>\n);\n","import type { ComponentChildren } from \"preact\";\nimport { button } from \"../button/Button\";\nimport { DialogTrigger, type DialogTriggerProps } from \"../dialog/DialogTrigger\";\n\nexport type AlertDialogTriggerProps = DialogTriggerProps & { children?: ComponentChildren };\n\nexport const AlertDialogTrigger = ({\n asChild,\n class: className,\n children,\n ...rest\n}: AlertDialogTriggerProps) => (\n <DialogTrigger\n asChild={asChild}\n class={\n asChild ? className : button({ variant: \"outline\", class: className as string | undefined })\n }\n data-slot=\"alert-dialog-trigger\"\n {...rest}\n >\n {children}\n </DialogTrigger>\n);\n","import { AlertDialog } from \"./AlertDialog\";\nimport { AlertDialogAction } from \"./AlertDialogAction\";\nimport { AlertDialogCancel } from \"./AlertDialogCancel\";\nimport { AlertDialogContent } from \"./AlertDialogContent\";\nimport { AlertDialogDescription } from \"./AlertDialogDescription\";\nimport { AlertDialogFooter } from \"./AlertDialogFooter\";\nimport { AlertDialogHeader } from \"./AlertDialogHeader\";\nimport { AlertDialogMedia } from \"./AlertDialogMedia\";\nimport { AlertDialogTitle } from \"./AlertDialogTitle\";\nimport { AlertDialogTrigger } from \"./AlertDialogTrigger\";\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n\nexport default {\n Root: AlertDialog,\n Trigger: AlertDialogTrigger,\n Content: AlertDialogContent,\n Header: AlertDialogHeader,\n Footer: AlertDialogFooter,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Media: AlertDialogMedia,\n Cancel: AlertDialogCancel,\n Action: AlertDialogAction,\n};\n"]}
@@ -278,5 +278,5 @@ var hover_card_default = {
278
278
  };
279
279
 
280
280
  export { HoverCard, HoverCardContent, HoverCardTrigger, hover_card_default };
281
- //# sourceMappingURL=chunk-2BQ54337.js.map
282
- //# sourceMappingURL=chunk-2BQ54337.js.map
281
+ //# sourceMappingURL=chunk-MJQ6R345.js.map
282
+ //# sourceMappingURL=chunk-MJQ6R345.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/hover-card/HoverCard.tsx","../src/components/hover-card/HoverCardContent.tsx","../src/components/hover-card/HoverCardTrigger.tsx","../src/components/hover-card/index.ts"],"names":["jsx","tv"],"mappings":"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","file":"chunk-2BQ54337.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useCallback, useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\n\nexport type HoverCardContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n openDelay: number;\n closeDelay: number;\n scheduleOpen: () => void;\n scheduleClose: () => void;\n /** Cancel pending timers and keep the card open (pointer entered content). */\n pinOpen: () => void;\n setOpenImmediate: (next: boolean) => void;\n};\n\nconst HoverCardContext = createContext<HoverCardContextValue | null>(null);\n\nexport const useHoverCard = () => {\n const context = useContext(HoverCardContext);\n if (!context) throw new Error(\"HoverCard subcomponents must be used within HoverCard\");\n return context;\n};\n\nexport type HoverCardProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n /** Delay before opening (ms). Radix default 700. */\n openDelay?: number;\n /** Delay before closing (ms). Radix default 300. */\n closeDelay?: number;\n children?: ComponentChildren;\n};\n\nexport const HoverCard = ({\n defaultOpen = false,\n openDelay = 700,\n closeDelay = 300,\n children,\n ...rest\n}: HoverCardProps) => {\n const open = useMemo(() => signal(defaultOpen), []);\n const openTimer = useRef<number | null>(null);\n const closeTimer = useRef<number | null>(null);\n\n const clearOpenTimer = useCallback(() => {\n if (openTimer.current !== null) {\n clearTimeout(openTimer.current);\n openTimer.current = null;\n }\n }, []);\n\n const clearCloseTimer = useCallback(() => {\n if (closeTimer.current !== null) {\n clearTimeout(closeTimer.current);\n closeTimer.current = null;\n }\n }, []);\n\n const setOpenImmediate = useCallback(\n (next: boolean) => {\n clearOpenTimer();\n clearCloseTimer();\n open.value = next;\n },\n [clearCloseTimer, clearOpenTimer, open],\n );\n\n const pinOpen = useCallback(() => {\n clearOpenTimer();\n clearCloseTimer();\n open.value = true;\n }, [clearCloseTimer, clearOpenTimer, open]);\n\n const scheduleOpen = useCallback(() => {\n clearCloseTimer();\n clearOpenTimer();\n openTimer.current = window.setTimeout(() => {\n openTimer.current = null;\n open.value = true;\n }, openDelay);\n }, [clearCloseTimer, clearOpenTimer, open, openDelay]);\n\n const scheduleClose = useCallback(() => {\n clearOpenTimer();\n clearCloseTimer();\n closeTimer.current = window.setTimeout(() => {\n closeTimer.current = null;\n open.value = false;\n }, closeDelay);\n }, [clearCloseTimer, clearOpenTimer, open, closeDelay]);\n\n useEffect(\n () => () => {\n clearOpenTimer();\n clearCloseTimer();\n },\n [clearCloseTimer, clearOpenTimer],\n );\n\n const value = useMemo(\n (): HoverCardContextValue => ({\n open,\n openDelay,\n closeDelay,\n scheduleOpen,\n scheduleClose,\n pinOpen,\n setOpenImmediate,\n }),\n [open, openDelay, closeDelay, scheduleOpen, scheduleClose, pinOpen, setOpenImmediate],\n );\n\n return (\n <HoverCardContext.Provider value={value}>\n <div\n data-slot=\"hover-card\"\n data-state={open.value ? \"open\" : \"closed\"}\n class=\"relative inline-flex\"\n {...rest}\n >\n {children}\n </div>\n </HoverCardContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { useHoverCard } from \"./HoverCard\";\n\nconst positionBySide = {\n top: \"bottom-full\",\n bottom: \"top-full\",\n left: \"right-full\",\n right: \"left-full\",\n} as const;\n\nconst alignByAxis = {\n vertical: {\n start: \"left-0\",\n center: \"left-1/2 -translate-x-1/2\",\n end: \"right-0\",\n },\n horizontal: {\n start: \"top-0\",\n center: \"top-1/2 -translate-y-1/2\",\n end: \"bottom-0\",\n },\n} as const;\n\nexport const hoverCardContent = tv({\n base: [\n \"bg-popover text-popover-foreground z-50 flex min-w-0 max-w-[calc(100vw-1.5rem)] flex-col gap-1 rounded-lg border p-3 text-sm shadow-md outline-none\",\n \"data-[state=open]:animate-in fade-in zoom-in-95\",\n \"absolute isolate\",\n ],\n variants: {\n side: {\n bottom: \"slide-in-from-top-2\",\n top: \"slide-in-from-bottom-2\",\n right: \"slide-in-from-left-2\",\n left: \"slide-in-from-right-2\",\n },\n },\n defaultVariants: {\n side: \"bottom\",\n },\n});\n\nexport type HoverCardContentProps = JSX.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof hoverCardContent> & {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n children?: ComponentChildren;\n };\n\nexport const HoverCardContent = ({\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n class: className,\n style,\n children,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: HoverCardContentProps) => {\n const { open, pinOpen, scheduleClose, setOpenImmediate } = useHoverCard();\n if (!open.value) return null;\n\n const isVertical = side === \"top\" || side === \"bottom\";\n const alignClass = isVertical ? alignByAxis.vertical[align] : alignByAxis.horizontal[align];\n const inlineStyle = typeof style === \"object\" && style !== null ? style : undefined;\n const offsetStyle: JSX.CSSProperties =\n side === \"bottom\"\n ? { marginTop: `${sideOffset}px` }\n : side === \"top\"\n ? { marginBottom: `${sideOffset}px` }\n : side === \"right\"\n ? { marginLeft: `${sideOffset}px` }\n : { marginRight: `${sideOffset}px` };\n\n return (\n <div\n data-slot=\"hover-card-content\"\n role=\"dialog\"\n aria-modal=\"false\"\n tabIndex={-1}\n data-side={side}\n data-align={align}\n data-state=\"open\"\n class={`${positionBySide[side]} ${alignClass} ${hoverCardContent({ side, class: className as string | undefined })}`}\n style={inlineStyle ? { ...offsetStyle, ...inlineStyle } : offsetStyle}\n onMouseEnter={(event) => {\n pinOpen();\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n scheduleClose();\n onMouseLeave?.(event);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setOpenImmediate(false);\n return;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { tv } from \"tailwind-variants\";\nimport { useHoverCard } from \"./HoverCard\";\n\nexport const hoverCardTrigger = tv({\n base: [\n \"border-input bg-background hover:bg-muted inline-flex items-center justify-center rounded-md border px-3 py-2 text-sm font-medium shadow-xs transition-colors\",\n \"outline-none focus-visible:ring-3 focus-visible:ring-ring/50\",\n ],\n});\n\nexport type HoverCardTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const HoverCardTrigger = ({\n asChild = false,\n class: className,\n children,\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n ref: outerRef,\n ...rest\n}: HoverCardTriggerProps) => {\n const { scheduleOpen, scheduleClose } = useHoverCard();\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onMouseEnter?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n onFocus?: (event: JSX.TargetedFocusEvent<HTMLElement>) => void;\n onBlur?: (event: JSX.TargetedFocusEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"data-slot\": \"hover-card-trigger\",\n onMouseEnter: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onMouseEnter?.(event);\n scheduleOpen();\n onMouseEnter?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n },\n onMouseLeave: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onMouseLeave?.(event);\n scheduleClose();\n onMouseLeave?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n },\n onFocus: (event: JSX.TargetedFocusEvent<HTMLElement>) => {\n childProps.onFocus?.(event);\n scheduleOpen();\n onFocus?.(event as JSX.TargetedFocusEvent<HTMLButtonElement>);\n },\n onBlur: (event: JSX.TargetedFocusEvent<HTMLElement>) => {\n childProps.onBlur?.(event);\n scheduleClose();\n onBlur?.(event as JSX.TargetedFocusEvent<HTMLButtonElement>);\n },\n ref: (node: HTMLElement | null) => {\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n callRef(outerRef, node);\n }}\n type=\"button\"\n data-slot=\"hover-card-trigger\"\n class={hoverCardTrigger({ class: className as string | undefined })}\n {...rest}\n onMouseEnter={(event) => {\n scheduleOpen();\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n scheduleClose();\n onMouseLeave?.(event);\n }}\n onFocus={(event) => {\n scheduleOpen();\n onFocus?.(event);\n }}\n onBlur={(event) => {\n scheduleClose();\n onBlur?.(event);\n }}\n >\n {children}\n </button>\n );\n};\n","import { HoverCard } from \"./HoverCard\";\nimport { HoverCardContent } from \"./HoverCardContent\";\nimport { HoverCardTrigger } from \"./HoverCardTrigger\";\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n\nexport default {\n Root: HoverCard,\n Trigger: HoverCardTrigger,\n Content: HoverCardContent,\n};\n"]}
1
+ {"version":3,"sources":["../src/components/hover-card/HoverCard.tsx","../src/components/hover-card/HoverCardContent.tsx","../src/components/hover-card/HoverCardTrigger.tsx","../src/components/hover-card/index.ts"],"names":["jsx","tv"],"mappings":"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","file":"chunk-MJQ6R345.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useCallback, useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\n\nexport type HoverCardContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n openDelay: number;\n closeDelay: number;\n scheduleOpen: () => void;\n scheduleClose: () => void;\n /** Cancel pending timers and keep the card open (pointer entered content). */\n pinOpen: () => void;\n setOpenImmediate: (next: boolean) => void;\n};\n\nconst HoverCardContext = createContext<HoverCardContextValue | null>(null);\n\nexport const useHoverCard = () => {\n const context = useContext(HoverCardContext);\n if (!context) throw new Error(\"HoverCard subcomponents must be used within HoverCard\");\n return context;\n};\n\nexport type HoverCardProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n /** Delay before opening (ms). Radix default 700. */\n openDelay?: number;\n /** Delay before closing (ms). Radix default 300. */\n closeDelay?: number;\n children?: ComponentChildren;\n};\n\nexport const HoverCard = ({\n defaultOpen = false,\n openDelay = 700,\n closeDelay = 300,\n children,\n ...rest\n}: HoverCardProps) => {\n const open = useMemo(() => signal(defaultOpen), []);\n const openTimer = useRef<number | null>(null);\n const closeTimer = useRef<number | null>(null);\n\n const clearOpenTimer = useCallback(() => {\n if (openTimer.current !== null) {\n clearTimeout(openTimer.current);\n openTimer.current = null;\n }\n }, []);\n\n const clearCloseTimer = useCallback(() => {\n if (closeTimer.current !== null) {\n clearTimeout(closeTimer.current);\n closeTimer.current = null;\n }\n }, []);\n\n const setOpenImmediate = useCallback(\n (next: boolean) => {\n clearOpenTimer();\n clearCloseTimer();\n open.value = next;\n },\n [clearCloseTimer, clearOpenTimer, open],\n );\n\n const pinOpen = useCallback(() => {\n clearOpenTimer();\n clearCloseTimer();\n open.value = true;\n }, [clearCloseTimer, clearOpenTimer, open]);\n\n const scheduleOpen = useCallback(() => {\n clearCloseTimer();\n clearOpenTimer();\n openTimer.current = window.setTimeout(() => {\n openTimer.current = null;\n open.value = true;\n }, openDelay);\n }, [clearCloseTimer, clearOpenTimer, open, openDelay]);\n\n const scheduleClose = useCallback(() => {\n clearOpenTimer();\n clearCloseTimer();\n closeTimer.current = window.setTimeout(() => {\n closeTimer.current = null;\n open.value = false;\n }, closeDelay);\n }, [clearCloseTimer, clearOpenTimer, open, closeDelay]);\n\n useEffect(\n () => () => {\n clearOpenTimer();\n clearCloseTimer();\n },\n [clearCloseTimer, clearOpenTimer],\n );\n\n const value = useMemo(\n (): HoverCardContextValue => ({\n open,\n openDelay,\n closeDelay,\n scheduleOpen,\n scheduleClose,\n pinOpen,\n setOpenImmediate,\n }),\n [open, openDelay, closeDelay, scheduleOpen, scheduleClose, pinOpen, setOpenImmediate],\n );\n\n return (\n <HoverCardContext.Provider value={value}>\n <div\n data-slot=\"hover-card\"\n data-state={open.value ? \"open\" : \"closed\"}\n class=\"relative inline-flex\"\n {...rest}\n >\n {children}\n </div>\n </HoverCardContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { useHoverCard } from \"./HoverCard\";\n\nconst positionBySide = {\n top: \"bottom-full\",\n bottom: \"top-full\",\n left: \"right-full\",\n right: \"left-full\",\n} as const;\n\nconst alignByAxis = {\n vertical: {\n start: \"left-0\",\n center: \"left-1/2 -translate-x-1/2\",\n end: \"right-0\",\n },\n horizontal: {\n start: \"top-0\",\n center: \"top-1/2 -translate-y-1/2\",\n end: \"bottom-0\",\n },\n} as const;\n\nexport const hoverCardContent = tv({\n base: [\n \"bg-popover text-popover-foreground z-50 flex min-w-0 max-w-[calc(100vw-1.5rem)] flex-col gap-1 rounded-lg border p-3 text-sm shadow-md outline-none\",\n \"data-[state=open]:animate-in fade-in zoom-in-95\",\n \"absolute isolate\",\n ],\n variants: {\n side: {\n bottom: \"slide-in-from-top-2\",\n top: \"slide-in-from-bottom-2\",\n right: \"slide-in-from-left-2\",\n left: \"slide-in-from-right-2\",\n },\n },\n defaultVariants: {\n side: \"bottom\",\n },\n});\n\nexport type HoverCardContentProps = JSX.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof hoverCardContent> & {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n children?: ComponentChildren;\n };\n\nexport const HoverCardContent = ({\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n class: className,\n style,\n children,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: HoverCardContentProps) => {\n const { open, pinOpen, scheduleClose, setOpenImmediate } = useHoverCard();\n if (!open.value) return null;\n\n const isVertical = side === \"top\" || side === \"bottom\";\n const alignClass = isVertical ? alignByAxis.vertical[align] : alignByAxis.horizontal[align];\n const inlineStyle = typeof style === \"object\" && style !== null ? style : undefined;\n const offsetStyle: JSX.CSSProperties =\n side === \"bottom\"\n ? { marginTop: `${sideOffset}px` }\n : side === \"top\"\n ? { marginBottom: `${sideOffset}px` }\n : side === \"right\"\n ? { marginLeft: `${sideOffset}px` }\n : { marginRight: `${sideOffset}px` };\n\n return (\n <div\n data-slot=\"hover-card-content\"\n role=\"dialog\"\n aria-modal=\"false\"\n tabIndex={-1}\n data-side={side}\n data-align={align}\n data-state=\"open\"\n class={`${positionBySide[side]} ${alignClass} ${hoverCardContent({ side, class: className as string | undefined })}`}\n style={inlineStyle ? { ...offsetStyle, ...inlineStyle } : offsetStyle}\n onMouseEnter={(event) => {\n pinOpen();\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n scheduleClose();\n onMouseLeave?.(event);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setOpenImmediate(false);\n return;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { tv } from \"tailwind-variants\";\nimport { useHoverCard } from \"./HoverCard\";\n\nconst hoverCardTrigger = tv({\n base: [\n \"border-input bg-background hover:bg-muted inline-flex items-center justify-center rounded-md border px-3 py-2 text-sm font-medium shadow-xs transition-colors\",\n \"outline-none focus-visible:ring-3 focus-visible:ring-ring/50\",\n ],\n});\n\nexport type HoverCardTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const HoverCardTrigger = ({\n asChild = false,\n class: className,\n children,\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n ref: outerRef,\n ...rest\n}: HoverCardTriggerProps) => {\n const { scheduleOpen, scheduleClose } = useHoverCard();\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onMouseEnter?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n onFocus?: (event: JSX.TargetedFocusEvent<HTMLElement>) => void;\n onBlur?: (event: JSX.TargetedFocusEvent<HTMLElement>) => void;\n };\n\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"data-slot\": \"hover-card-trigger\",\n onMouseEnter: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onMouseEnter?.(event);\n scheduleOpen();\n onMouseEnter?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n },\n onMouseLeave: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onMouseLeave?.(event);\n scheduleClose();\n onMouseLeave?.(event as JSX.TargetedMouseEvent<HTMLButtonElement>);\n },\n onFocus: (event: JSX.TargetedFocusEvent<HTMLElement>) => {\n childProps.onFocus?.(event);\n scheduleOpen();\n onFocus?.(event as JSX.TargetedFocusEvent<HTMLButtonElement>);\n },\n onBlur: (event: JSX.TargetedFocusEvent<HTMLElement>) => {\n childProps.onBlur?.(event);\n scheduleClose();\n onBlur?.(event as JSX.TargetedFocusEvent<HTMLButtonElement>);\n },\n ref: (node: HTMLElement | null) => {\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <button\n ref={(node) => {\n callRef(outerRef, node);\n }}\n type=\"button\"\n data-slot=\"hover-card-trigger\"\n class={hoverCardTrigger({ class: className as string | undefined })}\n {...rest}\n onMouseEnter={(event) => {\n scheduleOpen();\n onMouseEnter?.(event);\n }}\n onMouseLeave={(event) => {\n scheduleClose();\n onMouseLeave?.(event);\n }}\n onFocus={(event) => {\n scheduleOpen();\n onFocus?.(event);\n }}\n onBlur={(event) => {\n scheduleClose();\n onBlur?.(event);\n }}\n >\n {children}\n </button>\n );\n};\n","import { HoverCard } from \"./HoverCard\";\nimport { HoverCardContent } from \"./HoverCardContent\";\nimport { HoverCardTrigger } from \"./HoverCardTrigger\";\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n\nexport default {\n Root: HoverCard,\n Trigger: HoverCardTrigger,\n Content: HoverCardContent,\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { Dialog, DialogContent } from './chunk-4BJJOHZT.js';
1
+ import { Dialog, DialogContent } from './chunk-HHLQYMPT.js';
2
2
  import { cn } from './chunk-MS2ZNYCJ.js';
3
3
  import { jsx } from 'preact/jsx-runtime';
4
4
 
@@ -28,5 +28,5 @@ var CommandShortcut = ({ class: className, children, ...rest }) => /* @__PURE__
28
28
  );
29
29
 
30
30
  export { CommandDialog, CommandShortcut };
31
- //# sourceMappingURL=chunk-PZS2D2QM.js.map
32
- //# sourceMappingURL=chunk-PZS2D2QM.js.map
31
+ //# sourceMappingURL=chunk-NILG56Z7.js.map
32
+ //# sourceMappingURL=chunk-NILG56Z7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/command/CommandDialog.tsx","../src/components/command/CommandShortcut.tsx"],"names":["jsx"],"mappings":";;;;AAYO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,WAAA,EAA0B,YAAA,EAC5C,QAAA,kBAAA,GAAA;AAAA,EAAC,aAAA;AAAA,EAAA;AAAA,IACC,eAAA,EAAiB,KAAA;AAAA,IACjB,OAAO,YAAA,IAAgB,uCAAA;AAAA,IACvB,WAAA,EAAU,wBAAA;AAAA,IAET;AAAA;AACH,CAAA,EACF;ACpBK,IAAM,eAAA,GAAkB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBACpEA,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,kBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,IAC3E,GAAG,IAAA;AAAA,IAEH;AAAA;AACH","file":"chunk-PZS2D2QM.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, DialogContent } from \"../dialog\";\n\nexport type CommandDialogProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: ComponentChildren;\n /** Passed to `DialogContent` for width (default command palette sizing). */\n contentClass?: string;\n};\n\nexport const CommandDialog = ({\n open,\n defaultOpen,\n onOpenChange,\n contentClass,\n children,\n}: CommandDialogProps) => (\n <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <DialogContent\n showCloseButton={false}\n class={contentClass ?? \"gap-0 overflow-hidden p-0 sm:max-w-lg\"}\n data-slot=\"command-dialog-content\"\n >\n {children}\n </DialogContent>\n </Dialog>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CommandShortcutProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const CommandShortcut = ({ class: className, children, ...rest }: CommandShortcutProps) => (\n <span\n data-slot=\"command-shortcut\"\n class={cn(\"text-muted-foreground ms-auto text-xs tracking-widest\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n"]}
1
+ {"version":3,"sources":["../src/components/command/CommandDialog.tsx","../src/components/command/CommandShortcut.tsx"],"names":["jsx"],"mappings":";;;;AAYO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,WAAA,EAA0B,YAAA,EAC5C,QAAA,kBAAA,GAAA;AAAA,EAAC,aAAA;AAAA,EAAA;AAAA,IACC,eAAA,EAAiB,KAAA;AAAA,IACjB,OAAO,YAAA,IAAgB,uCAAA;AAAA,IACvB,WAAA,EAAU,wBAAA;AAAA,IAET;AAAA;AACH,CAAA,EACF;ACpBK,IAAM,eAAA,GAAkB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBACpEA,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,kBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,IAC3E,GAAG,IAAA;AAAA,IAEH;AAAA;AACH","file":"chunk-NILG56Z7.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, DialogContent } from \"../dialog\";\n\nexport type CommandDialogProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: ComponentChildren;\n /** Passed to `DialogContent` for width (default command palette sizing). */\n contentClass?: string;\n};\n\nexport const CommandDialog = ({\n open,\n defaultOpen,\n onOpenChange,\n contentClass,\n children,\n}: CommandDialogProps) => (\n <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <DialogContent\n showCloseButton={false}\n class={contentClass ?? \"gap-0 overflow-hidden p-0 sm:max-w-lg\"}\n data-slot=\"command-dialog-content\"\n >\n {children}\n </DialogContent>\n </Dialog>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CommandShortcutProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const CommandShortcut = ({ class: className, children, ...rest }: CommandShortcutProps) => (\n <span\n data-slot=\"command-shortcut\"\n class={cn(\"text-muted-foreground ms-auto text-xs tracking-widest\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n"]}
@@ -1,4 +1,4 @@
1
- import { RadioGroup, useRadioGroup } from './chunk-YVALXJRN.js';
1
+ import { RadioGroup, useRadioGroup } from './chunk-TXKPDNRD.js';
2
2
  import { cn } from './chunk-MS2ZNYCJ.js';
3
3
  import { tv } from 'tailwind-variants';
4
4
  import { jsxs, jsx } from 'preact/jsx-runtime';
@@ -46,7 +46,7 @@ var RadioGroupItem = ({
46
46
  ...rest
47
47
  }) => {
48
48
  const group = useRadioGroup();
49
- const selected = group.controlledValue !== void 0 ? group.controlledValue : group.value.value;
49
+ const selected = group.controlledValue !== void 0 ? group.controlledValue : group.value;
50
50
  const checked = selected === value;
51
51
  return /* @__PURE__ */ jsxs(
52
52
  "label",
@@ -71,7 +71,7 @@ var RadioGroupItem = ({
71
71
  group.setValue(value);
72
72
  onChange?.(event);
73
73
  const el = event.currentTarget;
74
- const selected2 = group.controlledValue !== void 0 ? group.controlledValue : group.value.value;
74
+ const selected2 = group.controlledValue !== void 0 ? group.controlledValue : group.value;
75
75
  el.checked = selected2 === value;
76
76
  },
77
77
  ...rest
@@ -105,5 +105,5 @@ var radio_group_default = {
105
105
  };
106
106
 
107
107
  export { RadioGroupItem, radio_group_default };
108
- //# sourceMappingURL=chunk-2HZCH73K.js.map
109
- //# sourceMappingURL=chunk-2HZCH73K.js.map
108
+ //# sourceMappingURL=chunk-STRBBF45.js.map
109
+ //# sourceMappingURL=chunk-STRBBF45.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/radio-group/RadioGroupItem.tsx","../src/components/radio-group/index.ts"],"names":["selected"],"mappings":"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","file":"chunk-STRBBF45.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { useRadioGroup } from \"./RadioGroup\";\n\nconst itemRoot = tv({\n base: [\n \"flex cursor-pointer items-center gap-3 text-sm leading-none font-medium text-foreground\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n ],\n variants: {\n size: {\n default: \"\",\n sm: \"gap-2 text-xs\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\nconst indicatorBox = tv({\n base: \"relative inline-flex shrink-0 items-center justify-center\",\n variants: {\n size: {\n default: \"size-4\",\n sm: \"size-3.5\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\nconst dotSize = tv({\n base: \"pointer-events-none absolute left-1/2 top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary opacity-0 transition-[opacity,transform] peer-checked:scale-100 peer-checked:opacity-100 scale-75\",\n variants: {\n size: {\n default: \"size-2.5\",\n sm: \"size-2\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\ntype ItemVariants = VariantProps<typeof itemRoot>;\n\nexport type RadioGroupItemProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"name\" | \"class\" | \"size\"\n> &\n ItemVariants & {\n value: string;\n children?: ComponentChildren;\n class?: string;\n };\n\nexport const RadioGroupItem = ({\n value,\n children,\n size,\n class: className,\n onChange,\n disabled,\n ...rest\n}: RadioGroupItemProps) => {\n const group = useRadioGroup();\n const selected = group.controlledValue !== undefined ? group.controlledValue : group.value;\n const checked = selected === value;\n\n return (\n <label\n data-slot=\"radio-group-item\"\n data-state={checked ? \"checked\" : \"unchecked\"}\n data-size={size ?? \"default\"}\n class={cn(itemRoot({ size, class: className }))}\n >\n <span class={indicatorBox({ size })}>\n <input\n type=\"radio\"\n data-slot=\"radio-group-input\"\n class=\"peer absolute inset-0 z-20 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n name={group.name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={(event) => {\n group.setValue(value);\n onChange?.(event);\n const el = event.currentTarget as HTMLInputElement;\n const selected =\n group.controlledValue !== undefined ? group.controlledValue : group.value;\n el.checked = selected === value;\n }}\n {...rest}\n />\n <span\n aria-hidden\n class={cn(\n \"pointer-events-none absolute inset-0 z-0 flex items-center justify-center rounded-full border border-input bg-background shadow-xs transition-[color,box-shadow]\",\n \"peer-focus-visible:outline-none peer-focus-visible:ring-[3px] peer-focus-visible:ring-ring/50\",\n \"peer-disabled:opacity-50\",\n \"peer-checked:border-primary\",\n \"peer-aria-invalid:border-destructive peer-aria-invalid:ring-destructive/20\",\n )}\n />\n <span aria-hidden class={dotSize({ size })} />\n </span>\n {children ? <span data-slot=\"radio-group-label\">{children}</span> : null}\n </label>\n );\n};\n","import { RadioGroup } from \"./RadioGroup\";\nimport { RadioGroupItem } from \"./RadioGroupItem\";\n\nexport { RadioGroup, RadioGroupItem };\n\nexport default {\n Root: RadioGroup,\n Item: RadioGroupItem,\n};\n"]}
@@ -1,7 +1,6 @@
1
1
  import { cn } from './chunk-MS2ZNYCJ.js';
2
- import { useSignal } from '@preact/signals';
3
2
  import { createContext } from 'preact';
4
- import { useContext, useId, useEffect } from 'preact/hooks';
3
+ import { useContext, useId, useState, useEffect } from 'preact/hooks';
5
4
  import { jsx } from 'preact/jsx-runtime';
6
5
 
7
6
  var RadioGroupContext = createContext(null);
@@ -21,29 +20,29 @@ var RadioGroup = ({
21
20
  }) => {
22
21
  const autoId = useId();
23
22
  const name = nameProp ?? `radio-group-${autoId}`;
24
- const internal = useSignal(
23
+ const [internalValue, setInternalValue] = useState(
25
24
  valueProp !== void 0 ? valueProp : defaultValue ?? null
26
25
  );
27
26
  useEffect(() => {
28
27
  if (valueProp !== void 0) {
29
- internal.value = valueProp;
28
+ setInternalValue(valueProp);
30
29
  }
31
30
  }, [valueProp]);
32
31
  const setValue = (next) => {
33
32
  if (valueProp === void 0) {
34
- internal.value = next;
33
+ setInternalValue(next);
35
34
  }
36
35
  onValueChange?.(next);
37
36
  };
38
37
  return /* @__PURE__ */ jsx(
39
38
  RadioGroupContext.Provider,
40
39
  {
41
- value: { value: internal, controlledValue: valueProp, setValue, name },
40
+ value: { value: internalValue, controlledValue: valueProp, setValue, name },
42
41
  children: /* @__PURE__ */ jsx("div", { role: "radiogroup", "data-slot": "radio-group", class: cn("grid gap-3", className), ...rest, children })
43
42
  }
44
43
  );
45
44
  };
46
45
 
47
46
  export { RadioGroup, useRadioGroup };
48
- //# sourceMappingURL=chunk-YVALXJRN.js.map
49
- //# sourceMappingURL=chunk-YVALXJRN.js.map
47
+ //# sourceMappingURL=chunk-TXKPDNRD.js.map
48
+ //# sourceMappingURL=chunk-TXKPDNRD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/radio-group/RadioGroup.tsx"],"names":[],"mappings":";;;;;AAaA,IAAM,iBAAA,GAAoB,cAA6C,IAAI,CAAA;AAEpE,IAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,OAAA,GAAU,WAAW,iBAAiB,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAC7E,EAAA,OAAO,OAAA;AACT;AAYO,IAAM,aAAa,CAAC;AAAA,EACzB,IAAA,EAAM,QAAA;AAAA,EACN,YAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,aAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAuB;AACrB,EAAA,MAAM,SAAS,KAAA,EAAM;AACrB,EAAA,MAAM,IAAA,GAAO,QAAA,IAAY,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA;AAC9C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA;AAAA,IACxC,SAAA,KAAc,MAAA,GAAY,SAAA,GAAa,YAAA,IAAgB;AAAA,GACzD;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAiB;AACjC,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,IACvB;AACA,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,iBAAA,CAAkB,QAAA;AAAA,IAAlB;AAAA,MACC,OAAO,EAAE,KAAA,EAAO,eAAe,eAAA,EAAiB,SAAA,EAAW,UAAU,IAAA,EAAK;AAAA,MAE1E,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,YAAA,EAAa,WAAA,EAAU,aAAA,EAAc,KAAA,EAAO,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,MACpF,QAAA,EACH;AAAA;AAAA,GACF;AAEJ","file":"chunk-TXKPDNRD.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useId, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\n\ntype RadioGroupContextValue = {\n value: string | null;\n /** When set, selection follows this prop; otherwise local state is used. */\n controlledValue: string | undefined;\n setValue: (next: string) => void;\n name: string;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport const useRadioGroup = () => {\n const context = useContext(RadioGroupContext);\n if (!context) throw new Error(\"RadioGroupItem must be used inside RadioGroup\");\n return context;\n};\n\nexport type RadioGroupProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\"> & {\n /** When omitted, a stable unique name is generated (forms can still submit if you add name to inputs manually). */\n name?: string;\n defaultValue?: string;\n value?: string;\n onValueChange?: (next: string) => void;\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const RadioGroup = ({\n name: nameProp,\n defaultValue,\n value: valueProp,\n onValueChange,\n class: className,\n children,\n ...rest\n}: RadioGroupProps) => {\n const autoId = useId();\n const name = nameProp ?? `radio-group-${autoId}`;\n const [internalValue, setInternalValue] = useState<string | null>(\n valueProp !== undefined ? valueProp : (defaultValue ?? null),\n );\n\n useEffect(() => {\n if (valueProp !== undefined) {\n setInternalValue(valueProp);\n }\n }, [valueProp]);\n\n const setValue = (next: string) => {\n if (valueProp === undefined) {\n setInternalValue(next);\n }\n onValueChange?.(next);\n };\n\n return (\n <RadioGroupContext.Provider\n value={{ value: internalValue, controlledValue: valueProp, setValue, name }}\n >\n <div role=\"radiogroup\" data-slot=\"radio-group\" class={cn(\"grid gap-3\", className)} {...rest}>\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { Sheet, SheetContent, SheetFooter, SheetHeader } from './chunk-JKXSX67K.js';
2
- import { DialogClose, DialogDescription, DialogTitle, DialogTrigger } from './chunk-4BJJOHZT.js';
1
+ import { Sheet, SheetContent, SheetFooter, SheetHeader } from './chunk-EMUPVA2F.js';
2
+ import { DialogClose, DialogDescription, DialogTitle, DialogTrigger } from './chunk-HHLQYMPT.js';
3
3
  import { cn } from './chunk-MS2ZNYCJ.js';
4
4
  import { createContext } from 'preact';
5
5
  import { useContext } from 'preact/hooks';
@@ -72,5 +72,5 @@ var drawer_default = {
72
72
  };
73
73
 
74
74
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, drawer_default };
75
- //# sourceMappingURL=chunk-YTJRKLUR.js.map
76
- //# sourceMappingURL=chunk-YTJRKLUR.js.map
75
+ //# sourceMappingURL=chunk-UARVH66B.js.map
76
+ //# sourceMappingURL=chunk-UARVH66B.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/drawer/drawer-context.tsx","../src/components/drawer/Drawer.tsx","../src/components/drawer/DrawerClose.tsx","../src/components/drawer/DrawerContent.tsx","../src/components/drawer/DrawerDescription.tsx","../src/components/drawer/DrawerFooter.tsx","../src/components/drawer/DrawerHeader.tsx","../src/components/drawer/DrawerTitle.tsx","../src/components/drawer/DrawerTrigger.tsx","../src/components/drawer/index.ts"],"names":["jsx"],"mappings":"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","file":"chunk-YTJRKLUR.js","sourcesContent":["import { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\n\nexport type DrawerDirection = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport type DrawerContextValue = {\n direction: DrawerDirection;\n};\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nexport const DrawerProvider = DrawerContext.Provider;\n\nexport const useDrawerRoot = () => {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error(\"Drawer subcomponents must be used within Drawer\");\n return ctx;\n};\n","import type { ComponentChildren } from \"preact\";\nimport { Sheet, type SheetProps } from \"../sheet/Sheet\";\nimport { type DrawerDirection, DrawerProvider } from \"./drawer-context\";\n\nexport type DrawerProps = SheetProps & {\n /** Edge the drawer opens from (shadcn/Vaul `direction`). Default `bottom`. */\n direction?: DrawerDirection;\n children?: ComponentChildren;\n};\n\nexport const Drawer = ({ direction = \"bottom\", children, ...rest }: DrawerProps) => (\n <DrawerProvider value={{ direction }}>\n <Sheet data-slot=\"drawer\" {...rest}>\n {children}\n </Sheet>\n </DrawerProvider>\n);\n","import type { DialogCloseProps } from \"../dialog/DialogClose\";\nimport { SheetClose } from \"../sheet/SheetClose\";\n\nexport type DrawerCloseProps = DialogCloseProps;\n\nexport const DrawerClose = (props: DrawerCloseProps) => (\n <SheetClose data-slot=\"drawer-close\" {...props} />\n);\n","import type { ComponentChildren } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { SheetContent, type SheetContentProps } from \"../sheet/SheetContent\";\nimport { useDrawerRoot } from \"./drawer-context\";\n\nexport type DrawerContentProps = Omit<SheetContentProps, \"side\"> & {\n /** Drag affordance for top/bottom drawers. Default: `true` when `direction` is top or bottom. */\n showHandle?: boolean;\n children?: ComponentChildren;\n};\n\nexport const DrawerContent = ({\n showHandle,\n showCloseButton = false,\n class: className,\n children,\n ...rest\n}: DrawerContentProps) => {\n const { direction } = useDrawerRoot();\n const edge = direction === \"top\" || direction === \"bottom\";\n const handleVisible = showHandle !== undefined ? showHandle : edge;\n\n const Handle = () => (\n <div\n data-slot=\"drawer-handle\"\n aria-hidden\n class={cn(\n \"bg-muted mx-auto h-1.5 w-[100px] shrink-0 rounded-full\",\n direction === \"bottom\" && \"mb-2\",\n direction === \"top\" && \"mt-4\",\n )}\n />\n );\n\n return (\n <SheetContent\n side={direction}\n showCloseButton={showCloseButton}\n data-slot=\"drawer-content\"\n data-vaul-drawer-direction={direction}\n class={cn(className)}\n {...rest}\n >\n {direction === \"bottom\" && handleVisible ? <Handle /> : null}\n {children}\n {direction === \"top\" && handleVisible ? <Handle /> : null}\n </SheetContent>\n );\n};\n","import type { DialogDescriptionProps } from \"../dialog/DialogDescription\";\nimport { SheetDescription } from \"../sheet/SheetDescription\";\n\nexport type DrawerDescriptionProps = DialogDescriptionProps;\n\nexport const DrawerDescription = (props: DrawerDescriptionProps) => (\n <SheetDescription data-slot=\"drawer-description\" {...props} />\n);\n","import { SheetFooter, type SheetFooterProps } from \"../sheet/SheetFooter\";\n\nexport type DrawerFooterProps = SheetFooterProps;\n\nexport const DrawerFooter = (props: DrawerFooterProps) => (\n <SheetFooter data-slot=\"drawer-footer\" {...props} />\n);\n","import { SheetHeader, type SheetHeaderProps } from \"../sheet/SheetHeader\";\n\nexport type DrawerHeaderProps = SheetHeaderProps;\n\nexport const DrawerHeader = (props: DrawerHeaderProps) => (\n <SheetHeader data-slot=\"drawer-header\" {...props} />\n);\n","import type { DialogTitleProps } from \"../dialog/DialogTitle\";\nimport { SheetTitle } from \"../sheet/SheetTitle\";\n\nexport type DrawerTitleProps = DialogTitleProps;\n\nexport const DrawerTitle = (props: DrawerTitleProps) => (\n <SheetTitle data-slot=\"drawer-title\" {...props} />\n);\n","import type { DialogTriggerProps } from \"../dialog/DialogTrigger\";\nimport { SheetTrigger } from \"../sheet/SheetTrigger\";\n\nexport type DrawerTriggerProps = DialogTriggerProps;\n\nexport const DrawerTrigger = (props: DrawerTriggerProps) => (\n <SheetTrigger data-slot=\"drawer-trigger\" {...props} />\n);\n","import { Drawer } from \"./Drawer\";\nimport { DrawerClose } from \"./DrawerClose\";\nimport { DrawerContent } from \"./DrawerContent\";\nimport { DrawerDescription } from \"./DrawerDescription\";\nimport { DrawerFooter } from \"./DrawerFooter\";\nimport { DrawerHeader } from \"./DrawerHeader\";\nimport { DrawerTitle } from \"./DrawerTitle\";\nimport { DrawerTrigger } from \"./DrawerTrigger\";\n\nexport type { DrawerDirection } from \"./drawer-context\";\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n};\n\nexport default {\n Root: Drawer,\n Trigger: DrawerTrigger,\n Content: DrawerContent,\n Header: DrawerHeader,\n Footer: DrawerFooter,\n Title: DrawerTitle,\n Description: DrawerDescription,\n Close: DrawerClose,\n};\n"]}
1
+ {"version":3,"sources":["../src/components/drawer/drawer-context.tsx","../src/components/drawer/Drawer.tsx","../src/components/drawer/DrawerClose.tsx","../src/components/drawer/DrawerContent.tsx","../src/components/drawer/DrawerDescription.tsx","../src/components/drawer/DrawerFooter.tsx","../src/components/drawer/DrawerHeader.tsx","../src/components/drawer/DrawerTitle.tsx","../src/components/drawer/DrawerTrigger.tsx","../src/components/drawer/index.ts"],"names":["jsx"],"mappings":"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","file":"chunk-UARVH66B.js","sourcesContent":["import { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\n\nexport type DrawerDirection = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport type DrawerContextValue = {\n direction: DrawerDirection;\n};\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nexport const DrawerProvider = DrawerContext.Provider;\n\nexport const useDrawerRoot = () => {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error(\"Drawer subcomponents must be used within Drawer\");\n return ctx;\n};\n","import type { ComponentChildren } from \"preact\";\nimport { Sheet, type SheetProps } from \"../sheet/Sheet\";\nimport { type DrawerDirection, DrawerProvider } from \"./drawer-context\";\n\nexport type DrawerProps = SheetProps & {\n /** Edge the drawer opens from (shadcn/Vaul `direction`). Default `bottom`. */\n direction?: DrawerDirection;\n children?: ComponentChildren;\n};\n\nexport const Drawer = ({ direction = \"bottom\", children, ...rest }: DrawerProps) => (\n <DrawerProvider value={{ direction }}>\n <Sheet data-slot=\"drawer\" {...rest}>\n {children}\n </Sheet>\n </DrawerProvider>\n);\n","import type { DialogCloseProps } from \"../dialog/DialogClose\";\nimport { SheetClose } from \"../sheet/SheetClose\";\n\nexport type DrawerCloseProps = DialogCloseProps;\n\nexport const DrawerClose = (props: DrawerCloseProps) => (\n <SheetClose data-slot=\"drawer-close\" {...props} />\n);\n","import type { ComponentChildren } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { SheetContent, type SheetContentProps } from \"../sheet/SheetContent\";\nimport { useDrawerRoot } from \"./drawer-context\";\n\nexport type DrawerContentProps = Omit<SheetContentProps, \"side\"> & {\n /** Drag affordance for top/bottom drawers. Default: `true` when `direction` is top or bottom. */\n showHandle?: boolean;\n children?: ComponentChildren;\n};\n\nexport const DrawerContent = ({\n showHandle,\n showCloseButton = false,\n class: className,\n children,\n ...rest\n}: DrawerContentProps) => {\n const { direction } = useDrawerRoot();\n const edge = direction === \"top\" || direction === \"bottom\";\n const handleVisible = showHandle !== undefined ? showHandle : edge;\n\n const Handle = () => (\n <div\n data-slot=\"drawer-handle\"\n aria-hidden\n class={cn(\n \"bg-muted mx-auto h-1.5 w-[100px] shrink-0 rounded-full\",\n direction === \"bottom\" && \"mb-2\",\n direction === \"top\" && \"mt-4\",\n )}\n />\n );\n\n return (\n <SheetContent\n side={direction}\n showCloseButton={showCloseButton}\n data-slot=\"drawer-content\"\n data-vaul-drawer-direction={direction}\n class={cn(className)}\n {...rest}\n >\n {direction === \"bottom\" && handleVisible ? <Handle /> : null}\n {children}\n {direction === \"top\" && handleVisible ? <Handle /> : null}\n </SheetContent>\n );\n};\n","import type { DialogDescriptionProps } from \"../dialog/DialogDescription\";\nimport { SheetDescription } from \"../sheet/SheetDescription\";\n\nexport type DrawerDescriptionProps = DialogDescriptionProps;\n\nexport const DrawerDescription = (props: DrawerDescriptionProps) => (\n <SheetDescription data-slot=\"drawer-description\" {...props} />\n);\n","import { SheetFooter, type SheetFooterProps } from \"../sheet/SheetFooter\";\n\nexport type DrawerFooterProps = SheetFooterProps;\n\nexport const DrawerFooter = (props: DrawerFooterProps) => (\n <SheetFooter data-slot=\"drawer-footer\" {...props} />\n);\n","import { SheetHeader, type SheetHeaderProps } from \"../sheet/SheetHeader\";\n\nexport type DrawerHeaderProps = SheetHeaderProps;\n\nexport const DrawerHeader = (props: DrawerHeaderProps) => (\n <SheetHeader data-slot=\"drawer-header\" {...props} />\n);\n","import type { DialogTitleProps } from \"../dialog/DialogTitle\";\nimport { SheetTitle } from \"../sheet/SheetTitle\";\n\nexport type DrawerTitleProps = DialogTitleProps;\n\nexport const DrawerTitle = (props: DrawerTitleProps) => (\n <SheetTitle data-slot=\"drawer-title\" {...props} />\n);\n","import type { DialogTriggerProps } from \"../dialog/DialogTrigger\";\nimport { SheetTrigger } from \"../sheet/SheetTrigger\";\n\nexport type DrawerTriggerProps = DialogTriggerProps;\n\nexport const DrawerTrigger = (props: DrawerTriggerProps) => (\n <SheetTrigger data-slot=\"drawer-trigger\" {...props} />\n);\n","import { Drawer } from \"./Drawer\";\nimport { DrawerClose } from \"./DrawerClose\";\nimport { DrawerContent } from \"./DrawerContent\";\nimport { DrawerDescription } from \"./DrawerDescription\";\nimport { DrawerFooter } from \"./DrawerFooter\";\nimport { DrawerHeader } from \"./DrawerHeader\";\nimport { DrawerTitle } from \"./DrawerTitle\";\nimport { DrawerTrigger } from \"./DrawerTrigger\";\n\nexport type { DrawerDirection } from \"./drawer-context\";\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n};\n\nexport default {\n Root: Drawer,\n Trigger: DrawerTrigger,\n Content: DrawerContent,\n Header: DrawerHeader,\n Footer: DrawerFooter,\n Title: DrawerTitle,\n Description: DrawerDescription,\n Close: DrawerClose,\n};\n"]}