import { css } from '@emotion/css'; import { GrafanaTheme2, NavModelItem } from '@grafana/data'; import { useTranslate } from '@grafana/runtime/unstable'; import { EmptyState, useStyles2 } from '@grafana/ui'; import { usePinnedItems } from 'app/core/components/AppChrome/MegaMenu/hooks'; import { findByUrl } from 'app/core/components/AppChrome/MegaMenu/utils'; import { NavLandingPageCard } from 'app/core/components/NavLandingPage/NavLandingPageCard'; import { Page } from 'app/core/components/Page/Page'; import { Trans } from 'app/core/internationalization'; import { useSelector } from 'app/types'; export function BookmarksPage() { const t = useTranslate(); const styles = useStyles2(getStyles); const pinnedItems = usePinnedItems(); const navTree = useSelector((state) => state.navBarTree); const validItems = pinnedItems.reduce((acc: NavModelItem[], url) => { const item = findByUrl(navTree, url); if (item) { acc.push(item); } return acc; }, []); return ( {validItems.length === 0 ? ( Hover over any item in the nav menu and click on the bookmark icon to add it here. ) : (
{validItems.map((item) => { return ( ); })}
)}
); } const getStyles = (theme: GrafanaTheme2) => ({ grid: css({ display: 'grid', gap: theme.spacing(3), gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 1fr))', gridAutoRows: '138px', padding: theme.spacing(2, 0), }), }); export default BookmarksPage;