"use client";
import { motion } from "framer-motion";
import { ArrowRight } from "lucide-react";
import React, { useCallback, useEffect, useRef, useState } from "react";
import {
FaApple,
FaGoogle,
FaLinkedin,
FaMicrosoft,
FaTwitter,
} from "react-icons/fa";
import { Avatar, AvatarImage } from "@/components/ui/avatar";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
export const Highlight = ({
children,
className,
}: {
children: React.ReactNode;
className?: string;
}) => {
return (
{children}
);
};
const CARDS = [
{
id: 0,
name: "مدیریت فروش",
designation: "سامانه مدیریت ارتباط با مشتری",
userImage: "/block-media/shadcnblocks/block/guri3/avatar1.png",
companyIcon: FaApple,
content: (
پیادهسازی فوقالعاده روان بود.{" "}
تمام تعاملات، سرنخها و قراردادها در یک فضای کاری متمرکز جمع میشود. تیم فروش بدون جابجایی بین ابزارها، سریعتر پیشبینی میکند و معاملات بیشتری میبندد. از اولین تماس تا تمدید قرارداد، هر مرحله فروش قابل ردیابی است. گزارشهای لحظهای به مدیران کمک میکند گلوگاهها را قبل از از دست دادن درآمد شناسایی کنند.
),
},
{
id: 1,
name: "ارتباط با مشتری",
designation: "پایپلاین فروش",
userImage: "/block-media/shadcnblocks/block/guri3/avatar2.png",
companyIcon: FaLinkedin,
content: (
بهعنوان مدیر فروش، دید لحظهای پایپلاین برایم تعیینکننده است.{" "}
پروفایل یکپارچه مشتری، تاریخچه تماس و وضعیت معامله را همزمان نشان میدهد. تیمها با دید مشترک، هماهنگتر پیش میروند و نرخ تبدیل بالاتر میرود. تمام تعاملات، سرنخها و قراردادها در یک فضای کاری متمرکز جمع میشود. تیم فروش بدون جابجایی بین ابزارها، سریعتر پیشبینی میکند و معاملات بیشتری میبندد.
),
},
{
id: 2,
name: "مدیریت فروش",
designation: "سامانه مدیریت ارتباط با مشتری",
userImage: "/block-media/shadcnblocks/block/guri3/avatar3.png",
companyIcon: FaTwitter,
content: (
امکانات دسترسپذیری عالی است.{" "}
از اولین تماس تا تمدید قرارداد، هر مرحله فروش قابل ردیابی است. گزارشهای لحظهای به مدیران کمک میکند گلوگاهها را قبل از از دست دادن درآمد شناسایی کنند. پروفایل یکپارچه مشتری، تاریخچه تماس و وضعیت معامله را همزمان نشان میدهد. تیمها با دید مشترک، هماهنگتر پیش میروند و نرخ تبدیل بالاتر میرود.
),
},
{
id: 3,
name: "هر سرنخ را تا قرارداد دنبال کنید",
designation: "فروش تیمتان را یکجا مدیریت کنید",
userImage: "/block-media/shadcnblocks/block/guri3/avatar4.png",
companyIcon: FaGoogle,
content: (
عملکرد استثنایی است.{" "}
تمام تعاملات، سرنخها و قراردادها در یک فضای کاری متمرکز جمع میشود. تیم فروش بدون جابجایی بین ابزارها، سریعتر پیشبینی میکند و معاملات بیشتری میبندد. از اولین تماس تا تمدید قرارداد، هر مرحله فروش قابل ردیابی است. گزارشهای لحظهای به مدیران کمک میکند گلوگاهها را قبل از از دست دادن درآمد شناسایی کنند.
),
},
{
id: 4,
name: "روابط مشتری را در یک نگاه ببینید",
designation: "پایپلاین فروش را شفاف کنید",
userImage: "/block-media/shadcnblocks/block/guri3/avatar5.png",
companyIcon: FaMicrosoft,
content: (
برای نیازهای سازمانی ما عالی است.{" "}
پروفایل یکپارچه مشتری، تاریخچه تماس و وضعیت معامله را همزمان نشان میدهد. تیمها با دید مشترک، هماهنگتر پیش میروند و نرخ تبدیل بالاتر میرود. تمام تعاملات، سرنخها و قراردادها در یک فضای کاری متمرکز جمع میشود. تیم فروش بدون جابجایی بین ابزارها، سریعتر پیشبینی میکند و معاملات بیشتری میبندد.
),
},
];
type Card = {
id: number;
name: string;
designation: string;
userImage: string;
companyIcon: React.ComponentType<{ className?: string }>;
content: React.ReactNode;
};
interface Feature281Props {
className?: string;
}
const Feature281 = ({ className }: Feature281Props) => {
return (
);
};
export { Feature281 };
// Below is the modified component from Aceternity UI
// Original source: npx shadcn@latest add https://ui.aceternity.com/registry/card-stack.json
// Modified to follow our coding standards and design system
// We respect copyright and attribution to the original creators
const CardStack = ({
items,
offset,
scaleFactor,
}: {
items: Card[];
offset?: number;
scaleFactor?: number;
}) => {
const intervalRef = useRef(undefined);
const CARD_OFFSET = offset || 10;
const SCALE_FACTOR = scaleFactor || 0.06;
const [cards, setCards] = useState(items);
const startFlipping = useCallback(() => {
intervalRef.current = setInterval(() => {
setCards((prevCards: Card[]) => {
const newArray = [...prevCards];
newArray.unshift(newArray.pop()!);
return newArray;
});
}, 5000);
}, []);
useEffect(() => {
startFlipping();
return () => {
if (intervalRef.current) {
clearInterval(intervalRef.current);
}
};
}, [startFlipping]);
return (
{cards.map((card, index) => {
const CompanyIcon = card.companyIcon;
return (
{card.content}
{card.name}
{card.designation}
);
})}
);
};