@zentauri-ui/zentauri-components 0.0.7 → 0.0.9

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 (132) hide show
  1. package/README.md +134 -0
  2. package/dist/ui/accordion.cjs +311 -0
  3. package/dist/ui/accordion.cjs.map +1 -0
  4. package/dist/ui/accordion.d.cts +70 -0
  5. package/dist/ui/accordion.d.ts +70 -0
  6. package/dist/ui/accordion.js +286 -0
  7. package/dist/ui/accordion.js.map +1 -0
  8. package/dist/ui/alert.cjs +257 -0
  9. package/dist/ui/alert.cjs.map +1 -0
  10. package/dist/ui/alert.d.cts +66 -0
  11. package/dist/ui/alert.d.ts +66 -0
  12. package/dist/ui/alert.js +224 -0
  13. package/dist/ui/alert.js.map +1 -0
  14. package/dist/ui/badge.cjs +192 -0
  15. package/dist/ui/badge.cjs.map +1 -0
  16. package/dist/ui/badge.d.cts +37 -0
  17. package/dist/ui/badge.d.ts +37 -0
  18. package/dist/ui/badge.js +165 -0
  19. package/dist/ui/badge.js.map +1 -0
  20. package/dist/ui/buttons.cjs +202 -0
  21. package/dist/ui/buttons.cjs.map +1 -0
  22. package/dist/ui/buttons.d.cts +27 -0
  23. package/dist/ui/buttons.d.ts +27 -0
  24. package/dist/ui/buttons.js +176 -0
  25. package/dist/ui/buttons.js.map +1 -0
  26. package/dist/ui/card.cjs +293 -0
  27. package/dist/ui/card.cjs.map +1 -0
  28. package/dist/ui/card.d.cts +77 -0
  29. package/dist/ui/card.d.ts +77 -0
  30. package/dist/ui/card.js +258 -0
  31. package/dist/ui/card.js.map +1 -0
  32. package/dist/ui/divider.cjs +229 -0
  33. package/dist/ui/divider.cjs.map +1 -0
  34. package/dist/ui/divider.d.cts +39 -0
  35. package/dist/ui/divider.d.ts +39 -0
  36. package/dist/ui/divider.js +200 -0
  37. package/dist/ui/divider.js.map +1 -0
  38. package/dist/ui/drawer.cjs +408 -0
  39. package/dist/ui/drawer.cjs.map +1 -0
  40. package/dist/ui/drawer.d.cts +81 -0
  41. package/dist/ui/drawer.d.ts +81 -0
  42. package/dist/ui/drawer.js +383 -0
  43. package/dist/ui/drawer.js.map +1 -0
  44. package/dist/ui/dropdown.cjs +302 -0
  45. package/dist/ui/dropdown.cjs.map +1 -0
  46. package/dist/ui/dropdown.d.cts +50 -0
  47. package/dist/ui/dropdown.d.ts +50 -0
  48. package/dist/ui/dropdown.js +278 -0
  49. package/dist/ui/dropdown.js.map +1 -0
  50. package/dist/ui/empty-state.cjs +186 -0
  51. package/dist/ui/empty-state.cjs.map +1 -0
  52. package/dist/ui/empty-state.d.cts +55 -0
  53. package/dist/ui/empty-state.d.ts +55 -0
  54. package/dist/ui/empty-state.js +154 -0
  55. package/dist/ui/empty-state.js.map +1 -0
  56. package/dist/ui/index.d.cts +27 -1164
  57. package/dist/ui/index.d.ts +27 -1164
  58. package/dist/ui/inputs.cjs +458 -0
  59. package/dist/ui/inputs.cjs.map +1 -0
  60. package/dist/ui/inputs.d.cts +35 -0
  61. package/dist/ui/inputs.d.ts +35 -0
  62. package/dist/ui/inputs.js +432 -0
  63. package/dist/ui/inputs.js.map +1 -0
  64. package/dist/ui/modal.cjs +406 -0
  65. package/dist/ui/modal.cjs.map +1 -0
  66. package/dist/ui/modal.d.cts +84 -0
  67. package/dist/ui/modal.d.ts +84 -0
  68. package/dist/ui/modal.js +384 -0
  69. package/dist/ui/modal.js.map +1 -0
  70. package/dist/ui/pagination.cjs +523 -0
  71. package/dist/ui/pagination.cjs.map +1 -0
  72. package/dist/ui/pagination.d.cts +114 -0
  73. package/dist/ui/pagination.d.ts +114 -0
  74. package/dist/ui/pagination.js +494 -0
  75. package/dist/ui/pagination.js.map +1 -0
  76. package/dist/ui/progress.cjs +268 -0
  77. package/dist/ui/progress.cjs.map +1 -0
  78. package/dist/ui/progress.d.cts +61 -0
  79. package/dist/ui/progress.d.ts +61 -0
  80. package/dist/ui/progress.js +237 -0
  81. package/dist/ui/progress.js.map +1 -0
  82. package/dist/ui/select.cjs +360 -0
  83. package/dist/ui/select.cjs.map +1 -0
  84. package/dist/ui/select.d.cts +73 -0
  85. package/dist/ui/select.d.ts +73 -0
  86. package/dist/ui/select.js +327 -0
  87. package/dist/ui/select.js.map +1 -0
  88. package/dist/ui/skeleton.cjs +576 -0
  89. package/dist/ui/skeleton.cjs.map +1 -0
  90. package/dist/ui/skeleton.d.cts +90 -0
  91. package/dist/ui/skeleton.d.ts +90 -0
  92. package/dist/ui/skeleton.js +544 -0
  93. package/dist/ui/skeleton.js.map +1 -0
  94. package/dist/ui/spinner.cjs +219 -0
  95. package/dist/ui/spinner.cjs.map +1 -0
  96. package/dist/ui/spinner.d.cts +27 -0
  97. package/dist/ui/spinner.d.ts +27 -0
  98. package/dist/ui/spinner.js +193 -0
  99. package/dist/ui/spinner.js.map +1 -0
  100. package/dist/ui/table.cjs +328 -0
  101. package/dist/ui/table.cjs.map +1 -0
  102. package/dist/ui/table.d.cts +81 -0
  103. package/dist/ui/table.d.ts +81 -0
  104. package/dist/ui/table.js +293 -0
  105. package/dist/ui/table.js.map +1 -0
  106. package/dist/ui/tabs.cjs +300 -0
  107. package/dist/ui/tabs.cjs.map +1 -0
  108. package/dist/ui/tabs.d.cts +58 -0
  109. package/dist/ui/tabs.d.ts +58 -0
  110. package/dist/ui/tabs.js +274 -0
  111. package/dist/ui/tabs.js.map +1 -0
  112. package/dist/ui/toast.cjs +285 -0
  113. package/dist/ui/toast.cjs.map +1 -0
  114. package/dist/ui/toast.d.cts +86 -0
  115. package/dist/ui/toast.d.ts +86 -0
  116. package/dist/ui/toast.js +258 -0
  117. package/dist/ui/toast.js.map +1 -0
  118. package/dist/ui/toggle.cjs +185 -0
  119. package/dist/ui/toggle.cjs.map +1 -0
  120. package/dist/ui/toggle.d.cts +37 -0
  121. package/dist/ui/toggle.d.ts +37 -0
  122. package/dist/ui/toggle.js +158 -0
  123. package/dist/ui/toggle.js.map +1 -0
  124. package/dist/ui/tooltip.cjs +242 -0
  125. package/dist/ui/tooltip.cjs.map +1 -0
  126. package/dist/ui/tooltip.d.cts +46 -0
  127. package/dist/ui/tooltip.d.ts +46 -0
  128. package/dist/ui/tooltip.js +214 -0
  129. package/dist/ui/tooltip.js.map +1 -0
  130. package/dist/variants-1Bx3BEeS.d.cts +8 -0
  131. package/dist/variants-1Bx3BEeS.d.ts +8 -0
  132. package/package.json +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/drawer/index.ts","../../src/ui/drawer/drawer.tsx","../../src/lib/utils.ts","../../src/ui/drawer/animations.ts","../../src/ui/drawer/variants.ts"],"sourcesContent":["export {\n Drawer,\n DrawerBody,\n DrawerClose,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"./drawer\";\nexport type {\n DrawerAnimation,\n DrawerContentProps,\n DrawerProps,\n DrawerSectionProps,\n DrawerTriggerProps,\n} from \"./types\";\nexport { drawerPanelPresets } from \"./animations\";\nexport { drawerContentVariants, drawerOverlayVariants } from \"./variants\";\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { drawerPanelPresets } from \"./animations\";\nimport type {\n DrawerContentProps,\n DrawerProps,\n DrawerSectionProps,\n DrawerTriggerProps,\n} from \"./types\";\nimport { drawerContentVariants, drawerOverlayVariants, drawerTriggerVariants } from \"./variants\";\n\ntype DrawerCtx = {\n open: boolean;\n setOpen: (next: boolean) => void;\n titleId: string;\n descriptionId: string;\n contentRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst DrawerContext = createContext<DrawerCtx | null>(null);\n\nfunction useDrawerContext(component: string): DrawerCtx {\n const ctx = useContext(DrawerContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Drawer>`);\n }\n return ctx;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction useBodyScrollLock(locked: boolean) {\n useEffect(() => {\n if (!locked) {\n return;\n }\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [locked]);\n}\n\nexport function Drawer({ open, defaultOpen = false, onOpenChange, children }: DrawerProps) {\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = `${baseId}-description`;\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n open: resolvedOpen,\n setOpen,\n titleId,\n descriptionId,\n contentRef,\n }),\n [descriptionId, resolvedOpen, setOpen, titleId],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nDrawer.displayName = \"Drawer\";\n\nexport function DrawerTrigger({ className, children, appearance, onClick, ref, ...rest }: DrawerTriggerProps) {\n const { setOpen } = useDrawerContext(\"DrawerTrigger\");\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"drawer-trigger\"\n className={cn(drawerTriggerVariants({ appearance }), className)}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n\nexport function DrawerContent({\n className,\n side = \"right\",\n size,\n appearance,\n animation = \"slide\",\n children,\n ref,\n id,\n style,\n}: DrawerContentProps) {\n const { open, setOpen, titleId, descriptionId, contentRef } = useDrawerContext(\"DrawerContent\");\n const resolvedSide = side ?? \"right\";\n const reduceMotion = useReducedMotion();\n const overlayMotion = drawerPanelPresets(resolvedSide)[reduceMotion ? \"fade\" : animation];\n const panelMotion = drawerPanelPresets(resolvedSide)[reduceMotion ? \"fade\" : animation];\n\n useBodyScrollLock(open);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, setOpen]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const node = contentRef.current;\n if (!node) {\n return;\n }\n const focusables = Array.from(\n node.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => element.offsetParent !== null || element === node);\n const target = focusables[0] ?? node;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n target.focus();\n\n const handleFocusIn = (event: FocusEvent) => {\n if (!node.contains(event.target as Node)) {\n event.stopPropagation();\n target.focus();\n }\n };\n document.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn);\n previouslyFocused?.focus?.();\n };\n }, [contentRef, open]);\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <AnimatePresence>\n {open ? (\n <div className=\"fixed inset-0 z-50\" data-slot=\"drawer-portal\">\n <motion.button\n type=\"button\"\n aria-hidden\n tabIndex={-1}\n data-slot=\"drawer-overlay\"\n className={drawerOverlayVariants()}\n onClick={() => setOpen(false)}\n initial={animation === \"none\" ? false : overlayMotion.initial}\n animate={animation === \"none\" ? undefined : overlayMotion.animate}\n exit={animation === \"none\" ? undefined : overlayMotion.exit}\n transition={overlayMotion.transition}\n />\n <motion.div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n data-slot=\"drawer-content\"\n tabIndex={-1}\n className={cn(\n drawerContentVariants({ side: resolvedSide, size, appearance }),\n className,\n )}\n initial={animation === \"none\" ? false : panelMotion.initial}\n animate={animation === \"none\" ? undefined : panelMotion.animate}\n exit={animation === \"none\" ? undefined : panelMotion.exit}\n transition={panelMotion.transition}\n id={id}\n style={style}\n >\n {children}\n </motion.div>\n </div>\n ) : null}\n </AnimatePresence>,\n portalTarget,\n );\n}\n\nDrawerContent.displayName = \"DrawerContent\";\n\nexport function DrawerHeader({ className, children }: DrawerSectionProps) {\n return (\n <header data-slot=\"drawer-header\" className={cn(\"mb-4 flex flex-col gap-2\", className)}>\n {children}\n </header>\n );\n}\n\nDrawerHeader.displayName = \"DrawerHeader\";\n\nexport function DrawerBody({ className, children }: DrawerSectionProps) {\n return (\n <div data-slot=\"drawer-body\" className={cn(\"flex-1 text-sm text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nDrawerBody.displayName = \"DrawerBody\";\n\nexport function DrawerFooter({ className, children }: DrawerSectionProps) {\n return (\n <footer data-slot=\"drawer-footer\" className={cn(\"mt-6 flex justify-end gap-2\", className)}>\n {children}\n </footer>\n );\n}\n\nDrawerFooter.displayName = \"DrawerFooter\";\n\nexport function DrawerTitle({ className, children }: DrawerSectionProps) {\n const { titleId } = useDrawerContext(\"DrawerTitle\");\n return (\n <h2 id={titleId} data-slot=\"drawer-title\" className={cn(\"text-lg font-semibold\", className)}>\n {children}\n </h2>\n );\n}\n\nDrawerTitle.displayName = \"DrawerTitle\";\n\nexport function DrawerClose({ className, children, ...rest }: DrawerSectionProps) {\n const { setOpen } = useDrawerContext(\"DrawerClose\");\n return (\n <button\n type=\"button\"\n data-slot=\"drawer-close\"\n className={cn(\n \"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n aria-label=\"Close drawer\"\n onClick={() => setOpen(false)}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nDrawerClose.displayName = \"DrawerClose\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type DrawerAnimation = \"none\" | \"fade\" | \"scale\" | \"slide\";\n\ntype DrawerPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type DrawerAnimationPresets = Record<DrawerAnimation, DrawerPresetMotionProps>;\n\nexport const drawerPanelPresets = (\n side: \"left\" | \"right\" | \"top\" | \"bottom\",\n): DrawerAnimationPresets => ({\n none: {},\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.2 },\n },\n scale: {\n initial: { opacity: 0, scale: 0.98 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.98 },\n transition: { type: \"spring\", stiffness: 420, damping: 32 },\n },\n slide: {\n initial:\n side === \"left\"\n ? { x: -24, opacity: 0 }\n : side === \"right\"\n ? { x: 24, opacity: 0 }\n : side === \"top\"\n ? { y: -24, opacity: 0 }\n : { y: 24, opacity: 0 },\n animate: { x: 0, y: 0, opacity: 1 },\n exit:\n side === \"left\"\n ? { x: -16, opacity: 0 }\n : side === \"right\"\n ? { x: 16, opacity: 0 }\n : side === \"top\"\n ? { y: -16, opacity: 0 }\n : { y: 16, opacity: 0 },\n transition: { type: \"spring\", stiffness: 380, damping: 30 },\n },\n});\n","import { cva } from \"class-variance-authority\";\n\nexport const drawerOverlayVariants = cva(\"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm\");\n\nexport const drawerTriggerVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer rounded-md border\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const drawerContentVariants = cva(\n \"fixed z-50 flex max-h-[min(92vh,900px)] flex-col border border-white/10 bg-slate-950 p-6 text-slate-50 shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none\",\n {\n variants: {\n side: {\n left: \"left-0 top-0 h-full w-[min(100%,420px)]\",\n right: \"right-0 top-0 h-full w-[min(100%,420px)]\",\n top: \"left-0 top-0 w-full max-h-[min(92vh,520px)]\",\n bottom: \"bottom-0 left-0 w-full max-h-[min(92vh,520px)]\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n full: \"\",\n },\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n compoundVariants: [\n { side: \"left\", size: \"sm\", class: \"w-[min(100%,320px)]\" },\n { side: \"left\", size: \"md\", class: \"w-[min(100%,420px)]\" },\n { side: \"left\", size: \"lg\", class: \"w-[min(100%,520px)]\" },\n { side: \"left\", size: \"xl\", class: \"w-[min(100%,640px)]\" },\n { side: \"left\", size: \"full\", class: \"w-full max-w-none\" },\n { side: \"right\", size: \"sm\", class: \"w-[min(100%,320px)]\" },\n { side: \"right\", size: \"md\", class: \"w-[min(100%,420px)]\" },\n { side: \"right\", size: \"lg\", class: \"w-[min(100%,520px)]\" },\n { side: \"right\", size: \"xl\", class: \"w-[min(100%,640px)]\" },\n { side: \"right\", size: \"full\", class: \"w-full max-w-none\" },\n ],\n defaultVariants: {\n side: \"right\",\n size: \"md\",\n appearance: \"default\",\n },\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,2BAA0D;AAC1D,mBASO;AACP,uBAA6B;;;ACb7B,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ACMO,IAAM,qBAAqB,CAChC,UAC4B;AAAA,EAC5B,MAAM,CAAC;AAAA,EACP,MAAM;AAAA,IACJ,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,MAAM,EAAE,SAAS,EAAE;AAAA,IACnB,YAAY,EAAE,UAAU,IAAI;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA,IACL,SAAS,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,IACnC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;AAAA,IAChC,MAAM,EAAE,SAAS,GAAG,OAAO,KAAK;AAAA,IAChC,YAAY,EAAE,MAAM,UAAU,WAAW,KAAK,SAAS,GAAG;AAAA,EAC5D;AAAA,EACA,OAAO;AAAA,IACL,SACE,SAAS,SACL,EAAE,GAAG,KAAK,SAAS,EAAE,IACrB,SAAS,UACP,EAAE,GAAG,IAAI,SAAS,EAAE,IACpB,SAAS,QACP,EAAE,GAAG,KAAK,SAAS,EAAE,IACrB,EAAE,GAAG,IAAI,SAAS,EAAE;AAAA,IAC9B,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,EAAE;AAAA,IAClC,MACE,SAAS,SACL,EAAE,GAAG,KAAK,SAAS,EAAE,IACrB,SAAS,UACP,EAAE,GAAG,IAAI,SAAS,EAAE,IACpB,SAAS,QACP,EAAE,GAAG,KAAK,SAAS,EAAE,IACrB,EAAE,GAAG,IAAI,SAAS,EAAE;AAAA,IAC9B,YAAY,EAAE,MAAM,UAAU,WAAW,KAAK,SAAS,GAAG;AAAA,EAC5D;AACF;;;AC/CA,sCAAoB;AAEb,IAAM,4BAAwB,qCAAI,qDAAqD;AAEvF,IAAM,4BAAwB;AAAA,EACnC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,YAAY;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,QACP,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAEO,IAAM,4BAAwB;AAAA,EACnC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,YAAY;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,QACP,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB,EAAE,MAAM,QAAQ,MAAM,MAAM,OAAO,sBAAsB;AAAA,MACzD,EAAE,MAAM,QAAQ,MAAM,MAAM,OAAO,sBAAsB;AAAA,MACzD,EAAE,MAAM,QAAQ,MAAM,MAAM,OAAO,sBAAsB;AAAA,MACzD,EAAE,MAAM,QAAQ,MAAM,MAAM,OAAO,sBAAsB;AAAA,MACzD,EAAE,MAAM,QAAQ,MAAM,QAAQ,OAAO,oBAAoB;AAAA,MACzD,EAAE,MAAM,SAAS,MAAM,MAAM,OAAO,sBAAsB;AAAA,MAC1D,EAAE,MAAM,SAAS,MAAM,MAAM,OAAO,sBAAsB;AAAA,MAC1D,EAAE,MAAM,SAAS,MAAM,MAAM,OAAO,sBAAsB;AAAA,MAC1D,EAAE,MAAM,SAAS,MAAM,MAAM,OAAO,sBAAsB;AAAA,MAC1D,EAAE,MAAM,SAAS,MAAM,QAAQ,OAAO,oBAAoB;AAAA,IAC5D;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AHVS;AAzDT,IAAM,oBAAgB,4BAAgC,IAAI;AAE1D,SAAS,iBAAiB,WAA8B;AACtD,QAAM,UAAM,yBAAW,aAAa;AACpC,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,GAAG,SAAS,+BAA+B;AAAA,EAC7D;AACA,SAAO;AACT;AAEA,IAAM,qBACJ;AAEF,SAAS,kBAAkB,QAAiB;AAC1C,8BAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AACA,UAAM,mBAAmB,SAAS,KAAK,MAAM;AAC7C,aAAS,KAAK,MAAM,WAAW;AAC/B,WAAO,MAAM;AACX,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AACb;AAEO,SAAS,OAAO,EAAE,MAAM,cAAc,OAAO,cAAc,SAAS,GAAgB;AACzF,QAAM,eAAe,SAAS;AAC9B,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAS,WAAW;AACpE,QAAM,eAAe,eAAe,QAAQ,IAAI,IAAI;AAEpD,QAAM,cAAU;AAAA,IACd,CAAC,SAAkB;AACjB,UAAI,CAAC,cAAc;AACjB,4BAAoB,IAAI;AAAA,MAC1B;AACA,qBAAe,IAAI;AAAA,IACrB;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,EAC7B;AAEA,QAAM,aAAS,oBAAM;AACrB,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,gBAAgB,GAAG,MAAM;AAC/B,QAAM,iBAAa,qBAA8B,IAAI;AAErD,QAAM,UAAM;AAAA,IACV,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,eAAe,cAAc,SAAS,OAAO;AAAA,EAChD;AAEA,SAAO,4CAAC,cAAc,UAAd,EAAuB,OAAO,KAAM,UAAS;AACvD;AAEA,OAAO,cAAc;AAEd,SAAS,cAAc,EAAE,WAAW,UAAU,YAAY,SAAS,KAAK,GAAG,KAAK,GAAuB;AAC5G,QAAM,EAAE,QAAQ,IAAI,iBAAiB,eAAe;AACpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,sBAAsB,EAAE,WAAW,CAAC,GAAG,SAAS;AAAA,MAC9D,SAAS,CAAC,UAAU;AAClB,kBAAU,KAAK;AACf,YAAI,CAAC,MAAM,kBAAkB;AAC3B,kBAAQ,IAAI;AAAA,QACd;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,cAAc,cAAc;AAErB,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,QAAM,EAAE,MAAM,SAAS,SAAS,eAAe,WAAW,IAAI,iBAAiB,eAAe;AAC9F,QAAM,eAAe,QAAQ;AAC7B,QAAM,mBAAe,uCAAiB;AACtC,QAAM,gBAAgB,mBAAmB,YAAY,EAAE,eAAe,SAAS,SAAS;AACxF,QAAM,cAAc,mBAAmB,YAAY,EAAE,eAAe,SAAS,SAAS;AAEtF,oBAAkB,IAAI;AAEtB,8BAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,MAAM,QAAQ,UAAU;AAC1B,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AACA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,8BAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,UAAM,OAAO,WAAW;AACxB,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,UAAM,aAAa,MAAM;AAAA,MACvB,KAAK,iBAA8B,kBAAkB;AAAA,IACvD,EAAE,OAAO,CAAC,YAAY,QAAQ,iBAAiB,QAAQ,YAAY,IAAI;AACvE,UAAM,SAAS,WAAW,CAAC,KAAK;AAChC,UAAM,oBAAoB,SAAS;AACnC,WAAO,MAAM;AAEb,UAAM,gBAAgB,CAAC,UAAsB;AAC3C,UAAI,CAAC,KAAK,SAAS,MAAM,MAAc,GAAG;AACxC,cAAM,gBAAgB;AACtB,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,aAAa;AAClD,WAAO,MAAM;AACX,eAAS,oBAAoB,WAAW,aAAa;AACrD,yBAAmB,QAAQ;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,YAAY,IAAI,CAAC;AAErB,QAAM,eAAe,OAAO,aAAa,cAAc,SAAS,OAAO;AACvE,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,aAAO;AAAA,IACL,4CAAC,wCACE,iBACC,6CAAC,SAAI,WAAU,sBAAqB,aAAU,iBAC5C;AAAA;AAAA,QAAC,4BAAO;AAAA,QAAP;AAAA,UACC,MAAK;AAAA,UACL,eAAW;AAAA,UACX,UAAU;AAAA,UACV,aAAU;AAAA,UACV,WAAW,sBAAsB;AAAA,UACjC,SAAS,MAAM,QAAQ,KAAK;AAAA,UAC5B,SAAS,cAAc,SAAS,QAAQ,cAAc;AAAA,UACtD,SAAS,cAAc,SAAS,SAAY,cAAc;AAAA,UAC1D,MAAM,cAAc,SAAS,SAAY,cAAc;AAAA,UACvD,YAAY,cAAc;AAAA;AAAA,MAC5B;AAAA,MACA;AAAA,QAAC,4BAAO;AAAA,QAAP;AAAA,UACC,KAAK,CAAC,SAAS;AACb,uBAAW,UAAU;AACrB,gBAAI,OAAO,QAAQ,YAAY;AAC7B,kBAAI,IAAI;AAAA,YACV,WAAW,KAAK;AACd,cAAC,IAAsD,UAAU;AAAA,YACnE;AAAA,UACF;AAAA,UACA,MAAK;AAAA,UACL,cAAW;AAAA,UACX,mBAAiB;AAAA,UACjB,oBAAkB;AAAA,UAClB,aAAU;AAAA,UACV,UAAU;AAAA,UACV,WAAW;AAAA,YACT,sBAAsB,EAAE,MAAM,cAAc,MAAM,WAAW,CAAC;AAAA,YAC9D;AAAA,UACF;AAAA,UACA,SAAS,cAAc,SAAS,QAAQ,YAAY;AAAA,UACpD,SAAS,cAAc,SAAS,SAAY,YAAY;AAAA,UACxD,MAAM,cAAc,SAAS,SAAY,YAAY;AAAA,UACrD,YAAY,YAAY;AAAA,UACxB;AAAA,UACA;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,OACF,IACE,MACN;AAAA,IACA;AAAA,EACF;AACF;AAEA,cAAc,cAAc;AAErB,SAAS,aAAa,EAAE,WAAW,SAAS,GAAuB;AACxE,SACE,4CAAC,YAAO,aAAU,iBAAgB,WAAW,GAAG,4BAA4B,SAAS,GAClF,UACH;AAEJ;AAEA,aAAa,cAAc;AAEpB,SAAS,WAAW,EAAE,WAAW,SAAS,GAAuB;AACtE,SACE,4CAAC,SAAI,aAAU,eAAc,WAAW,GAAG,iCAAiC,SAAS,GAClF,UACH;AAEJ;AAEA,WAAW,cAAc;AAElB,SAAS,aAAa,EAAE,WAAW,SAAS,GAAuB;AACxE,SACE,4CAAC,YAAO,aAAU,iBAAgB,WAAW,GAAG,+BAA+B,SAAS,GACrF,UACH;AAEJ;AAEA,aAAa,cAAc;AAEpB,SAAS,YAAY,EAAE,WAAW,SAAS,GAAuB;AACvE,QAAM,EAAE,QAAQ,IAAI,iBAAiB,aAAa;AAClD,SACE,4CAAC,QAAG,IAAI,SAAS,aAAU,gBAAe,WAAW,GAAG,yBAAyB,SAAS,GACvF,UACH;AAEJ;AAEA,YAAY,cAAc;AAEnB,SAAS,YAAY,EAAE,WAAW,UAAU,GAAG,KAAK,GAAuB;AAChF,QAAM,EAAE,QAAQ,IAAI,iBAAiB,aAAa;AAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,cAAW;AAAA,MACX,SAAS,MAAM,QAAQ,KAAK;AAAA,MAC3B,GAAG;AAAA,MAEH,sBAAY;AAAA;AAAA,EACf;AAEJ;AAEA,YAAY,cAAc;","names":[]}
@@ -0,0 +1,81 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, Ref, CSSProperties, HTMLAttributes } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import { HTMLMotionProps } from 'framer-motion';
6
+ import * as class_variance_authority_types from 'class-variance-authority/types';
7
+
8
+ type DrawerAnimation = "none" | "fade" | "scale" | "slide";
9
+ type DrawerPresetMotionProps = Pick<HTMLMotionProps<"div">, "initial" | "animate" | "exit" | "transition">;
10
+ type DrawerAnimationPresets = Record<DrawerAnimation, DrawerPresetMotionProps>;
11
+ declare const drawerPanelPresets: (side: "left" | "right" | "top" | "bottom") => DrawerAnimationPresets;
12
+
13
+ declare const drawerOverlayVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
14
+ declare const drawerTriggerVariants: (props?: ({
15
+ appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "gray" | "violet" | "glass" | "amber" | null | undefined;
16
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
17
+ declare const drawerContentVariants: (props?: ({
18
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
19
+ size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
20
+ appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "gray" | "violet" | "glass" | "amber" | null | undefined;
21
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
22
+
23
+ type DrawerContentVariantProps = VariantProps<typeof drawerContentVariants>;
24
+
25
+ type DrawerProps = {
26
+ open?: boolean;
27
+ defaultOpen?: boolean;
28
+ onOpenChange?: (open: boolean) => void;
29
+ children?: ReactNode;
30
+ };
31
+ type DrawerTriggerProps = HTMLAttributes<HTMLButtonElement> & {
32
+ ref?: Ref<HTMLButtonElement>;
33
+ appearance?: VariantProps<typeof drawerTriggerVariants>["appearance"];
34
+ };
35
+ type DrawerContentProps = DrawerContentVariantProps & {
36
+ animation?: DrawerAnimation;
37
+ className?: string;
38
+ children?: ReactNode;
39
+ ref?: Ref<HTMLDivElement>;
40
+ id?: string;
41
+ style?: CSSProperties;
42
+ };
43
+ type DrawerSectionProps = {
44
+ className?: string;
45
+ children?: ReactNode;
46
+ };
47
+
48
+ declare function Drawer({ open, defaultOpen, onOpenChange, children }: DrawerProps): react_jsx_runtime.JSX.Element;
49
+ declare namespace Drawer {
50
+ var displayName: string;
51
+ }
52
+ declare function DrawerTrigger({ className, children, appearance, onClick, ref, ...rest }: DrawerTriggerProps): react_jsx_runtime.JSX.Element;
53
+ declare namespace DrawerTrigger {
54
+ var displayName: string;
55
+ }
56
+ declare function DrawerContent({ className, side, size, appearance, animation, children, ref, id, style, }: DrawerContentProps): react.ReactPortal | null;
57
+ declare namespace DrawerContent {
58
+ var displayName: string;
59
+ }
60
+ declare function DrawerHeader({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
61
+ declare namespace DrawerHeader {
62
+ var displayName: string;
63
+ }
64
+ declare function DrawerBody({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
65
+ declare namespace DrawerBody {
66
+ var displayName: string;
67
+ }
68
+ declare function DrawerFooter({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
69
+ declare namespace DrawerFooter {
70
+ var displayName: string;
71
+ }
72
+ declare function DrawerTitle({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
73
+ declare namespace DrawerTitle {
74
+ var displayName: string;
75
+ }
76
+ declare function DrawerClose({ className, children, ...rest }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
77
+ declare namespace DrawerClose {
78
+ var displayName: string;
79
+ }
80
+
81
+ export { Drawer, type DrawerAnimation, DrawerBody, DrawerClose, DrawerContent, type DrawerContentProps, DrawerFooter, DrawerHeader, type DrawerProps, type DrawerSectionProps, DrawerTitle, DrawerTrigger, type DrawerTriggerProps, drawerContentVariants, drawerOverlayVariants, drawerPanelPresets };
@@ -0,0 +1,81 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, Ref, CSSProperties, HTMLAttributes } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import { HTMLMotionProps } from 'framer-motion';
6
+ import * as class_variance_authority_types from 'class-variance-authority/types';
7
+
8
+ type DrawerAnimation = "none" | "fade" | "scale" | "slide";
9
+ type DrawerPresetMotionProps = Pick<HTMLMotionProps<"div">, "initial" | "animate" | "exit" | "transition">;
10
+ type DrawerAnimationPresets = Record<DrawerAnimation, DrawerPresetMotionProps>;
11
+ declare const drawerPanelPresets: (side: "left" | "right" | "top" | "bottom") => DrawerAnimationPresets;
12
+
13
+ declare const drawerOverlayVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
14
+ declare const drawerTriggerVariants: (props?: ({
15
+ appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "gray" | "violet" | "glass" | "amber" | null | undefined;
16
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
17
+ declare const drawerContentVariants: (props?: ({
18
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
19
+ size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
20
+ appearance?: "default" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | "gray" | "violet" | "glass" | "amber" | null | undefined;
21
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
22
+
23
+ type DrawerContentVariantProps = VariantProps<typeof drawerContentVariants>;
24
+
25
+ type DrawerProps = {
26
+ open?: boolean;
27
+ defaultOpen?: boolean;
28
+ onOpenChange?: (open: boolean) => void;
29
+ children?: ReactNode;
30
+ };
31
+ type DrawerTriggerProps = HTMLAttributes<HTMLButtonElement> & {
32
+ ref?: Ref<HTMLButtonElement>;
33
+ appearance?: VariantProps<typeof drawerTriggerVariants>["appearance"];
34
+ };
35
+ type DrawerContentProps = DrawerContentVariantProps & {
36
+ animation?: DrawerAnimation;
37
+ className?: string;
38
+ children?: ReactNode;
39
+ ref?: Ref<HTMLDivElement>;
40
+ id?: string;
41
+ style?: CSSProperties;
42
+ };
43
+ type DrawerSectionProps = {
44
+ className?: string;
45
+ children?: ReactNode;
46
+ };
47
+
48
+ declare function Drawer({ open, defaultOpen, onOpenChange, children }: DrawerProps): react_jsx_runtime.JSX.Element;
49
+ declare namespace Drawer {
50
+ var displayName: string;
51
+ }
52
+ declare function DrawerTrigger({ className, children, appearance, onClick, ref, ...rest }: DrawerTriggerProps): react_jsx_runtime.JSX.Element;
53
+ declare namespace DrawerTrigger {
54
+ var displayName: string;
55
+ }
56
+ declare function DrawerContent({ className, side, size, appearance, animation, children, ref, id, style, }: DrawerContentProps): react.ReactPortal | null;
57
+ declare namespace DrawerContent {
58
+ var displayName: string;
59
+ }
60
+ declare function DrawerHeader({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
61
+ declare namespace DrawerHeader {
62
+ var displayName: string;
63
+ }
64
+ declare function DrawerBody({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
65
+ declare namespace DrawerBody {
66
+ var displayName: string;
67
+ }
68
+ declare function DrawerFooter({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
69
+ declare namespace DrawerFooter {
70
+ var displayName: string;
71
+ }
72
+ declare function DrawerTitle({ className, children }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
73
+ declare namespace DrawerTitle {
74
+ var displayName: string;
75
+ }
76
+ declare function DrawerClose({ className, children, ...rest }: DrawerSectionProps): react_jsx_runtime.JSX.Element;
77
+ declare namespace DrawerClose {
78
+ var displayName: string;
79
+ }
80
+
81
+ export { Drawer, type DrawerAnimation, DrawerBody, DrawerClose, DrawerContent, type DrawerContentProps, DrawerFooter, DrawerHeader, type DrawerProps, type DrawerSectionProps, DrawerTitle, DrawerTrigger, type DrawerTriggerProps, drawerContentVariants, drawerOverlayVariants, drawerPanelPresets };
@@ -0,0 +1,383 @@
1
+ "use client";
2
+
3
+
4
+ // src/ui/drawer/drawer.tsx
5
+ import { AnimatePresence, motion, useReducedMotion } from "framer-motion";
6
+ import {
7
+ createContext,
8
+ useCallback,
9
+ useContext,
10
+ useEffect,
11
+ useId,
12
+ useMemo,
13
+ useRef,
14
+ useState
15
+ } from "react";
16
+ import { createPortal } from "react-dom";
17
+
18
+ // src/lib/utils.ts
19
+ import { clsx } from "clsx";
20
+ import { twMerge } from "tailwind-merge";
21
+ function cn(...inputs) {
22
+ return twMerge(clsx(inputs));
23
+ }
24
+
25
+ // src/ui/drawer/animations.ts
26
+ var drawerPanelPresets = (side) => ({
27
+ none: {},
28
+ fade: {
29
+ initial: { opacity: 0 },
30
+ animate: { opacity: 1 },
31
+ exit: { opacity: 0 },
32
+ transition: { duration: 0.2 }
33
+ },
34
+ scale: {
35
+ initial: { opacity: 0, scale: 0.98 },
36
+ animate: { opacity: 1, scale: 1 },
37
+ exit: { opacity: 0, scale: 0.98 },
38
+ transition: { type: "spring", stiffness: 420, damping: 32 }
39
+ },
40
+ slide: {
41
+ initial: side === "left" ? { x: -24, opacity: 0 } : side === "right" ? { x: 24, opacity: 0 } : side === "top" ? { y: -24, opacity: 0 } : { y: 24, opacity: 0 },
42
+ animate: { x: 0, y: 0, opacity: 1 },
43
+ exit: side === "left" ? { x: -16, opacity: 0 } : side === "right" ? { x: 16, opacity: 0 } : side === "top" ? { y: -16, opacity: 0 } : { y: 16, opacity: 0 },
44
+ transition: { type: "spring", stiffness: 380, damping: 30 }
45
+ }
46
+ });
47
+
48
+ // src/ui/drawer/variants.ts
49
+ import { cva } from "class-variance-authority";
50
+ var drawerOverlayVariants = cva("fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm");
51
+ var drawerTriggerVariants = cva(
52
+ "relative inline-flex shrink-0 cursor-pointer rounded-md border",
53
+ {
54
+ variants: {
55
+ appearance: {
56
+ default: "bg-slate-950",
57
+ glass: "border-white/15 bg-slate-950/70 backdrop-blur-xl",
58
+ sky: "border-sky-600 bg-sky-950/70 backdrop-blur-xl",
59
+ rose: "border-rose-600 bg-rose-950/70 backdrop-blur-xl",
60
+ purple: "border-purple-600 bg-purple-950/70 backdrop-blur-xl",
61
+ pink: "border-pink-600 bg-pink-950/70 backdrop-blur-xl",
62
+ orange: "border-orange-600 bg-orange-950/70 backdrop-blur-xl",
63
+ yellow: "border-yellow-600 bg-yellow-950/70 backdrop-blur-xl",
64
+ teal: "border-teal-600 bg-teal-950/70 backdrop-blur-xl",
65
+ indigo: "border-indigo-600 bg-indigo-950/70 backdrop-blur-xl",
66
+ emerald: "border-emerald-600 bg-emerald-950/70 backdrop-blur-xl",
67
+ gray: "border-gray-600 bg-gray-950/70 backdrop-blur-xl",
68
+ amber: "border-amber-600 bg-amber-950/70 backdrop-blur-xl",
69
+ violet: "border-violet-600 bg-violet-950/70 backdrop-blur-xl",
70
+ "gradient-blue": "border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl",
71
+ "gradient-green": "border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl",
72
+ "gradient-red": "border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl",
73
+ "gradient-yellow": "border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl",
74
+ "gradient-purple": "border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl",
75
+ "gradient-teal": "border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl",
76
+ "gradient-indigo": "border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl",
77
+ "gradient-pink": "border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl",
78
+ "gradient-orange": "border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl"
79
+ }
80
+ },
81
+ defaultVariants: {
82
+ appearance: "default"
83
+ }
84
+ }
85
+ );
86
+ var drawerContentVariants = cva(
87
+ "fixed z-50 flex max-h-[min(92vh,900px)] flex-col border border-white/10 bg-slate-950 p-6 text-slate-50 shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none",
88
+ {
89
+ variants: {
90
+ side: {
91
+ left: "left-0 top-0 h-full w-[min(100%,420px)]",
92
+ right: "right-0 top-0 h-full w-[min(100%,420px)]",
93
+ top: "left-0 top-0 w-full max-h-[min(92vh,520px)]",
94
+ bottom: "bottom-0 left-0 w-full max-h-[min(92vh,520px)]"
95
+ },
96
+ size: {
97
+ sm: "",
98
+ md: "",
99
+ lg: "",
100
+ xl: "",
101
+ full: ""
102
+ },
103
+ appearance: {
104
+ default: "bg-slate-950",
105
+ glass: "border-white/15 bg-slate-950/70 backdrop-blur-xl",
106
+ sky: "border-sky-600 bg-sky-950/70 backdrop-blur-xl",
107
+ rose: "border-rose-600 bg-rose-950/70 backdrop-blur-xl",
108
+ purple: "border-purple-600 bg-purple-950/70 backdrop-blur-xl",
109
+ pink: "border-pink-600 bg-pink-950/70 backdrop-blur-xl",
110
+ orange: "border-orange-600 bg-orange-950/70 backdrop-blur-xl",
111
+ yellow: "border-yellow-600 bg-yellow-950/70 backdrop-blur-xl",
112
+ teal: "border-teal-600 bg-teal-950/70 backdrop-blur-xl",
113
+ indigo: "border-indigo-600 bg-indigo-950/70 backdrop-blur-xl",
114
+ emerald: "border-emerald-600 bg-emerald-950/70 backdrop-blur-xl",
115
+ gray: "border-gray-600 bg-gray-950/70 backdrop-blur-xl",
116
+ amber: "border-amber-600 bg-amber-950/70 backdrop-blur-xl",
117
+ violet: "border-violet-600 bg-violet-950/70 backdrop-blur-xl",
118
+ "gradient-blue": "border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl",
119
+ "gradient-green": "border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl",
120
+ "gradient-red": "border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl",
121
+ "gradient-yellow": "border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl",
122
+ "gradient-purple": "border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl",
123
+ "gradient-teal": "border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl",
124
+ "gradient-indigo": "border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl",
125
+ "gradient-pink": "border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl",
126
+ "gradient-orange": "border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl"
127
+ }
128
+ },
129
+ compoundVariants: [
130
+ { side: "left", size: "sm", class: "w-[min(100%,320px)]" },
131
+ { side: "left", size: "md", class: "w-[min(100%,420px)]" },
132
+ { side: "left", size: "lg", class: "w-[min(100%,520px)]" },
133
+ { side: "left", size: "xl", class: "w-[min(100%,640px)]" },
134
+ { side: "left", size: "full", class: "w-full max-w-none" },
135
+ { side: "right", size: "sm", class: "w-[min(100%,320px)]" },
136
+ { side: "right", size: "md", class: "w-[min(100%,420px)]" },
137
+ { side: "right", size: "lg", class: "w-[min(100%,520px)]" },
138
+ { side: "right", size: "xl", class: "w-[min(100%,640px)]" },
139
+ { side: "right", size: "full", class: "w-full max-w-none" }
140
+ ],
141
+ defaultVariants: {
142
+ side: "right",
143
+ size: "md",
144
+ appearance: "default"
145
+ }
146
+ }
147
+ );
148
+
149
+ // src/ui/drawer/drawer.tsx
150
+ import { jsx, jsxs } from "react/jsx-runtime";
151
+ var DrawerContext = createContext(null);
152
+ function useDrawerContext(component) {
153
+ const ctx = useContext(DrawerContext);
154
+ if (!ctx) {
155
+ throw new Error(`${component} must be used within <Drawer>`);
156
+ }
157
+ return ctx;
158
+ }
159
+ var FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex="-1"])';
160
+ function useBodyScrollLock(locked) {
161
+ useEffect(() => {
162
+ if (!locked) {
163
+ return;
164
+ }
165
+ const previousOverflow = document.body.style.overflow;
166
+ document.body.style.overflow = "hidden";
167
+ return () => {
168
+ document.body.style.overflow = previousOverflow;
169
+ };
170
+ }, [locked]);
171
+ }
172
+ function Drawer({ open, defaultOpen = false, onOpenChange, children }) {
173
+ const isControlled = open !== void 0;
174
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
175
+ const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;
176
+ const setOpen = useCallback(
177
+ (next) => {
178
+ if (!isControlled) {
179
+ setUncontrolledOpen(next);
180
+ }
181
+ onOpenChange?.(next);
182
+ },
183
+ [isControlled, onOpenChange]
184
+ );
185
+ const baseId = useId();
186
+ const titleId = `${baseId}-title`;
187
+ const descriptionId = `${baseId}-description`;
188
+ const contentRef = useRef(null);
189
+ const ctx = useMemo(
190
+ () => ({
191
+ open: resolvedOpen,
192
+ setOpen,
193
+ titleId,
194
+ descriptionId,
195
+ contentRef
196
+ }),
197
+ [descriptionId, resolvedOpen, setOpen, titleId]
198
+ );
199
+ return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: ctx, children });
200
+ }
201
+ Drawer.displayName = "Drawer";
202
+ function DrawerTrigger({ className, children, appearance, onClick, ref, ...rest }) {
203
+ const { setOpen } = useDrawerContext("DrawerTrigger");
204
+ return /* @__PURE__ */ jsx(
205
+ "button",
206
+ {
207
+ ref,
208
+ type: "button",
209
+ "data-slot": "drawer-trigger",
210
+ className: cn(drawerTriggerVariants({ appearance }), className),
211
+ onClick: (event) => {
212
+ onClick?.(event);
213
+ if (!event.defaultPrevented) {
214
+ setOpen(true);
215
+ }
216
+ },
217
+ ...rest,
218
+ children
219
+ }
220
+ );
221
+ }
222
+ DrawerTrigger.displayName = "DrawerTrigger";
223
+ function DrawerContent({
224
+ className,
225
+ side = "right",
226
+ size,
227
+ appearance,
228
+ animation = "slide",
229
+ children,
230
+ ref,
231
+ id,
232
+ style
233
+ }) {
234
+ const { open, setOpen, titleId, descriptionId, contentRef } = useDrawerContext("DrawerContent");
235
+ const resolvedSide = side ?? "right";
236
+ const reduceMotion = useReducedMotion();
237
+ const overlayMotion = drawerPanelPresets(resolvedSide)[reduceMotion ? "fade" : animation];
238
+ const panelMotion = drawerPanelPresets(resolvedSide)[reduceMotion ? "fade" : animation];
239
+ useBodyScrollLock(open);
240
+ useEffect(() => {
241
+ if (!open) {
242
+ return;
243
+ }
244
+ const handleKeyDown = (event) => {
245
+ if (event.key === "Escape") {
246
+ setOpen(false);
247
+ }
248
+ };
249
+ window.addEventListener("keydown", handleKeyDown);
250
+ return () => window.removeEventListener("keydown", handleKeyDown);
251
+ }, [open, setOpen]);
252
+ useEffect(() => {
253
+ if (!open) {
254
+ return;
255
+ }
256
+ const node = contentRef.current;
257
+ if (!node) {
258
+ return;
259
+ }
260
+ const focusables = Array.from(
261
+ node.querySelectorAll(FOCUSABLE_SELECTOR)
262
+ ).filter((element) => element.offsetParent !== null || element === node);
263
+ const target = focusables[0] ?? node;
264
+ const previouslyFocused = document.activeElement;
265
+ target.focus();
266
+ const handleFocusIn = (event) => {
267
+ if (!node.contains(event.target)) {
268
+ event.stopPropagation();
269
+ target.focus();
270
+ }
271
+ };
272
+ document.addEventListener("focusin", handleFocusIn);
273
+ return () => {
274
+ document.removeEventListener("focusin", handleFocusIn);
275
+ previouslyFocused?.focus?.();
276
+ };
277
+ }, [contentRef, open]);
278
+ const portalTarget = typeof document !== "undefined" ? document.body : null;
279
+ if (!portalTarget) {
280
+ return null;
281
+ }
282
+ return createPortal(
283
+ /* @__PURE__ */ jsx(AnimatePresence, { children: open ? /* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-50", "data-slot": "drawer-portal", children: [
284
+ /* @__PURE__ */ jsx(
285
+ motion.button,
286
+ {
287
+ type: "button",
288
+ "aria-hidden": true,
289
+ tabIndex: -1,
290
+ "data-slot": "drawer-overlay",
291
+ className: drawerOverlayVariants(),
292
+ onClick: () => setOpen(false),
293
+ initial: animation === "none" ? false : overlayMotion.initial,
294
+ animate: animation === "none" ? void 0 : overlayMotion.animate,
295
+ exit: animation === "none" ? void 0 : overlayMotion.exit,
296
+ transition: overlayMotion.transition
297
+ }
298
+ ),
299
+ /* @__PURE__ */ jsx(
300
+ motion.div,
301
+ {
302
+ ref: (node) => {
303
+ contentRef.current = node;
304
+ if (typeof ref === "function") {
305
+ ref(node);
306
+ } else if (ref) {
307
+ ref.current = node;
308
+ }
309
+ },
310
+ role: "dialog",
311
+ "aria-modal": "true",
312
+ "aria-labelledby": titleId,
313
+ "aria-describedby": descriptionId,
314
+ "data-slot": "drawer-content",
315
+ tabIndex: -1,
316
+ className: cn(
317
+ drawerContentVariants({ side: resolvedSide, size, appearance }),
318
+ className
319
+ ),
320
+ initial: animation === "none" ? false : panelMotion.initial,
321
+ animate: animation === "none" ? void 0 : panelMotion.animate,
322
+ exit: animation === "none" ? void 0 : panelMotion.exit,
323
+ transition: panelMotion.transition,
324
+ id,
325
+ style,
326
+ children
327
+ }
328
+ )
329
+ ] }) : null }),
330
+ portalTarget
331
+ );
332
+ }
333
+ DrawerContent.displayName = "DrawerContent";
334
+ function DrawerHeader({ className, children }) {
335
+ return /* @__PURE__ */ jsx("header", { "data-slot": "drawer-header", className: cn("mb-4 flex flex-col gap-2", className), children });
336
+ }
337
+ DrawerHeader.displayName = "DrawerHeader";
338
+ function DrawerBody({ className, children }) {
339
+ return /* @__PURE__ */ jsx("div", { "data-slot": "drawer-body", className: cn("flex-1 text-sm text-slate-300", className), children });
340
+ }
341
+ DrawerBody.displayName = "DrawerBody";
342
+ function DrawerFooter({ className, children }) {
343
+ return /* @__PURE__ */ jsx("footer", { "data-slot": "drawer-footer", className: cn("mt-6 flex justify-end gap-2", className), children });
344
+ }
345
+ DrawerFooter.displayName = "DrawerFooter";
346
+ function DrawerTitle({ className, children }) {
347
+ const { titleId } = useDrawerContext("DrawerTitle");
348
+ return /* @__PURE__ */ jsx("h2", { id: titleId, "data-slot": "drawer-title", className: cn("text-lg font-semibold", className), children });
349
+ }
350
+ DrawerTitle.displayName = "DrawerTitle";
351
+ function DrawerClose({ className, children, ...rest }) {
352
+ const { setOpen } = useDrawerContext("DrawerClose");
353
+ return /* @__PURE__ */ jsx(
354
+ "button",
355
+ {
356
+ type: "button",
357
+ "data-slot": "drawer-close",
358
+ className: cn(
359
+ "absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30",
360
+ className
361
+ ),
362
+ "aria-label": "Close drawer",
363
+ onClick: () => setOpen(false),
364
+ ...rest,
365
+ children: children ?? "\xD7"
366
+ }
367
+ );
368
+ }
369
+ DrawerClose.displayName = "DrawerClose";
370
+ export {
371
+ Drawer,
372
+ DrawerBody,
373
+ DrawerClose,
374
+ DrawerContent,
375
+ DrawerFooter,
376
+ DrawerHeader,
377
+ DrawerTitle,
378
+ DrawerTrigger,
379
+ drawerContentVariants,
380
+ drawerOverlayVariants,
381
+ drawerPanelPresets
382
+ };
383
+ //# sourceMappingURL=drawer.js.map