log-item.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { styled, Box } from "@mui/material";
  2. const Item = styled(Box)(({ theme: { palette } }) => ({
  3. padding: "8px 0",
  4. margin: "0 12px",
  5. lineHeight: 1.35,
  6. borderBottom: `1px solid ${palette.divider}`,
  7. fontSize: "0.875rem",
  8. userSelect: "text",
  9. "& .time": {
  10. color: palette.text.secondary,
  11. },
  12. "& .type": {
  13. display: "inline-block",
  14. marginLeft: 8,
  15. textAlign: "center",
  16. borderRadius: 2,
  17. textTransform: "uppercase",
  18. fontWeight: "600",
  19. },
  20. '& .type[data-type="error"], & .type[data-type="err"]': {
  21. color: palette.error.main,
  22. },
  23. '& .type[data-type="warning"], & .type[data-type="warn"]': {
  24. color: palette.warning.main,
  25. },
  26. '& .type[data-type="info"], & .type[data-type="inf"]': {
  27. color: palette.info.main,
  28. },
  29. "& .data": {
  30. color: palette.text.primary,
  31. },
  32. }));
  33. interface Props {
  34. value: ILogItem;
  35. }
  36. const LogItem = (props: Props) => {
  37. const { value } = props;
  38. return (
  39. <Item>
  40. <div>
  41. <span className="time">{value.time}</span>
  42. <span className="type" data-type={value.type.toLowerCase()}>
  43. {value.type}
  44. </span>
  45. </div>
  46. <div>
  47. <span className="data">{value.payload}</span>
  48. </div>
  49. </Item>
  50. );
  51. };
  52. export default LogItem;