review-panel.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { FC, memo, useMemo } from 'react'
  2. import ReviewPanelTabs from './review-panel-tabs'
  3. import ReviewPanelCurrentFile from './review-panel-current-file'
  4. import { ReviewPanelOverview } from './review-panel-overview'
  5. import classnames from 'classnames'
  6. import { useReviewPanelStyles } from '@/features/review-panel/hooks/use-review-panel-styles'
  7. import { useReviewPanelViewContext } from '../context/review-panel-view-context'
  8. const ReviewPanel: FC<{ mini?: boolean }> = ({ mini = false }) => {
  9. const choosenSubView = useReviewPanelViewContext()
  10. const activeSubView = useMemo(
  11. () => (mini ? 'cur_file' : choosenSubView),
  12. [choosenSubView, mini]
  13. )
  14. const style = useReviewPanelStyles()
  15. const className = classnames('review-panel-container', {
  16. 'review-panel-mini': mini,
  17. 'review-panel-subview-overview': activeSubView === 'overview',
  18. })
  19. return (
  20. <div className={className} style={style} data-testid="review-panel">
  21. <div id="review-panel-inner" className="review-panel-inner">
  22. {activeSubView === 'cur_file' && <ReviewPanelCurrentFile />}
  23. {activeSubView === 'overview' && <ReviewPanelOverview />}
  24. <div
  25. className="review-panel-footer"
  26. id="review-panel-tabs"
  27. role="tablist"
  28. >
  29. <ReviewPanelTabs />
  30. </div>
  31. </div>
  32. </div>
  33. )
  34. }
  35. export default memo(ReviewPanel)