import { Link, useNavigate } from '@tanstack/react-router';
import { AnimatePresence, motion } from 'framer-motion';
import {
ChevronDownIcon,
CogIcon,
CreditCardIcon,
LayoutListIcon,
PlusIcon,
UsersIcon,
WorkflowIcon,
} from 'lucide-react';
import { useEffect, useState } from 'react';
import { Badge } from './ui/badge';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from './ui/dropdown-menu';
import { Button } from '@/components/ui/button';
import { useAppContext } from '@/hooks/use-app-context';
import { pushModal } from '@/modals';
import type { RouterOutputs } from '@/trpc/client';
import { cn } from '@/utils/cn';
export default function SidebarOrganizationMenu({
organization,
}: {
organization: RouterOutputs['organization']['list'][number];
}) {
const { isSelfHosted } = useAppContext();
return (
<>
Projects
Settings
{!isSelfHosted && (
Billing
{organization?.isTrial && Trial}
{organization?.isExpired && Expired}
{organization?.isWillBeCanceled && Canceled}
{organization?.isCanceled && Canceled}
)}
Members
Integrations
>
);
}
export function ActionCTAButton() {
const navigate = useNavigate();
const ACTIONS = [
{
label: 'Create a project',
icon: PlusIcon,
onClick: () => pushModal('AddProject'),
},
{
label: 'Invite a user',
icon: UsersIcon,
onClick: () => pushModal('CreateInvite'),
},
{
label: 'Add integration',
icon: WorkflowIcon,
onClick: () =>
navigate({
to: '/$organizationId/integrations',
from: '/$organizationId',
}),
},
];
const [currentActionIndex, setCurrentActionIndex] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setCurrentActionIndex((prevIndex) => (prevIndex + 1) % ACTIONS.length);
}, 2000);
return () => clearInterval(interval);
}, []);
return (
{ACTIONS.map((action) => (
{action.label}
))}
);
}