All files / src/features/Merchants/MerchantSidePanel/WithRepository/Challenges ChallengeLayout.tsx

71.42% Statements 5/7
90.9% Branches 10/11
33.33% Functions 1/3
71.42% Lines 5/7

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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80                                21x                   34x 34x 34x 34x                                                                                                    
import { Box, Stack } from "@mui/material";
import { useAppTheme } from "@theme/v2/Provider";
import { PropsWithChildren, ReactNode, useState } from "react";
import { useCustomThemeV2 } from "@theme/hooks/useCustomThemeV2";
 
interface LayoutProps {
  icon?: ReactNode;
  main?: ReactNode;
  attachConversations: ReactNode;
  end?: ReactNode;
  onClick: () => void;
  applyIconBG?: boolean;
  alwaysShowConversation?: boolean;
  horizontalPadding?: number | string;
}
 
const ChallengeLayout = ({
  icon,
  main,
  end,
  attachConversations,
  applyIconBG = true,
  alwaysShowConversation = false,
  horizontalPadding = "0px",
  onClick,
}: PropsWithChildren<LayoutProps>) => {
  const { palette } = useAppTheme();
  const { isDesktopView } = useCustomThemeV2();
  const [isHover, setIsHover] = useState<boolean>(false);
  return (
    <Stack
      direction="row"
      id="challenge-layout1"
      data-testid="challenge-layout"
      alignItems="center"
      justifyContent="space-between"
      gap={2}
      onMouseOver={() => setIsHover(true)}
      onMouseLeave={() => setIsHover(false)}
      onClick={onClick}
      sx={{
        cursor: "pointer",
        padding: `8px ${horizontalPadding}`,
        borderRadius: "8px",
        "&:hover": {
          backgroundColor: palette.primitive?.transparent["darken-2"],
        },
      }}
    >
      <Stack alignItems="center" gap={2} direction="row">
        <Stack
          justifyContent="center"
          alignItems="center"
          sx={{
            width: "36px",
            height: "36px",
            borderRadius: "40px",
            backgroundColor: applyIconBG
              ? palette.primitive?.transparent["darken-5"]
              : "transparent",
            padding: applyIconBG ? "8px" : "0px",
          }}
        >
          {icon}
        </Stack>
 
        <Box>{main}</Box>
      </Stack>
      <Stack direction="row" gap={2} alignItems="center">
        {(isHover || alwaysShowConversation) &&
          isDesktopView &&
          attachConversations}
        {end}
      </Stack>
    </Stack>
  );
};
 
export default ChallengeLayout;