@bigbinary/neeto-atoms 1.0.14 → 1.0.16

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 (33) hide show
  1. package/dist/{Label-BVy4hy9Z.js → Label-jZPbTxdX.js} +2 -2
  2. package/dist/{Label-BVy4hy9Z.js.map → Label-jZPbTxdX.js.map} +1 -1
  3. package/dist/{Popover-BFMrtVPq.js → Popover-dib6elwS.js} +5 -17
  4. package/dist/Popover-dib6elwS.js.map +1 -0
  5. package/dist/{Tooltip-DhwIZnOU.js → Tooltip-3ZzQyaDV.js} +6 -27
  6. package/dist/Tooltip-3ZzQyaDV.js.map +1 -0
  7. package/dist/cjs/{Label-DpyfZsiT.js → Label-B8SlyX1E.js} +2 -2
  8. package/dist/cjs/{Label-DpyfZsiT.js.map → Label-B8SlyX1E.js.map} +1 -1
  9. package/dist/cjs/{Popover-LIxANoTc.js → Popover-B1d4URJl.js} +4 -16
  10. package/dist/cjs/Popover-B1d4URJl.js.map +1 -0
  11. package/dist/cjs/{Tooltip-CtxI7QBY.js → Tooltip-criVUtIg.js} +5 -26
  12. package/dist/cjs/Tooltip-criVUtIg.js.map +1 -0
  13. package/dist/cjs/components/Label.js +2 -2
  14. package/dist/cjs/components/Popover.js +1 -1
  15. package/dist/cjs/components/Tooltip.js +1 -1
  16. package/dist/cjs/components/index.js +3 -3
  17. package/dist/cjs/index.js +3 -3
  18. package/dist/cjs/primitives/Combobox.js +1 -1
  19. package/dist/cjs/primitives/Combobox.js.map +1 -1
  20. package/dist/components/Label.js +2 -2
  21. package/dist/components/Popover/Popover.d.ts +0 -2
  22. package/dist/components/Popover.js +1 -1
  23. package/dist/components/Tooltip/Tooltip.d.ts +4 -3
  24. package/dist/components/Tooltip.js +1 -1
  25. package/dist/components/index.js +3 -3
  26. package/dist/index.js +3 -3
  27. package/dist/primitives/Combobox.js +1 -1
  28. package/dist/primitives/Combobox.js.map +1 -1
  29. package/package.json +2 -1
  30. package/dist/Popover-BFMrtVPq.js.map +0 -1
  31. package/dist/Tooltip-DhwIZnOU.js.map +0 -1
  32. package/dist/cjs/Popover-LIxANoTc.js.map +0 -1
  33. package/dist/cjs/Tooltip-CtxI7QBY.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-atoms",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "author": "BigBinary",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -149,6 +149,7 @@
149
149
  "input-otp": "^1.4.2",
150
150
  "jest": "^30.3.0",
151
151
  "jest-environment-jsdom": "^30.3.0",
152
+ "jest-fail-on-console": "^3.3.4",
152
153
  "lint-staged": "^16.4.0",
153
154
  "lucide-react": "^0.577.0",
154
155
  "next-themes": "^0.4.6",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popover-BFMrtVPq.js","sources":["../src/components/Popover/constants.ts","../src/components/Popover/Popover.tsx"],"sourcesContent":["export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"center\",\n};\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"src/primitives/HoverCard\";\n\ntype PopoverPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nconst popoverVariants = cva(\"flex flex-col gap-2.5\", {\n variants: {\n variant: {\n default: \"\",\n primary: \"bg-primary text-primary-foreground ring-0 shadow-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\ntype PopoverVariant = NonNullable<\n VariantProps<typeof popoverVariants>[\"variant\"]\n>;\n\n/** Radix HoverCard.Content props we forward via ...otherProps. */\ntype HoverCardContentProps = React.ComponentProps<typeof HoverCardContent>;\n\nexport interface PopoverProps extends Omit<\n HoverCardContentProps,\n \"children\" | \"className\" | \"side\" | \"align\"\n> {\n /** Content rendered inside the popover. */\n children?: ReactNode;\n /** The trigger element that opens the popover on hover. */\n trigger?: ReactNode;\n /** Color variant of the popover. */\n variant?: PopoverVariant;\n /** Disable the popover. */\n disabled?: boolean;\n /** Placement of the popover relative to the trigger. */\n position?: PopoverPosition;\n /** Additional CSS class names for the popover content. */\n className?: string;\n /** Whether the popover is open (controlled). */\n open?: boolean;\n /** Callback when open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Auto-hide after N milliseconds. Use -1 to disable. */\n hideAfter?: number;\n /** Auto-hide the popover when the trigger scrolls out of the viewport. */\n hideOnTargetExit?: boolean;\n /** Radix HoverCard `defaultOpen` prop. */\n defaultOpen?: boolean;\n /** Delay in ms before the popover opens on hover. */\n openDelay?: number;\n /** Delay in ms before the popover closes after hover leaves. */\n closeDelay?: number;\n}\n\nimport { SIDE_MAP, ALIGN_MAP } from \"./constants\";\n\ninterface PopoverTitleProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Title = forwardRef<HTMLDivElement, PopoverTitleProps>(\n ({ children, className, ...otherProps }, ref) => (\n <div\n ref={ref}\n data-slot=\"popover-title\"\n className={cn(\"text-sm font-semibold\", className)}\n {...otherProps}\n >\n {children}\n </div>\n )\n);\nTitle.displayName = \"Popover.Title\";\n\nconst Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n trigger,\n variant = \"default\",\n disabled = false,\n position = \"auto\",\n className,\n open: openProp,\n onOpenChange: onOpenChangeProp,\n hideAfter = -1,\n hideOnTargetExit = false,\n defaultOpen,\n openDelay = 200,\n closeDelay = 200,\n // Radix HoverCardContent props forwarded\n ...contentProps\n },\n ref\n ) => {\n // Internal state for uncontrolled mode + hideAfter / hideOnTargetExit\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = openProp !== undefined;\n const open = isControlled ? openProp : internalOpen;\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChangeProp?.(next);\n },\n [isControlled, onOpenChangeProp]\n );\n\n const triggerRef = useRef<HTMLElement | null>(null);\n\n // Auto-hide after hideAfter ms\n useEffect(() => {\n if (!open || hideAfter <= 0) return;\n const timer = setTimeout(() => handleOpenChange(false), hideAfter);\n return () => clearTimeout(timer);\n }, [open, hideAfter, handleOpenChange]);\n\n // Hide popover when trigger exits viewport\n useEffect(() => {\n if (!hideOnTargetExit || !open || !triggerRef.current) return;\n const observer = new IntersectionObserver(([entry]) => {\n if (!entry.isIntersecting) handleOpenChange(false);\n });\n observer.observe(triggerRef.current);\n return () => observer.disconnect();\n }, [hideOnTargetExit, open, handleOpenChange]);\n\n if (disabled) {\n return <>{trigger}</>;\n }\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"center\";\n\n // Wrap non-element trigger in a span\n const triggerElement = React.isValidElement(trigger) ? (\n trigger\n ) : (\n <span>{trigger}</span>\n );\n\n return (\n <HoverCard\n open={open}\n onOpenChange={handleOpenChange}\n defaultOpen={defaultOpen}\n openDelay={openDelay}\n closeDelay={closeDelay}\n >\n <HoverCardTrigger\n ref={triggerRef as React.Ref<HTMLAnchorElement>}\n asChild\n >\n {triggerElement}\n </HoverCardTrigger>\n <HoverCardContent\n ref={ref}\n side={side}\n align={align}\n className={cn(popoverVariants({ variant }), className)}\n {...contentProps}\n >\n {children}\n </HoverCardContent>\n </HoverCard>\n );\n }\n) as React.ForwardRefExoticComponent<\n PopoverProps & React.RefAttributes<HTMLDivElement>\n> & {\n Title: typeof Title;\n};\n\nPopover.displayName = \"Popover\";\nPopover.Title = Title;\n\nexport { Popover };\n"],"names":["_jsx","_Fragment","React","_jsxs"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tooltip-DhwIZnOU.js","sources":["../src/components/Tooltip/constants.ts","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"top\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"center\",\n};\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport {\n Tooltip as PrimitiveTooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\ntype TooltipPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\n/** Radix Tooltip.Content props we forward via ...otherProps. */\ntype TooltipContentProps = React.ComponentProps<typeof TooltipContent>;\n\nexport interface TooltipProps extends Omit<\n TooltipContentProps,\n \"children\" | \"className\" | \"side\" | \"align\" | \"content\"\n> {\n /** Content rendered inside the tooltip popup. */\n content?: ReactNode;\n /** The trigger element. */\n children?: ReactNode;\n /** Disable the tooltip. */\n disabled?: boolean;\n /** Placement of the tooltip relative to the trigger. */\n position?: TooltipPosition;\n /** Whether the tooltip stays open when hovered over. */\n interactive?: boolean;\n /** Auto-hide after N milliseconds. Use -1 to disable. */\n hideAfter?: number;\n /** Auto-hide the tooltip when the trigger scrolls out of the viewport. */\n hideOnTargetExit?: boolean;\n /** Additional CSS class names for the tooltip content. */\n className?: string;\n /** Delay in ms before the tooltip opens (forwarded to TooltipProvider). */\n delayDuration?: number;\n /** Radix Tooltip `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nimport { SIDE_MAP, ALIGN_MAP } from \"./constants\";\n\nconst Tooltip = forwardRef<HTMLButtonElement, TooltipProps>(\n (\n {\n content,\n children,\n disabled = false,\n position = \"auto\",\n interactive = false,\n hideAfter = -1,\n hideOnTargetExit = false,\n className,\n delayDuration = 0,\n defaultOpen,\n // Radix TooltipContent props forwarded\n ...contentProps\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n // Merge external ref with internal trigger ref\n const setTriggerRef = useCallback(\n (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current =\n node;\n },\n [ref]\n );\n\n // Auto-hide after hideAfter ms\n useEffect(() => {\n if (!open || hideAfter <= 0) return;\n const timer = setTimeout(() => setOpen(false), hideAfter);\n return () => clearTimeout(timer);\n }, [open, hideAfter]);\n\n // Hide tooltip when trigger exits viewport\n useEffect(() => {\n if (!hideOnTargetExit || !open || !triggerRef.current) return;\n const observer = new IntersectionObserver(([entry]) => {\n if (!entry.isIntersecting) setOpen(false);\n });\n observer.observe(triggerRef.current);\n return () => observer.disconnect();\n }, [hideOnTargetExit, open]);\n\n if (disabled || !content) {\n return <>{children}</>;\n }\n\n const side = SIDE_MAP[position] ?? \"top\";\n const align = ALIGN_MAP[position] ?? \"center\";\n\n // Wrap non-element children in a span so TooltipTrigger can attach\n const trigger = React.isValidElement(children) ? (\n children\n ) : (\n <span>{children}</span>\n );\n\n return (\n <TooltipProvider delayDuration={delayDuration}>\n <PrimitiveTooltip\n open={open}\n onOpenChange={setOpen}\n defaultOpen={defaultOpen}\n disableHoverableContent={!interactive}\n >\n <TooltipTrigger ref={setTriggerRef} asChild>\n {trigger}\n </TooltipTrigger>\n <TooltipContent\n side={side}\n align={align}\n className={className}\n onPointerDownOutside={\n interactive ? e => e.preventDefault() : undefined\n }\n {...contentProps}\n >\n {content}\n </TooltipContent>\n </PrimitiveTooltip>\n </TooltipProvider>\n );\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip };\n"],"names":["_jsx","_Fragment","React","_jsxs","PrimitiveTooltip"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popover-LIxANoTc.js","sources":["../../../src/components/Popover/constants.ts","../../../src/components/Popover/Popover.tsx"],"sourcesContent":["export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"bottom\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"center\",\n};\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"src/primitives/HoverCard\";\n\ntype PopoverPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\nconst popoverVariants = cva(\"flex flex-col gap-2.5\", {\n variants: {\n variant: {\n default: \"\",\n primary: \"bg-primary text-primary-foreground ring-0 shadow-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\ntype PopoverVariant = NonNullable<\n VariantProps<typeof popoverVariants>[\"variant\"]\n>;\n\n/** Radix HoverCard.Content props we forward via ...otherProps. */\ntype HoverCardContentProps = React.ComponentProps<typeof HoverCardContent>;\n\nexport interface PopoverProps extends Omit<\n HoverCardContentProps,\n \"children\" | \"className\" | \"side\" | \"align\"\n> {\n /** Content rendered inside the popover. */\n children?: ReactNode;\n /** The trigger element that opens the popover on hover. */\n trigger?: ReactNode;\n /** Color variant of the popover. */\n variant?: PopoverVariant;\n /** Disable the popover. */\n disabled?: boolean;\n /** Placement of the popover relative to the trigger. */\n position?: PopoverPosition;\n /** Additional CSS class names for the popover content. */\n className?: string;\n /** Whether the popover is open (controlled). */\n open?: boolean;\n /** Callback when open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Auto-hide after N milliseconds. Use -1 to disable. */\n hideAfter?: number;\n /** Auto-hide the popover when the trigger scrolls out of the viewport. */\n hideOnTargetExit?: boolean;\n /** Radix HoverCard `defaultOpen` prop. */\n defaultOpen?: boolean;\n /** Delay in ms before the popover opens on hover. */\n openDelay?: number;\n /** Delay in ms before the popover closes after hover leaves. */\n closeDelay?: number;\n}\n\nimport { SIDE_MAP, ALIGN_MAP } from \"./constants\";\n\ninterface PopoverTitleProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst Title = forwardRef<HTMLDivElement, PopoverTitleProps>(\n ({ children, className, ...otherProps }, ref) => (\n <div\n ref={ref}\n data-slot=\"popover-title\"\n className={cn(\"text-sm font-semibold\", className)}\n {...otherProps}\n >\n {children}\n </div>\n )\n);\nTitle.displayName = \"Popover.Title\";\n\nconst Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n trigger,\n variant = \"default\",\n disabled = false,\n position = \"auto\",\n className,\n open: openProp,\n onOpenChange: onOpenChangeProp,\n hideAfter = -1,\n hideOnTargetExit = false,\n defaultOpen,\n openDelay = 200,\n closeDelay = 200,\n // Radix HoverCardContent props forwarded\n ...contentProps\n },\n ref\n ) => {\n // Internal state for uncontrolled mode + hideAfter / hideOnTargetExit\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = openProp !== undefined;\n const open = isControlled ? openProp : internalOpen;\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChangeProp?.(next);\n },\n [isControlled, onOpenChangeProp]\n );\n\n const triggerRef = useRef<HTMLElement | null>(null);\n\n // Auto-hide after hideAfter ms\n useEffect(() => {\n if (!open || hideAfter <= 0) return;\n const timer = setTimeout(() => handleOpenChange(false), hideAfter);\n return () => clearTimeout(timer);\n }, [open, hideAfter, handleOpenChange]);\n\n // Hide popover when trigger exits viewport\n useEffect(() => {\n if (!hideOnTargetExit || !open || !triggerRef.current) return;\n const observer = new IntersectionObserver(([entry]) => {\n if (!entry.isIntersecting) handleOpenChange(false);\n });\n observer.observe(triggerRef.current);\n return () => observer.disconnect();\n }, [hideOnTargetExit, open, handleOpenChange]);\n\n if (disabled) {\n return <>{trigger}</>;\n }\n\n const side = SIDE_MAP[position] ?? \"bottom\";\n const align = ALIGN_MAP[position] ?? \"center\";\n\n // Wrap non-element trigger in a span\n const triggerElement = React.isValidElement(trigger) ? (\n trigger\n ) : (\n <span>{trigger}</span>\n );\n\n return (\n <HoverCard\n open={open}\n onOpenChange={handleOpenChange}\n defaultOpen={defaultOpen}\n openDelay={openDelay}\n closeDelay={closeDelay}\n >\n <HoverCardTrigger\n ref={triggerRef as React.Ref<HTMLAnchorElement>}\n asChild\n >\n {triggerElement}\n </HoverCardTrigger>\n <HoverCardContent\n ref={ref}\n side={side}\n align={align}\n className={cn(popoverVariants({ variant }), className)}\n {...contentProps}\n >\n {children}\n </HoverCardContent>\n </HoverCard>\n );\n }\n) as React.ForwardRefExoticComponent<\n PopoverProps & React.RefAttributes<HTMLDivElement>\n> & {\n Title: typeof Title;\n};\n\nPopover.displayName = \"Popover\";\nPopover.Title = Title;\n\nexport { Popover };\n"],"names":["cva","forwardRef","_jsx","cn","useState","useCallback","useRef","useEffect","_Fragment","React","_jsxs","HoverCard","HoverCardTrigger","HoverCardContent"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tooltip-CtxI7QBY.js","sources":["../../../src/components/Tooltip/constants.ts","../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["export const SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n \"top-start\": \"top\",\n \"top-end\": \"top\",\n \"bottom-start\": \"bottom\",\n \"bottom-end\": \"bottom\",\n \"left-start\": \"left\",\n \"left-end\": \"left\",\n \"right-start\": \"right\",\n \"right-end\": \"right\",\n auto: \"top\",\n};\n\nexport const ALIGN_MAP: Record<string, \"start\" | \"center\" | \"end\"> = {\n top: \"center\",\n bottom: \"center\",\n left: \"center\",\n right: \"center\",\n \"top-start\": \"start\",\n \"top-end\": \"end\",\n \"bottom-start\": \"start\",\n \"bottom-end\": \"end\",\n \"left-start\": \"start\",\n \"left-end\": \"end\",\n \"right-start\": \"start\",\n \"right-end\": \"end\",\n auto: \"center\",\n};\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport {\n Tooltip as PrimitiveTooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\n\ntype TooltipPosition =\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left-start\"\n | \"left-end\"\n | \"right-start\"\n | \"right-end\"\n | \"auto\";\n\n/** Radix Tooltip.Content props we forward via ...otherProps. */\ntype TooltipContentProps = React.ComponentProps<typeof TooltipContent>;\n\nexport interface TooltipProps extends Omit<\n TooltipContentProps,\n \"children\" | \"className\" | \"side\" | \"align\" | \"content\"\n> {\n /** Content rendered inside the tooltip popup. */\n content?: ReactNode;\n /** The trigger element. */\n children?: ReactNode;\n /** Disable the tooltip. */\n disabled?: boolean;\n /** Placement of the tooltip relative to the trigger. */\n position?: TooltipPosition;\n /** Whether the tooltip stays open when hovered over. */\n interactive?: boolean;\n /** Auto-hide after N milliseconds. Use -1 to disable. */\n hideAfter?: number;\n /** Auto-hide the tooltip when the trigger scrolls out of the viewport. */\n hideOnTargetExit?: boolean;\n /** Additional CSS class names for the tooltip content. */\n className?: string;\n /** Delay in ms before the tooltip opens (forwarded to TooltipProvider). */\n delayDuration?: number;\n /** Radix Tooltip `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nimport { SIDE_MAP, ALIGN_MAP } from \"./constants\";\n\nconst Tooltip = forwardRef<HTMLButtonElement, TooltipProps>(\n (\n {\n content,\n children,\n disabled = false,\n position = \"auto\",\n interactive = false,\n hideAfter = -1,\n hideOnTargetExit = false,\n className,\n delayDuration = 0,\n defaultOpen,\n // Radix TooltipContent props forwarded\n ...contentProps\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n // Merge external ref with internal trigger ref\n const setTriggerRef = useCallback(\n (node: HTMLButtonElement | null) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current =\n node;\n },\n [ref]\n );\n\n // Auto-hide after hideAfter ms\n useEffect(() => {\n if (!open || hideAfter <= 0) return;\n const timer = setTimeout(() => setOpen(false), hideAfter);\n return () => clearTimeout(timer);\n }, [open, hideAfter]);\n\n // Hide tooltip when trigger exits viewport\n useEffect(() => {\n if (!hideOnTargetExit || !open || !triggerRef.current) return;\n const observer = new IntersectionObserver(([entry]) => {\n if (!entry.isIntersecting) setOpen(false);\n });\n observer.observe(triggerRef.current);\n return () => observer.disconnect();\n }, [hideOnTargetExit, open]);\n\n if (disabled || !content) {\n return <>{children}</>;\n }\n\n const side = SIDE_MAP[position] ?? \"top\";\n const align = ALIGN_MAP[position] ?? \"center\";\n\n // Wrap non-element children in a span so TooltipTrigger can attach\n const trigger = React.isValidElement(children) ? (\n children\n ) : (\n <span>{children}</span>\n );\n\n return (\n <TooltipProvider delayDuration={delayDuration}>\n <PrimitiveTooltip\n open={open}\n onOpenChange={setOpen}\n defaultOpen={defaultOpen}\n disableHoverableContent={!interactive}\n >\n <TooltipTrigger ref={setTriggerRef} asChild>\n {trigger}\n </TooltipTrigger>\n <TooltipContent\n side={side}\n align={align}\n className={className}\n onPointerDownOutside={\n interactive ? e => e.preventDefault() : undefined\n }\n {...contentProps}\n >\n {content}\n </TooltipContent>\n </PrimitiveTooltip>\n </TooltipProvider>\n );\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip };\n"],"names":["forwardRef","useState","useRef","useCallback","useEffect","_jsx","_Fragment","React","TooltipProvider","_jsxs","PrimitiveTooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}