|
|
@ -7,22 +7,27 @@ import { Heading1 } from "@/components/utils/Text"; |
|
|
|
const availableThemes = [ |
|
|
|
const availableThemes = [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
id: "default", |
|
|
|
id: "default", |
|
|
|
|
|
|
|
selector: "theme-default", |
|
|
|
key: "settings.appearance.themes.default", |
|
|
|
key: "settings.appearance.themes.default", |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
id: "blue", |
|
|
|
id: "blue", |
|
|
|
|
|
|
|
selector: "theme-blue", |
|
|
|
key: "settings.appearance.themes.blue", |
|
|
|
key: "settings.appearance.themes.blue", |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
id: "teal", |
|
|
|
id: "teal", |
|
|
|
|
|
|
|
selector: "theme-teal", |
|
|
|
key: "settings.appearance.themes.teal", |
|
|
|
key: "settings.appearance.themes.teal", |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
id: "red", |
|
|
|
id: "red", |
|
|
|
|
|
|
|
selector: "theme-red", |
|
|
|
key: "settings.appearance.themes.red", |
|
|
|
key: "settings.appearance.themes.red", |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
id: "gray", |
|
|
|
id: "gray", |
|
|
|
|
|
|
|
selector: "theme-gray", |
|
|
|
key: "settings.appearance.themes.gray", |
|
|
|
key: "settings.appearance.themes.gray", |
|
|
|
}, |
|
|
|
}, |
|
|
|
]; |
|
|
|
]; |
|
|
@ -121,9 +126,9 @@ function ThemePreview(props: { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
export function ThemePart(props: { |
|
|
|
export function ThemePart(props: { |
|
|
|
active: string | null; |
|
|
|
active: string; |
|
|
|
inUse: string | null; |
|
|
|
inUse: string; |
|
|
|
setTheme: (theme: string | null) => void; |
|
|
|
setTheme: (theme: string) => void; |
|
|
|
}) { |
|
|
|
}) { |
|
|
|
const { t } = useTranslation(); |
|
|
|
const { t } = useTranslation(); |
|
|
|
|
|
|
|
|
|
|
@ -131,10 +136,9 @@ export function ThemePart(props: { |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<Heading1 border>{t("settings.appearance.title")}</Heading1> |
|
|
|
<Heading1 border>{t("settings.appearance.title")}</Heading1> |
|
|
|
<div className="grid grid-cols-[repeat(auto-fill,minmax(160px,1fr))] gap-6 max-w-[700px]"> |
|
|
|
<div className="grid grid-cols-[repeat(auto-fill,minmax(160px,1fr))] gap-6 max-w-[700px]"> |
|
|
|
{/* default theme */} |
|
|
|
|
|
|
|
{availableThemes.map((v) => ( |
|
|
|
{availableThemes.map((v) => ( |
|
|
|
<ThemePreview |
|
|
|
<ThemePreview |
|
|
|
selector={`theme-${v.id}`} |
|
|
|
selector={v.selector} |
|
|
|
active={props.active === v.id} |
|
|
|
active={props.active === v.id} |
|
|
|
inUse={props.inUse === v.id} |
|
|
|
inUse={props.inUse === v.id} |
|
|
|
name={t(v.key)} |
|
|
|
name={t(v.key)} |
|
|
|