import classNames from 'clsx'; import React, { memo } from 'react'; import type { FC } from 'react'; import type { ButtonTabProps } from '../../types'; import ButtonTab from './ButtonTab'; import ChromeTab from './ChromeTab'; import SvgClose from './SvgClose'; import styles from './index.module.css'; import { ACTIVE_COLOR, createTabCssVars } from './shared'; type PageTabProps = Omit; const PageTab: FC = ({ active, activeColor = ACTIVE_COLOR, buttonClass, children, chromeClass, className, closable = true, darkMode, handleClose, mode = 'chrome', prefix, style, suffix, ...rest }) => { const cssVars = createTabCssVars(activeColor) as React.CSSProperties; const getActiveTabComponent = { button: { class: buttonClass, component: ButtonTab }, chrome: { class: chromeClass, component: ChromeTab } }; const ActiveTabComponent = getActiveTabComponent[mode].component; const activeClass = getActiveTabComponent[mode].class; function closeTab(event: React.MouseEvent | TouchEvent) { event.stopPropagation(); if (handleClose) handleClose(); } const suffixComponent = suffix || (closable && ( )); return ( {children} ); }; export default memo(PageTab);