import Link from 'next/link'; import { useRouter } from 'next/router'; import React from 'react'; import { hasPermission, Permission } from '../../../../server/lib/permissions'; import { useUser } from '../../../hooks/useUser'; export interface SettingsRoute { text: string; content?: React.ReactNode; route: string; regex: RegExp; requiredPermission?: Permission | Permission[]; permissionType?: { type: 'and' | 'or' }; hidden?: boolean; } const SettingsLink: React.FC<{ tabType: 'default' | 'button'; currentPath: string; route: string; regex: RegExp; hidden?: boolean; isMobile?: boolean; }> = ({ children, tabType, currentPath, route, regex, hidden = false, isMobile = false, }) => { if (hidden) { return null; } if (isMobile) { return ; } let linkClasses = 'px-1 py-4 ml-8 text-sm font-medium leading-5 transition duration-300 border-b-2 border-transparent whitespace-nowrap first:ml-0'; let activeLinkColor = 'text-indigo-500 border-indigo-600'; let inactiveLinkColor = 'text-gray-500 border-transparent hover:text-gray-300 hover:border-gray-400 focus:text-gray-300 focus:border-gray-400'; if (tabType === 'button') { linkClasses = 'px-3 py-2 ml-8 text-sm font-medium transition duration-300 rounded-md whitespace-nowrap first:ml-0'; activeLinkColor = 'bg-indigo-700'; inactiveLinkColor = 'bg-gray-800 hover:bg-gray-700 focus:bg-gray-700'; } return ( {children} ); }; const SettingsTabs: React.FC<{ tabType?: 'default' | 'button'; settingsRoutes: SettingsRoute[]; }> = ({ tabType = 'default', settingsRoutes }) => { const router = useRouter(); const { user: currentUser } = useUser(); return ( <>
{tabType === 'button' ? (
) : (
)} ); }; export default SettingsTabs;