import { useCallback, useId } from 'react'; import { useIntl } from 'react-intl'; import { useAppSelector } from 'mastodon/store'; import classes from './skip_links.module.scss'; export const getNavigationSkipLinkId = () => 'skip-link-target-nav'; export const getColumnSkipLinkId = (index: number) => `skip-link-target-content-${index}`; export const SkipLinks: React.FC<{ multiColumn: boolean; onFocusGettingStartedColumn: () => void; }> = ({ multiColumn, onFocusGettingStartedColumn }) => { const intl = useIntl(); const columnCount = useAppSelector((state) => { const settings = state.settings as Immutable.Collection; return (settings.get('columns') as Immutable.Map).size; }); const focusMultiColumnNavbar = useCallback( (e: React.MouseEvent) => { e.preventDefault(); onFocusGettingStartedColumn(); }, [onFocusGettingStartedColumn], ); return ( ); }; const SkipLink: React.FC<{ children: string; target: string; onRouterLinkClick?: React.MouseEventHandler; hotkey: string; }> = ({ children, hotkey, target, onRouterLinkClick }) => { const intl = useIntl(); const id = useId(); return ( <> {children} {intl.formatMessage( { id: 'skip_links.hotkey', defaultMessage: 'Hotkey {hotkey}', }, { hotkey, span: (text) => {text}, }, )} ); };