Back to Mattermost

CLAUDE: `platform/components/` (`@mattermost/components`)

webapp/platform/components/CLAUDE.OPTIONAL.md

11.7.01.4 KB
Original Source

CLAUDE: platform/components/ (@mattermost/components)

Purpose

  • Cross-product React components (GenericModal, tour tips, loaders, hooks) shared by Channels, Boards, Playbooks, and plugins.
  • Ensures consistent UX, theming, and accessibility across Mattermost surfaces.

Implementation Guidelines

  • Follow webapp/STYLE_GUIDE.md → React Component Structure, Styling & Theming, Accessibility.
  • Components must be framework-agnostic: accept data/handlers via props, avoid direct Redux or routing dependencies.
  • Keep styles local via SCSS modules or styled components already used in this package; expose classNames for host overrides when necessary.
  • Include Storybook/README snippets where helpful (see package README).

Testing

  • All components need RTL tests (*.test.tsx) demonstrating accessibility behaviors.
  • Provide test utils (testUtils.tsx) for consumers who need to mock these components.

Key Modules

  • generic_modal/ – baseline modal with focus trapping and keyboard handling.
  • tour_tip/ – coach marks with backdrop management.
  • skeleton_loader/, pulsating_dot/ – loading indicators.
  • hooks/ – shared hooks like useFocusTrap.

Release Notes

  • Breaking props or behavior requires updating platform/components/README.md and notifying dependent teams.

References

  • generic_modal/generic_modal.tsx, tour_tip/tour_tip.tsx, hooks/useFocusTrap.test.tsx.