@grafana/ui
Version:
Grafana Components Library
1 lines • 4.3 kB
Source Map (JSON)
{"version":3,"file":"VerticalTab.mjs","sources":["../../../../src/components/Tabs/VerticalTab.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { forwardRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { Counter } from './Counter';\nimport { TabProps } from './Tab';\n\nexport const VerticalTab = forwardRef<HTMLAnchorElement, TabProps>(\n ({ label, active, icon, counter, className, suffix: Suffix, onChangeTab, href, ...otherProps }, ref) => {\n const tabsStyles = useStyles2(getTabStyles);\n const content = () => (\n <>\n {icon && <Icon name={icon} />}\n {label}\n {typeof counter === 'number' && <Counter value={counter} />}\n {Suffix && <Suffix className={tabsStyles.suffix} />}\n </>\n );\n\n const linkClass = cx(tabsStyles.link, active && tabsStyles.activeStyle);\n\n return (\n <a\n href={href}\n className={linkClass}\n {...otherProps}\n onClick={onChangeTab}\n aria-label={otherProps['aria-label'] || selectors.components.Tab.title(label)}\n role=\"tab\"\n aria-selected={active}\n ref={ref}\n >\n {content()}\n </a>\n );\n }\n);\n\nVerticalTab.displayName = 'Tab';\n\nconst getTabStyles = (theme: GrafanaTheme2) => {\n return {\n link: css({\n padding: '6px 12px',\n display: 'block',\n height: '100%',\n cursor: 'pointer',\n position: 'relative',\n\n color: theme.colors.text.primary,\n\n svg: {\n marginRight: theme.spacing(1),\n },\n\n '&:hover, &:focus': {\n textDecoration: 'underline',\n },\n }),\n activeStyle: css({\n label: 'activeTabStyle',\n color: theme.colors.text.maxContrast,\n overflow: 'hidden',\n\n '&::before': {\n display: 'block',\n content: '\" \"',\n position: 'absolute',\n left: 0,\n width: '4px',\n bottom: '2px',\n top: '2px',\n borderRadius: theme.shape.radius.default,\n backgroundImage: 'linear-gradient(0deg, #f05a28 30%, #fbca0a 99%)',\n },\n }),\n suffix: css({\n marginLeft: theme.spacing(1),\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;;;AAYO,MAAM,WAAc,GAAA,UAAA;AAAA,EACzB,CAAC,EAAE,KAAO,EAAA,MAAA,EAAQ,MAAM,OAAS,EAAA,SAAA,EAAW,MAAQ,EAAA,MAAA,EAAQ,WAAa,EAAA,IAAA,EAAM,GAAG,UAAA,IAAc,GAAQ,KAAA;AACtG,IAAM,MAAA,UAAA,GAAa,WAAW,YAAY,CAAA;AAC1C,IAAM,MAAA,OAAA,GAAU,sBAEX,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,MAAQ,IAAA,oBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAM,IAAM,EAAA,CAAA;AAAA,MAC1B,KAAA;AAAA,MACA,OAAO,OAAY,KAAA,QAAA,oBAAa,GAAA,CAAA,OAAA,EAAA,EAAQ,OAAO,OAAS,EAAA,CAAA;AAAA,MACxD,MAAU,oBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,SAAA,EAAW,WAAW,MAAQ,EAAA;AAAA,KACnD,EAAA,CAAA;AAGF,IAAA,MAAM,YAAY,EAAG,CAAA,UAAA,CAAW,IAAM,EAAA,MAAA,IAAU,WAAW,WAAW,CAAA;AAEtE,IACE,uBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAW,EAAA,SAAA;AAAA,QACV,GAAG,UAAA;AAAA,QACJ,OAAS,EAAA,WAAA;AAAA,QACT,YAAA,EAAY,WAAW,YAAY,CAAA,IAAK,UAAU,UAAW,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,QAC5E,IAAK,EAAA,KAAA;AAAA,QACL,eAAe,EAAA,MAAA;AAAA,QACf,GAAA;AAAA,QAEC,QAAQ,EAAA,OAAA;AAAA;AAAA,KACX;AAAA;AAGN;AAEA,WAAA,CAAY,WAAc,GAAA,KAAA;AAE1B,MAAM,YAAA,GAAe,CAAC,KAAyB,KAAA;AAC7C,EAAO,OAAA;AAAA,IACL,MAAM,GAAI,CAAA;AAAA,MACR,OAAS,EAAA,UAAA;AAAA,MACT,OAAS,EAAA,OAAA;AAAA,MACT,MAAQ,EAAA,MAAA;AAAA,MACR,MAAQ,EAAA,SAAA;AAAA,MACR,QAAU,EAAA,UAAA;AAAA,MAEV,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA;AAAA,MAEzB,GAAK,EAAA;AAAA,QACH,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,OAC9B;AAAA,MAEA,kBAAoB,EAAA;AAAA,QAClB,cAAgB,EAAA;AAAA;AAClB,KACD,CAAA;AAAA,IACD,aAAa,GAAI,CAAA;AAAA,MACf,KAAO,EAAA,gBAAA;AAAA,MACP,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,WAAA;AAAA,MACzB,QAAU,EAAA,QAAA;AAAA,MAEV,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,OAAA;AAAA,QACT,OAAS,EAAA,KAAA;AAAA,QACT,QAAU,EAAA,UAAA;AAAA,QACV,IAAM,EAAA,CAAA;AAAA,QACN,KAAO,EAAA,KAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,QACR,GAAK,EAAA,KAAA;AAAA,QACL,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA,OAAA;AAAA,QACjC,eAAiB,EAAA;AAAA;AACnB,KACD,CAAA;AAAA,IACD,QAAQ,GAAI,CAAA;AAAA,MACV,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,KAC5B;AAAA,GACH;AACF,CAAA;;;;"}