|
@@ -71,6 +71,22 @@ const SettingTheme = (props: Props) => {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ const renderItem = (label: string, key: keyof typeof defaultTheme) => {
|
|
|
+ return (
|
|
|
+ <Item>
|
|
|
+ <ListItemText primary={label} />
|
|
|
+ <Round sx={{ background: theme[key] || defaultTheme[key] }} />
|
|
|
+ <TextField
|
|
|
+ {...textProps}
|
|
|
+ value={theme[key] ?? ""}
|
|
|
+ placeholder={defaultTheme[key]}
|
|
|
+ onChange={handleChange(key)}
|
|
|
+ onKeyDown={(e) => e.key === "Enter" && onSave()}
|
|
|
+ />
|
|
|
+ </Item>
|
|
|
+ );
|
|
|
+ };
|
|
|
+
|
|
|
return (
|
|
|
<Dialog open={open} onClose={onClose}>
|
|
|
<DialogTitle>{t("Theme Setting")}</DialogTitle>
|
|
@@ -79,120 +95,39 @@ const SettingTheme = (props: Props) => {
|
|
|
sx={{ width: 400, maxHeight: 300, overflow: "auto", pb: 0 }}
|
|
|
>
|
|
|
<List sx={{ pt: 0 }}>
|
|
|
- <Item>
|
|
|
- <ListItemText primary="Primary Color" />
|
|
|
-
|
|
|
- <Round
|
|
|
- sx={{
|
|
|
- background: theme.primary_color || defaultTheme.primary_color,
|
|
|
- }}
|
|
|
- />
|
|
|
- <TextField
|
|
|
- {...textProps}
|
|
|
- value={theme.primary_color ?? ""}
|
|
|
- placeholder={defaultTheme.primary_color}
|
|
|
- onChange={handleChange("primary_color")}
|
|
|
- />
|
|
|
- </Item>
|
|
|
-
|
|
|
- <Item>
|
|
|
- <ListItemText primary="Secondary Color" />
|
|
|
+ {renderItem("Primary Color", "primary_color")}
|
|
|
|
|
|
- <Round
|
|
|
- sx={{
|
|
|
- background:
|
|
|
- theme.secondary_color || defaultTheme.secondary_color,
|
|
|
- }}
|
|
|
- />
|
|
|
- <TextField
|
|
|
- {...textProps}
|
|
|
- value={theme.secondary_color ?? ""}
|
|
|
- placeholder={defaultTheme.secondary_color}
|
|
|
- onChange={handleChange("secondary_color")}
|
|
|
- />
|
|
|
- </Item>
|
|
|
-
|
|
|
- <Item>
|
|
|
- <ListItemText primary="Info Color" />
|
|
|
-
|
|
|
- <Round
|
|
|
- sx={{
|
|
|
- background: theme.info_color || defaultTheme.info_color,
|
|
|
- }}
|
|
|
- />
|
|
|
- <TextField
|
|
|
- {...textProps}
|
|
|
- value={theme.info_color ?? ""}
|
|
|
- placeholder={defaultTheme.info_color}
|
|
|
- onChange={handleChange("info_color")}
|
|
|
- />
|
|
|
- </Item>
|
|
|
+ {renderItem("Secondary Color", "secondary_color")}
|
|
|
|
|
|
- <Item>
|
|
|
- <ListItemText primary="Error Color" />
|
|
|
+ {renderItem("Primary Text", "primary_text")}
|
|
|
|
|
|
- <Round
|
|
|
- sx={{
|
|
|
- background: theme.error_color || defaultTheme.error_color,
|
|
|
- }}
|
|
|
- />
|
|
|
- <TextField
|
|
|
- {...textProps}
|
|
|
- value={theme.error_color ?? ""}
|
|
|
- placeholder={defaultTheme.error_color}
|
|
|
- onChange={handleChange("error_color")}
|
|
|
- />
|
|
|
- </Item>
|
|
|
+ {renderItem("Secondary Text", "secondary_text")}
|
|
|
|
|
|
- <Item>
|
|
|
- <ListItemText primary="Warning Color" />
|
|
|
+ {renderItem("Info Color", "info_color")}
|
|
|
|
|
|
- <Round
|
|
|
- sx={{
|
|
|
- background: theme.warning_color || defaultTheme.warning_color,
|
|
|
- }}
|
|
|
- />
|
|
|
- <TextField
|
|
|
- {...textProps}
|
|
|
- value={theme.warning_color ?? ""}
|
|
|
- placeholder={defaultTheme.warning_color}
|
|
|
- onChange={handleChange("warning_color")}
|
|
|
- />
|
|
|
- </Item>
|
|
|
+ {renderItem("Error Color", "error_color")}
|
|
|
|
|
|
- <Item>
|
|
|
- <ListItemText primary="Success Color" />
|
|
|
+ {renderItem("Warning Color", "warning_color")}
|
|
|
|
|
|
- <Round
|
|
|
- sx={{
|
|
|
- background: theme.success_color || defaultTheme.success_color,
|
|
|
- }}
|
|
|
- />
|
|
|
- <TextField
|
|
|
- {...textProps}
|
|
|
- value={theme.success_color ?? ""}
|
|
|
- placeholder={defaultTheme.success_color}
|
|
|
- onChange={handleChange("success_color")}
|
|
|
- />
|
|
|
- </Item>
|
|
|
+ {renderItem("Success Color", "success_color")}
|
|
|
|
|
|
<Item>
|
|
|
<ListItemText primary="Font Family" />
|
|
|
-
|
|
|
<TextField
|
|
|
{...textProps}
|
|
|
value={theme.font_family ?? ""}
|
|
|
onChange={handleChange("font_family")}
|
|
|
+ onKeyDown={(e) => e.key === "Enter" && onSave()}
|
|
|
/>
|
|
|
</Item>
|
|
|
|
|
|
<Item>
|
|
|
<ListItemText primary="CSS Injection" />
|
|
|
-
|
|
|
<TextField
|
|
|
{...textProps}
|
|
|
value={theme.css_injection ?? ""}
|
|
|
onChange={handleChange("css_injection")}
|
|
|
+ onKeyDown={(e) => e.key === "Enter" && onSave()}
|
|
|
/>
|
|
|
</Item>
|
|
|
</List>
|