"use client"; import { ArrowDownToLine, ArrowUpDown, Code, Redo, Repeat, Scaling, Scan, } from "lucide-react"; import { useEffect, useState } from "react"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; import { cn } from "@/lib/utils"; const slides = [ { title: "سطح دسترسی", description: "گزارش سفارشی را بدون SQL بسازید و سریع منتشر کنید.", icon: , }, { title: "تحلیل پیش‌بین", description: "ابعاد مختلف را بچرخانید و الگوی پنهان را پیدا کنید.", icon: , }, { title: "اشتراک گزارش", description: "نمای اجرایی برای تصمیم‌های سریع طراحی کنید.", icon: , }, { title: "مدل داده", description: "داده پراکنده را در یک مدل واحد ساختاردهی کنید.", icon: , }, { title: "گزارش‌ساز", description: "گزارش سفارشی را بدون SQL بسازید و سریع منتشر کنید.", icon: , }, { title: "Pivot تعاملی", description: "ابعاد مختلف را بچرخانید و الگوی پنهان را پیدا کنید.", icon: , }, { title: "داشبورد مدیریتی", description: "نمای اجرایی برای تصمیم‌های سریع طراحی کنید.", icon: , }, ]; interface Feature12Props { className?: string; } const Feature12 = ({ className }: Feature12Props) => { const [api, setApi] = useState(); const [progress, setProgress] = useState(1 / slides.length); const [currentSlide, setCurrentSlide] = useState(1); useEffect(() => { if (!api) { return; } const updateProgress = () => { setProgress( Math.max(1 / slides.length, Math.min(1, api.scrollProgress())), ); }; const updateCurrentSlide = () => { setCurrentSlide(api.selectedScrollSnap() + 1); }; updateProgress(); updateCurrentSlide(); api.on("scroll", updateProgress); api.on("select", updateCurrentSlide); api.on("reInit", updateCurrentSlide); return () => { api.off("scroll", updateProgress); api.off("select", updateCurrentSlide); api.off("reInit", updateCurrentSlide); }; }, [api]); return (
داده سازمانی

تصمیم استراتژیک را داده‌محور کنید

داشبوردهای تعاملی به تیم‌ها اجازه می‌دهد سؤال جدید بپرسند بدون اینکه هر بار به تیم داده وابسته باشند.

{currentSlide.toLocaleString("fa-IR").padStart(2, "۰")}
{slides.length.toLocaleString("fa-IR").padStart(2, "۰")}
{slides.map((slide, index) => (
{slide.icon}

{slide.title}

{slide.description}

))}
); }; export { Feature12 };