diff --git a/packages/shared/components/Tabs.tsx b/packages/shared/components/Tabs.tsx new file mode 100644 index 00000000..3b48351f --- /dev/null +++ b/packages/shared/components/Tabs.tsx @@ -0,0 +1,67 @@ +import { + Tab, + TabList, + TabPanel, + TabPanels, + Tabs as ChakraTabs, +} from '@chakra-ui/react'; +import { type ReactNode, useState } from 'react'; +import { useSearchParams } from 'react-router-dom'; + +type TabName = string; + +type TabNode = ReactNode; + +type TabsProps = { + tabs: [TabName, TabNode][]; +}; + +export default function Tabs({ tabs }: TabsProps) { + const [searchParams, setSearchParams] = useSearchParams(); + const tabId = Number(searchParams.get('tab')); + const [tabIndex, setTabIndex] = useState(tabId); + + const handleTabsChange = (index: number) => setTabIndex(index); + + const handleSetTabParam = () => setSearchParams({ tab: `${tabIndex}` }); + + return ( + + + {tabs.map((tab, index) => ( + + {tab[0]} + + ))} + + + {tabs.map((tab, index) => ( + {tab[1]} + ))} + + + ); +}