import type { IServiceDashboards } from '@openpanel/db';
import { useNavigate } from '@tanstack/react-router';
import { AnimatePresence, motion } from 'framer-motion';
import {
BellIcon,
BookOpenIcon,
ChartLineIcon,
ChevronDownIcon,
CogIcon,
GanttChartIcon,
Globe2Icon,
GridIcon,
LayersIcon,
LayoutDashboardIcon,
LayoutPanelTopIcon,
PlusIcon,
SearchIcon,
SparklesIcon,
TrendingUpDownIcon,
UndoDotIcon,
UserCircleIcon,
UsersIcon,
WallpaperIcon,
} from 'lucide-react';
import { useEffect, useState } from 'react';
import { SidebarLink } from './sidebar-link';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from './ui/dropdown-menu';
import { Button } from '@/components/ui/button';
import { pushModal } from '@/modals';
interface SidebarProjectMenuProps {
dashboards: IServiceDashboards;
}
export default function SidebarProjectMenu({
dashboards,
}: SidebarProjectMenuProps) {
return (
<>
Analytics
Manage
>
);
}
export function ActionCTAButton() {
const navigate = useNavigate();
const ACTIONS = [
{
label: 'Create report',
icon: ChartLineIcon,
onClick: () =>
navigate({
to: '/$organizationId/$projectId/reports',
from: '/$organizationId/$projectId',
}),
},
{
label: 'Create reference',
icon: BookOpenIcon,
onClick: () => pushModal('AddReference'),
},
{
label: 'Ask AI',
icon: SparklesIcon,
onClick: () =>
navigate({
to: '/$organizationId/$projectId/chat',
from: '/$organizationId/$projectId',
}),
},
{
label: 'Create dashboard',
icon: LayoutDashboardIcon,
onClick: () => pushModal('AddDashboard'),
},
{
label: 'Create notification rule',
icon: BellIcon,
onClick: () =>
navigate({
to: '/$organizationId/$projectId/notifications/rules',
from: '/$organizationId/$projectId',
}),
},
];
const [currentActionIndex, setCurrentActionIndex] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setCurrentActionIndex((prevIndex) => {
const nextIndex = (prevIndex + 1) % ACTIONS.length;
if (nextIndex === 0 && prevIndex !== 0) {
clearInterval(interval);
return 0;
}
return nextIndex;
});
}, 2000);
return () => clearInterval(interval);
}, []);
return (
{ACTIONS.map((action) => (
{action.label}
))}
);
}