import React, { useMemo } from 'react'; import { Box, Grid, useTheme } from '@chakra-ui/react'; import type { GridProps } from '@chakra-ui/react'; // @ts-ignore interface Props extends GridProps { list: { id: string; label: string }[]; activeId: string; size?: 'sm' | 'md' | 'lg'; onChange: (id: string) => void; } const Tabs = ({ list, size = 'md', activeId, onChange, ...props }: Props) => { const theme = useTheme(); const sizeMap = useMemo(() => { switch (size) { case 'sm': return { fontSize: 'sm', outP: '3px', inlineP: 1 }; case 'md': return { fontSize: 'md', outP: '4px', inlineP: 1 }; case 'lg': return { fontSize: 'lg', outP: '5px', inlineP: 2 }; } }, [size]); return ( {list.map((item) => ( { if (activeId === item.id) return; onChange(item.id); }} > {item.label} ))} ); }; export default Tabs;