"use client"; import type { MotionValue } from "framer-motion"; import { motion } from "framer-motion"; import { useMotionValue, useSpring, useTransform } from "framer-motion"; import React, { useRef } from "react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; const Integration13 = () => { const integrations = [ { title: "Framer", src: "/block-media/shadcnblocks/block/guri3/integration1.png", href: "#framer", icon: ( Framer ), }, { title: "MongoDB", src: "/block-media/shadcnblocks/block/guri3/integration2.png", href: "#mongodb", icon: ( MongoDB ), }, { title: "VSCode", src: "/block-media/shadcnblocks/block/guri3/integration3.png", href: "#vscode", icon: ( VSCode ), }, { title: "Notion", src: "/block-media/shadcnblocks/block/guri3/integration4.png", href: "#notion", icon: ( Notion ), }, { title: "Figma", src: "/block-media/shadcnblocks/block/guri3/integration5.png", href: "#figma", icon: ( Figma ), }, { title: "Discord", src: "/block-media/shadcnblocks/block/guri3/integration6.png", href: "#discord", icon: ( Discord ), }, { title: "GitHub", src: "/block-media/shadcnblocks/block/guri3/integration7.png", href: "#github", icon: ( GitHub ), }, { title: "Chrome", src: "/block-media/shadcnblocks/block/guri3/integration8.png", href: "#chrome", icon: ( Chrome ), }, { title: "Postman", src: "/block-media/shadcnblocks/block/guri3/integration9.png", href: "#postman", icon: ( Postman ), }, ]; return (

یکپارچه‌سازی‌ها

یکپارچه با اپلیکیشن‌های محبوب

ابزارهای محبوبتان را به پلتفرم متصل کنید و گردش‌کار خود را ساده‌تر و یکپارچه‌تر کنید.

{integrations.map((integration) => ( {integration.title} ))}
); }; const DockIntegrations = ({ integrations, className, }: { integrations: { title: string; src: string; href: string; icon: React.ReactNode; }[]; className?: string; }) => { const mouseX = useMotionValue(Infinity); return (
mouseX.set(e.pageX)} onMouseLeave={() => mouseX.set(Infinity)} > {integrations.map((integration) => ( ))}
); }; const DockIcon = ({ integration, mouseX, }: { integration: { title: string; src: string; href: string }; mouseX: MotionValue; }) => { const ref = useRef(null); const distance = useTransform(mouseX, (val: number) => { const bounds = ref.current?.getBoundingClientRect() ?? { x: 0, width: 0 }; return val - bounds.x - bounds.width / 2; }); const width = useSpring( useTransform(distance, [-100, 0, 100], [64, 85, 64]), { mass: 0.1, stiffness: 150, damping: 12, }, ); const height = useSpring( useTransform(distance, [-100, 0, 100], [64, 94, 64]), { mass: 0.1, stiffness: 150, damping: 12, }, ); const y = useSpring(useTransform(distance, [-150, 0, 150], [0, -12, 0]), { mass: 0.1, stiffness: 150, damping: 12, }); return (
{integration.title}
); }; export { Integration13 };