JGuang

连接光束

Animated Beam · Magic UI

交互预览
npx shadcn@latest add https://jiguang132.com/r/magic-ui/animated-beam.json

部分上游示例使用在线图片、视频或推文;这些内容依赖网络与第三方服务,不代表本地预览加载失败。

连接光束

Magic UI 的独立组件,请不要替换为 JGuang UI/Base UI 的同名 API。

安装

npx shadcn@latest add https://jiguang132.com/r/magic-ui/animated-beam.json

Registry 将复制可编辑源码和依赖到独立命名空间。检查主题变量与 Tailwind CSS v4 配置;不要覆盖已有的项目组件。

使用与验证

在左侧选择组件,在预览中操作它的状态;使用“查看代码”检查真实源码。安装后执行类型检查和构建,再验证键盘焦点、手机布局与深浅色主题。

来源

https://github.com/magicuidesign/magicui/tree/cdb348cb4c72a9b54b554d8617801e479fbc8714 MIT 许可证;不包括付费内容。下方提供上游英文参考内容,中文使用指南已适配;上游详细参考暂保留英文。


适用场景

用动态 SVG 光束连接引用的 DOM 元素。

示例使用的原生参数

从该组件全部本地示例的 JSX 提取,按导入模块及组件区分;包括复合示例中实际使用的其他 Magic UI 组件。不是全部属性清单,也不是宿主通用 variant API。展开对象需结合示例数据声明;完整类型与默认值见下方源码参考。

所属组件参数说明示例来源
Marquee.pauseOnHover (marquee)悬停时暂停当前跑马灯。examples/bento-demo.tsx
Marquee.className (marquee)当前原生组件的样式类,需先配置 Tailwind 与所需 CSS。examples/bento-demo.tsx
Marquee.children (marquee)原生子内容,保留所属组件对文本/元素的约束。examples/bento-demo.tsx
BentoGrid.children (bento-grid)原生子内容,保留所属组件对文本/元素的约束。examples/bento-demo.tsx
BentoCard....feature (bento-grid)示例展开对象的参数;请查看对应示例的数据声明及原生类型,不能将对象名当作属性。examples/bento-demo.tsx
AnimatedBeam.containerRef (animated-beam)指向定位光束容器的引用。examples/animated-beam-demo.tsx、examples/animated-beam-unidirectional.tsx、examples/animated-beam-bidirectional.tsx、examples/animated-beam-multiple-inputs.tsx、examples/animated-beam-multiple-outputs.tsx
AnimatedBeam.fromRef (animated-beam)指向光束起点 DOM 元素的引用。examples/animated-beam-demo.tsx、examples/animated-beam-unidirectional.tsx、examples/animated-beam-bidirectional.tsx、examples/animated-beam-multiple-inputs.tsx、examples/animated-beam-multiple-outputs.tsx
AnimatedBeam.toRef (animated-beam)指向光束终点 DOM 元素的引用。examples/animated-beam-demo.tsx、examples/animated-beam-unidirectional.tsx、examples/animated-beam-bidirectional.tsx、examples/animated-beam-multiple-inputs.tsx、examples/animated-beam-multiple-outputs.tsx
AnimatedBeam.curvature (animated-beam)光束二次曲线路径的纵向曲率偏移。examples/animated-beam-demo.tsx、examples/animated-beam-bidirectional.tsx
AnimatedBeam.endYOffset (animated-beam)光束终点 y 坐标的像素偏移。examples/animated-beam-demo.tsx、examples/animated-beam-bidirectional.tsx
AnimatedBeam.reverse (animated-beam)反转所属特效的运动方向。examples/animated-beam-demo.tsx、examples/animated-beam-bidirectional.tsx
AnimatedBeam.duration (animated-beam)原生动画时长;数值/CSS 单位随所属组件不同,见源码默认值。examples/animated-beam-unidirectional.tsx、examples/animated-beam-multiple-outputs.tsx
AnimatedBeam.startYOffset (animated-beam)光束起点 y 坐标的像素偏移。examples/animated-beam-bidirectional.tsx

交互与状态检查

  • 复合便当网格 — bento-demo
  • 连接光束 · 默认示例 — animated-beam-demo
  • 连接光束 · 单向连接 — animated-beam-unidirectional
  • 连接光束 · 双向连接 — animated-beam-bidirectional
  • 连接光束 · 多输入连接 — animated-beam-multiple-inputs
  • 连接光束 · 多输出连接 — animated-beam-multiple-outputs

这些名称是实际示例入口,不是新增组件属性或独立组件数量。选择对应示例后,检查指针/键盘行为、深浅色、手机尺寸和加载失败;纯装饰特效不应伪造禁用、错误或提交状态。完整示例安装包含其真实依赖闭包。

业务接入边界

containerRef/fromRef/toRef 必须指向同一文档内元素;视觉连线不传输数据,也不会调用集成服务。

宿主与动画配置

初始化 Tailwind CSS v4、语义 CSS 变量及 dark 变体;按本地 Registry 的独立命名空间导入。复用已有 next-themes Provider,不混入 JGuang UI/Base UI/HeroUI API。进入视口再挂载特效,离开后卸载;为 Canvas/WebGL 不可用、网络媒体失败提供静态替代。遵循 prefers-reduced-motion,并验证计时器、RAF、观察器和事件监听已清理;不能仅凭 CSS 停止就宣称引擎已停止。示例不提供后端、登录、支付或真实 AI 流。这里的实用指南为双语,上游详细参考和演示文本仍保留原文。

可用状态与示例

复合便当网格、连接光束 · 默认示例、连接光束 · 单向连接、连接光束 · 双向连接、连接光束 · 多输入连接、连接光束 · 多输出连接

组件中的状态与数据为演示用途,不包含后端接口。接入实际项目时请检查源码中的公开参数,再连接业务数据。

Installation

<Tabs defaultValue="cli"> <TabsList> <TabsTrigger value="cli">CLI</TabsTrigger> <TabsTrigger value="manual">Manual</TabsTrigger> </TabsList> <TabsContent value="cli">
npx shadcn@latest add @magicui/animated-beam
</TabsContent> <TabsContent value="manual"> <Steps>

<Step>Copy and paste the following code into your project.</Step>

<Step>Update the import paths to match your project setup.</Step>

</Steps> </TabsContent> </Tabs>

Examples

Animated Beam Uni-Directional

Animated Beam Bi-Directional

Animated Beam Multiple Inputs

Animated Beam Multiple Outputs

Usage

import { AnimatedBeam } from "@/components/ui/animated-beam"
<AnimatedBeam containerRef={containerRef} fromRef={fromRef} toRef={toRef} />

Props

Animated Beam

PropTypeDefaultDescription
classNamestring-The class name for the component.
containerRefref-The container ref.
fromRefref-The ref of the element from which the beam should start.
toRefref-The ref of the element to which the beam should end.
curvaturenumber0The curvature of the beam.
reversebooleanfalseWhether the beam should be reversed.
durationnumber5The duration of the beam.
delaynumber0The delay of the beam.
repeatnumberInfinityThe number of times the beam animation should repeat.
repeatDelaynumber0The delay between repeated beam animation cycles.
pathColorstringgrayThe color of the beam.
pathWidthnumber2The width of the beam.
pathOpacitynumber0.2The opacity of the beam.
gradientStartColorstring#ffaa40The start color of the gradient.
gradientStopColorstring#9c40ffThe stop color of the gradient.
startXOffsetnumber0The start x offset of the beam.
startYOffsetnumber0The start y offset of the beam.
endXOffsetnumber0The end x offset of the beam.
endYOffsetnumber0The end y offset of the beam.

Credits

  • Credit to @itsarghyadas for figuring out the foundation of this!

完整示例安装

组件安装命令只安装组件;下列示例命令还包含该示例实际导入的其他组件、原生辅助 UI、工具和固定版本依赖。辅助源码不算独立组件。

复合便当网格

npx shadcn@latest add https://jiguang132.com/r/magic-ui/examples/animated-beam/bento-demo.json

默认导入: @/components/magicui/examples/bento-demo

依赖: @radix-ui/react-icons@1.3.2, @radix-ui/react-slot@1.3.0, class-variance-authority@0.7.1, clsx@2.1.1, lucide-react@1.24.0, motion@12.42.2, react-day-picker@9.14.0, tailwind-merge@3.6.0

连接光束 · 默认示例

npx shadcn@latest add https://jiguang132.com/r/magic-ui/examples/animated-beam/animated-beam-demo.json

默认导入: @/components/magicui/examples/animated-beam-demo

依赖: clsx@2.1.1, motion@12.42.2, tailwind-merge@3.6.0

连接光束 · 单向连接

npx shadcn@latest add https://jiguang132.com/r/magic-ui/examples/animated-beam/animated-beam-unidirectional.json

默认导入: @/components/magicui/examples/animated-beam-unidirectional

依赖: clsx@2.1.1, motion@12.42.2, tailwind-merge@3.6.0

连接光束 · 双向连接

npx shadcn@latest add https://jiguang132.com/r/magic-ui/examples/animated-beam/animated-beam-bidirectional.json

默认导入: @/components/magicui/examples/animated-beam-bidirectional

依赖: clsx@2.1.1, motion@12.42.2, tailwind-merge@3.6.0

连接光束 · 多输入连接

npx shadcn@latest add https://jiguang132.com/r/magic-ui/examples/animated-beam/animated-beam-multiple-inputs.json

默认导入: @/components/magicui/examples/animated-beam-multiple-inputs

依赖: clsx@2.1.1, motion@12.42.2, tailwind-merge@3.6.0

连接光束 · 多输出连接

npx shadcn@latest add https://jiguang132.com/r/magic-ui/examples/animated-beam/animated-beam-multiple-outputs.json

默认导入: @/components/magicui/examples/animated-beam-multiple-outputs

依赖: clsx@2.1.1, motion@12.42.2, tailwind-merge@3.6.0

最小使用与主题

import Demo from '@/components/magicui/examples/bento-demo';
import { ThemeProvider } from 'next-themes';
export default function Example() {
  return <ThemeProvider attribute="class" defaultTheme="system" enableSystem><Demo /></ThemeProvider>;
}

项目须先配置 Tailwind CSS v4、语义颜色变量和 dark 变体。已有 next-themes Provider 时复用它,不要重复嵌套。Next Link 示例需要 Next.js 环境;静态 Vite 项目可保留原生组件代码,并自行将示例的页面链接改为项目路由。部分演示图片、视频和推文依赖网络;示例不包含登录或后端服务。实用指南与示例标签已提供中文,上游详细英文参考及演示数据未宣称全文翻译。

源码参数参考

以下实现签名和类型从本地固定版本源码生成。保留可选属性、原生继承类型、联合分支和 never 限制;不会将其他设计系统的 API 混入。forwardRef 实现中的 ref 属于 React 引用,不是新增业务属性。此区域是原始类型参考,不是上游说明的全文翻译。

AnimatedBeam({
  className,
  containerRef,
  fromRef,
  toRef,
  curvature = 0,
  reverse = false, // Include the reverse prop
  duration = 5,
  delay = 0,
  pathColor = "gray",
  pathWidth = 2,
  pathOpacity = 0.2,
  gradientStartColor = "#ffaa40",
  gradientStopColor = "#9c40ff",
  repeat = Infinity,
  repeatDelay = 0,
  startXOffset = 0,
  startYOffset = 0,
  endXOffset = 0,
  endYOffset = 0,
})
export interface AnimatedBeamProps {
  className?: string
  containerRef: RefObject<HTMLElement | null> // Container ref
  fromRef: RefObject<HTMLElement | null>
  toRef: RefObject<HTMLElement | null>
  curvature?: number
  reverse?: boolean
  pathColor?: string
  pathWidth?: number
  pathOpacity?: number
  gradientStartColor?: string
  gradientStopColor?: string
  delay?: number
  duration?: number
  repeat?: number
  repeatDelay?: number
  startXOffset?: number
  startYOffset?: number
  endXOffset?: number
  endYOffset?: number
}

源码中的解构默认值

只列出直接写在参数或 props 解构中的默认表达式。条件表达式、运行时主题和其他计算值请结合源码;这里不是全部行为的默认值清单。

// AnimatedBeam
curvature = 0

// AnimatedBeam
reverse = false

// AnimatedBeam
duration = 5

// AnimatedBeam
delay = 0

// AnimatedBeam
pathColor = "gray"

// AnimatedBeam
pathWidth = 2

// AnimatedBeam
pathOpacity = 0.2

// AnimatedBeam
gradientStartColor = "#ffaa40"

// AnimatedBeam
gradientStopColor = "#9c40ff"

// AnimatedBeam
repeat = Infinity

// AnimatedBeam
repeatDelay = 0

// AnimatedBeam
startXOffset = 0

// AnimatedBeam
startYOffset = 0

// AnimatedBeam
endXOffset = 0

// AnimatedBeam
endYOffset = 0

原生与外部类型

以下外部类型仍由 React 或资源自身依赖定义,没有手工展开为虚构属性。实际可用类型以安装版本的 TypeScript 检查为准。

React.FC<AnimatedBeamProps>
RefObject<HTMLElement | null>
HTMLElement