mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 10:42:14 +08:00

* update eslint, tsconfig + esbuild to handle new jsx transform * remove thing that breaks the new jsx transform * remove react imports * adjust grafana-icons build * is this the correct syntax? * try this * well this was much easier than expected... * change grafana-plugin-configs webpack config * fixes * fix lockfile * fix 2 more violations * use path.resolve instead of require.resolve * remove react import * fix react imports * more fixes * remove React import * remove import React from docs * remove another react import
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { css } from '@emotion/css';
|
|
|
|
import { NavModelItem, GrafanaTheme2 } from '@grafana/data';
|
|
import { useStyles2, TabsBar, Tab, toIconName } from '@grafana/ui';
|
|
|
|
export interface Props {
|
|
navItem: NavModelItem;
|
|
}
|
|
|
|
export function PageTabs({ navItem }: Props) {
|
|
const styles = useStyles2(getStyles);
|
|
|
|
return (
|
|
<div className={styles.tabsWrapper}>
|
|
<TabsBar>
|
|
{navItem.children!.map((child, index) => {
|
|
const icon = child.icon ? toIconName(child.icon) : undefined;
|
|
return (
|
|
!child.hideFromTabs && (
|
|
<Tab
|
|
label={child.text}
|
|
active={child.active}
|
|
key={`${child.url}-${index}`}
|
|
icon={icon}
|
|
counter={child.tabCounter}
|
|
href={child.url}
|
|
suffix={child.tabSuffix}
|
|
onChangeTab={child.onClick}
|
|
/>
|
|
)
|
|
);
|
|
})}
|
|
</TabsBar>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
const getStyles = (theme: GrafanaTheme2) => {
|
|
return {
|
|
tabsWrapper: css({
|
|
paddingBottom: theme.spacing(3),
|
|
}),
|
|
};
|
|
};
|