All files / src/features/help/components HelpIconButton.tsx

100% Statements 58/58
100% Branches 3/3
100% Functions 2/2
100% Lines 58/58

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 591x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x  
/**
 * HelpIconButton.tsx
 * 
 * A reusable help icon button component that opens context-specific help topics.
 * 
 * @module features/help/components/HelpIconButton
 * @summary
 * Provides a standardized help icon button for opening help topics.
 * Integrates with the useHelp hook for topic management.
 * @enterprise
 * - Consistent help icon UI across the application
 * - Easy integration with help system via topic IDs
 * - Tooltip support for better UX
 * - Fully typed with TypeScript and documented with TypeDoc
 * @usage
 * ```tsx
 * import { HelpIconButton } from '@/features/help/components/HelpIconButton';
 * 
 * function MyComponent() {
 *  return (
 *   <div>
 *    <HelpIconButton topicId="app.main" tooltip="Get help on the main app" />
 *  </div>
 * );
 * }
 * ```
 */
import * as React from 'react';
import { IconButton, Tooltip } from '@mui/material';
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
import { useHelp } from '../../../hooks/useHelp';
 
/** Props for HelpIconButton component */
interface HelpIconButtonProps {
  /** ID from HELP_TOPICS (e.g. "app.main", "analytics.overview") */
  topicId: string;
  tooltip?: string;
}
 
/** Help icon button that opens a help topic when clicked */
export const HelpIconButton: React.FC<HelpIconButtonProps> = ({ topicId, tooltip }) => {
  const { openHelp } = useHelp();
 
  return (
    <Tooltip title={tooltip ?? 'Help'}>
      {/* Help icon button */}
      <IconButton
        size="small"
        onClick={() => openHelp(topicId)}
        aria-label="Open help"
      >
        <HelpOutlineIcon fontSize="small" />
      </IconButton>
    </Tooltip>
  );
};
 
export default HelpIconButton;