primitives

Hover Card

Hover Card — базовый примитив RevueUI (Reka UI + shadcn-совместимый API).

Загрузка превью…

src/ui/hover-card/HoverCard.vue

<script setup lang="ts">
/**
 * Порт базового радикс-слоя (registry/bases/radix/ui/hover-card.tsx, MIT).
 * Radix HoverCardPrimitive -> reka-ui HoverCard*, один в один (см.
 * packages/ui/src/ui/popover/Popover.vue — та же схема).
 */
import { HoverCardRoot, type HoverCardRootEmits, type HoverCardRootProps, useForwardPropsEmits } from "reka-ui"

const props = defineProps<HoverCardRootProps>()
const emits = defineEmits<HoverCardRootEmits>()

const forwarded = useForwardPropsEmits(props, emits)
</script>

<template>
  <HoverCardRoot data-slot="hover-card" v-bind="forwarded">
    <slot />
  </HoverCardRoot>
</template>

src/ui/hover-card/HoverCardContent.vue

<script setup lang="ts">
import type { HTMLAttributes } from "vue"
import { HoverCardContent, HoverCardPortal } from "reka-ui"
import { cn } from "@/lib/utils"

const props = withDefaults(
  defineProps<{
    class?: HTMLAttributes["class"]
    align?: "start" | "center" | "end"
    sideOffset?: number
  }>(),
  {
    align: "center",
    sideOffset: 4,
  }
)
</script>

<template>
  <HoverCardPortal data-slot="hover-card-portal">
    <HoverCardContent
      data-slot="hover-card-content"
      :align="props.align"
      :side-offset="props.sideOffset"
      :class="
        cn(
          'cn-hover-card-content z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden',
          props.class
        )
      "
    >
      <slot />
    </HoverCardContent>
  </HoverCardPortal>
</template>

src/ui/hover-card/HoverCardTrigger.vue

<script setup lang="ts">
import { HoverCardTrigger } from "reka-ui"
</script>

<template>
  <HoverCardTrigger data-slot="hover-card-trigger">
    <slot />
  </HoverCardTrigger>
</template>

src/ui/hover-card/index.ts

export { default as HoverCard } from "./HoverCard.vue"
export { default as HoverCardTrigger } from "./HoverCardTrigger.vue"
export { default as HoverCardContent } from "./HoverCardContent.vue"

Установка

npx shadcn-vue@latest add https://revueui.rootapi.dev/r/hover-card.json

Зависимости реестра

npm-зависимости

  • reka-ui

Источник: порт из ReUI (Keenthemes, MIT)