import { css } from '@emotion/css'; import React from 'react'; import { DateTimeInput, GrafanaTheme } from '@grafana/data'; import { useStyles } from '@grafana/ui'; import { isPanelModelLibraryPanel } from '../../guard'; import { PanelModelWithLibraryPanel } from '../../types'; interface Props { panel: PanelModelWithLibraryPanel; formatDate?: (dateString: DateTimeInput, format?: string) => string; } export const LibraryPanelInformation: React.FC = ({ panel, formatDate }) => { const styles = useStyles(getStyles); if (!isPanelModelLibraryPanel(panel)) { return null; } return (
{`Used on ${panel.libraryPanel.meta.connectedDashboards} `} {panel.libraryPanel.meta.connectedDashboards === 1 ? 'dashboard' : 'dashboards'}
Last edited on {formatDate?.(panel.libraryPanel.meta.updated, 'L') ?? panel.libraryPanel.meta.updated} by {panel.libraryPanel.meta.updatedBy.avatarUrl && ( {`Avatar )} {panel.libraryPanel.meta.updatedBy.name}
); }; const getStyles = (theme: GrafanaTheme) => { return { info: css` line-height: 1; `, libraryPanelInfo: css` color: ${theme.colors.textSemiWeak}; font-size: ${theme.typography.size.sm}; `, userAvatar: css` border-radius: 50%; box-sizing: content-box; width: 22px; height: 22px; padding-left: ${theme.spacing.sm}; padding-right: ${theme.spacing.sm}; `, }; };