import MaterialIcon, { AvailableUnfilledIcon, } from '@/shared/components/material-icon' import { ReactElement } from 'react' import { Nav, NavLink, TabContainer, TabContent, TabPane, } from 'react-bootstrap' export type SettingsEntry = SettingsLink | SettingsTab type SettingsTab = { icon: AvailableUnfilledIcon key: string component: ReactElement title: string } type SettingsLink = { key: string icon: AvailableUnfilledIcon href: string title: string } export const SettingsModalBody = ({ activeTab, setActiveTab, settingsTabs, }: { activeTab: string | null | undefined setActiveTab: (tab: string | null | undefined) => void settingsTabs: SettingsEntry[] }) => { return ( {settingsTabs.map(entry => ( ))} {settingsTabs .filter(t => 'component' in t) .map(({ key, component }) => ( {component} ))} ) } const SettingsNavLink = ({ entry }: { entry: SettingsEntry }) => { if ('href' in entry) { return ( {entry.title} ) } else { return ( <> {entry.title} > ) } }