{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "tooltip",
  "title": "Tooltip",
  "type": "registry:ui",
  "files": [
    {
      "path": "packages/registry-vue/components/tooltip/Tooltip.vue",
      "content": "<script setup lang=\"ts\">\nimport type { TooltipRootEmits, TooltipRootProps } from 'reka-ui'\nimport { TooltipRoot, useForwardPropsEmits } from 'reka-ui'\n\nconst props = defineProps<TooltipRootProps>()\nconst emits = defineEmits<TooltipRootEmits>()\n\nconst forwarded = useForwardPropsEmits(props, emits)\n</script>\n\n<template>\n  <TooltipRoot v-slot=\"slotProps\" data-uipkge data-slot=\"tooltip\" v-bind=\"forwarded\">\n    <slot v-bind=\"slotProps\" />\n  </TooltipRoot>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/tooltip/Tooltip.vue"
    },
    {
      "path": "packages/registry-vue/components/tooltip/TooltipContent.vue",
      "content": "<script setup lang=\"ts\">\nimport type { TooltipContentEmits, TooltipContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { reactiveOmit } from '@vueuse/core'\nimport { TooltipArrow, TooltipContent, TooltipPortal, useForwardPropsEmits } from 'reka-ui'\nimport { cn } from '@/lib/utils'\n\ndefineOptions({\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<TooltipContentProps & { class?: HTMLAttributes['class'] }>(), {\n  sideOffset: 4,\n})\n\nconst emits = defineEmits<TooltipContentEmits>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\nconst forwarded = useForwardPropsEmits(delegatedProps, emits)\n</script>\n\n<template>\n  <TooltipPortal>\n    <TooltipContent\n      data-uipkge\n      data-slot=\"tooltip-content\"\n      v-bind=\"{ ...forwarded, ...$attrs }\"\n      :class=\"\n        cn(\n          'bg-foreground text-background motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-95 motion-safe:data-[state=closed]:animate-out motion-safe:data-[state=closed]:fade-out-0 motion-safe:data-[state=closed]:zoom-out-95 motion-safe:data-[side=bottom]:slide-in-from-top-2 motion-safe:data-[side=left]:slide-in-from-right-2 motion-safe:data-[side=right]:slide-in-from-left-2 motion-safe:data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance',\n          props.class,\n        )\n      \"\n    >\n      <slot />\n\n      <TooltipArrow\n        class=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\"\n      />\n    </TooltipContent>\n  </TooltipPortal>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/tooltip/TooltipContent.vue"
    },
    {
      "path": "packages/registry-vue/components/tooltip/TooltipProvider.vue",
      "content": "<script setup lang=\"ts\">\nimport type { TooltipProviderProps } from 'reka-ui'\nimport { TooltipProvider } from 'reka-ui'\n\n// Defaults follow Radix conventions: 700ms open delay for ambient tooltips,\n// 300ms skip-delay so once one tooltip opens, neighbors skip the wait.\nconst props = withDefaults(defineProps<TooltipProviderProps>(), {\n  delayDuration: 700,\n  skipDelayDuration: 300,\n})\n</script>\n\n<template>\n  <TooltipProvider v-bind=\"props\">\n    <slot />\n  </TooltipProvider>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/tooltip/TooltipProvider.vue"
    },
    {
      "path": "packages/registry-vue/components/tooltip/TooltipTrigger.vue",
      "content": "<script setup lang=\"ts\">\nimport type { TooltipTriggerProps } from 'reka-ui'\nimport { TooltipTrigger } from 'reka-ui'\n\nconst props = defineProps<TooltipTriggerProps>()\n</script>\n\n<template>\n  <TooltipTrigger data-uipkge data-slot=\"tooltip-trigger\" v-bind=\"props\">\n    <slot />\n  </TooltipTrigger>\n</template>\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/tooltip/TooltipTrigger.vue"
    },
    {
      "path": "packages/registry-vue/components/tooltip/index.ts",
      "content": "export { default as Tooltip } from './Tooltip.vue'\nexport { default as TooltipContent } from './TooltipContent.vue'\nexport { default as TooltipProvider } from './TooltipProvider.vue'\nexport { default as TooltipTrigger } from './TooltipTrigger.vue'\n",
      "type": "registry:ui",
      "target": "~/app/components/ui/tooltip/index.ts"
    }
  ],
  "dependencies": [
    "@vueuse/core",
    "reka-ui"
  ],
  "devDependencies": [],
  "registryDependencies": [],
  "description": "Small popover triggered by hover/focus, used for short labels — icon-button names, abbreviation expansions, keyboard shortcuts. Auto-positions and respects `prefers-reduced-motion`.",
  "categories": [
    "overlay"
  ]
}