Skip to content

Commit 2a9abe4

Browse files
committed
emotion: Logs
1 parent b50acf1 commit 2a9abe4

File tree

1 file changed

+28
-38
lines changed
  • site/src/components/WorkspaceBuildLogs

1 file changed

+28
-38
lines changed

site/src/components/WorkspaceBuildLogs/Logs.tsx

+28-38
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import { makeStyles } from "@mui/styles";
2-
import { LogLevel } from "api/typesGenerated";
1+
import { type Interpolation, type Theme } from "@emotion/react";
2+
import type { LogLevel } from "api/typesGenerated";
33
import dayjs from "dayjs";
4-
import { FC, useMemo } from "react";
5-
import { MONOSPACE_FONT_FAMILY } from "theme/constants";
6-
import { combineClasses } from "utils/combineClasses";
4+
import { type FC, type ReactNode, useMemo } from "react";
75
import AnsiToHTML from "ansi-to-html";
6+
import { MONOSPACE_FONT_FAMILY } from "theme/constants";
87

98
export interface Line {
109
time: string;
@@ -24,19 +23,17 @@ export const Logs: FC<React.PropsWithChildren<LogsProps>> = ({
2423
lines,
2524
className = "",
2625
}) => {
27-
const styles = useStyles();
28-
2926
return (
30-
<div className={combineClasses([className, styles.root])}>
31-
<div className={styles.scrollWrapper}>
27+
<div css={styles.root} className={className}>
28+
<div css={styles.scrollWrapper}>
3229
{lines.map((line, idx) => (
33-
<div className={combineClasses([styles.line, line.level])} key={idx}>
30+
<div css={[styles.line, line.level]} key={idx}>
3431
{!hideTimestamps && (
3532
<>
36-
<span className={styles.time}>
33+
<span css={styles.time}>
3734
{dayjs(line.time).format(`HH:mm:ss.SSS`)}
3835
</span>
39-
<span className={styles.space} />
36+
<span css={styles.space} />
4037
</>
4138
)}
4239
<span>{line.output}</span>
@@ -56,39 +53,32 @@ export const LogLine: FC<{
5653
hideTimestamp?: boolean;
5754
number?: number;
5855
style?: React.CSSProperties;
59-
sourceIcon?: JSX.Element;
56+
sourceIcon?: ReactNode;
6057
maxNumber?: number;
6158
}> = ({ line, hideTimestamp, number, maxNumber, sourceIcon, style }) => {
62-
const styles = useStyles();
6359
const output = useMemo(() => {
6460
return convert.toHtml(line.output.split(/\r/g).pop() as string);
6561
}, [line.output]);
6662
const isUsingLineNumber = number !== undefined;
6763

6864
return (
6965
<div
70-
className={combineClasses([
71-
styles.line,
72-
line.level,
73-
isUsingLineNumber && styles.lineNumber,
74-
])}
66+
css={[styles.line, isUsingLineNumber && styles.lineNumber]}
67+
className={line.level}
7568
style={style}
7669
>
7770
{sourceIcon}
7871
{!hideTimestamp && (
7972
<>
8073
<span
81-
className={combineClasses([
82-
styles.time,
83-
isUsingLineNumber && styles.number,
84-
])}
74+
css={[styles.time, isUsingLineNumber && styles.number]}
8575
style={{
8676
minWidth: `${maxNumber ? maxNumber.toString().length - 1 : 0}em`,
8777
}}
8878
>
8979
{number ? number : dayjs(line.time).format(`HH:mm:ss.SSS`)}
9080
</span>
91-
<span className={styles.space} />
81+
<span css={styles.space} />
9282
</>
9383
)}
9484
<span
@@ -100,8 +90,8 @@ export const LogLine: FC<{
10090
);
10191
};
10292

103-
const useStyles = makeStyles((theme) => ({
104-
root: {
93+
const styles = {
94+
root: (theme) => ({
10595
minHeight: 156,
10696
padding: theme.spacing(1, 0),
10797
borderRadius: theme.shape.borderRadius,
@@ -112,11 +102,11 @@ const useStyles = makeStyles((theme) => ({
112102
borderBottom: `1px solid ${theme.palette.divider}`,
113103
borderRadius: 0,
114104
},
115-
},
105+
}),
116106
scrollWrapper: {
117107
minWidth: "fit-content",
118108
},
119-
line: {
109+
line: (theme) => ({
120110
wordBreak: "break-all",
121111
display: "flex",
122112
alignItems: "center",
@@ -139,24 +129,24 @@ const useStyles = makeStyles((theme) => ({
139129
"&.warn": {
140130
backgroundColor: theme.palette.warning.dark,
141131
},
142-
},
143-
lineNumber: {
132+
}),
133+
lineNumber: (theme) => ({
144134
paddingLeft: theme.spacing(2),
145-
},
146-
space: {
135+
}),
136+
space: (theme) => ({
147137
userSelect: "none",
148138
width: theme.spacing(3),
149139
display: "block",
150140
flexShrink: 0,
151-
},
152-
time: {
141+
}),
142+
time: (theme) => ({
153143
userSelect: "none",
154144
whiteSpace: "pre",
155145
display: "inline-block",
156146
color: theme.palette.text.secondary,
157-
},
158-
number: {
147+
}),
148+
number: (theme) => ({
159149
width: theme.spacing(4),
160150
textAlign: "right",
161-
},
162-
}));
151+
}),
152+
} satisfies Record<string, Interpolation<Theme>>;

0 commit comments

Comments
 (0)