+
+
+
+ {LAYOUTS.map(({ key, label, icon }) => (
+ updateEnableSingleColumnLayout(key)}
+ />
+ ))}
+
+
{THEMES.map(({ key, label, icon }) => (
-
+ isSelected={themeSetting === key}
+ icon={icon}
+ label={t(label)}
+ onClick={() => setThemeSetting(key)}
+ />
))}
@@ -47,24 +60,20 @@ const AppearanceSettingsPage = forwardRef(({ index }: { index?: number }, ref) =
{Object.entries(PRIMARY_COLORS).map(([key, config]) => (
-
+ }
+ label={t(config.name)}
onClick={() => setPrimaryColor(key as TPrimaryColor)}
- className={cn(
- 'flex flex-col items-center gap-2 py-4 rounded-lg border-2 transition-all',
- primaryColor === key
- ? 'border-primary'
- : 'border-border hover:border-muted-foreground/40'
- )}
- >
-
-
{t(config.name)}
-
+ />
))}
@@ -74,3 +83,28 @@ const AppearanceSettingsPage = forwardRef(({ index }: { index?: number }, ref) =
})
AppearanceSettingsPage.displayName = 'AppearanceSettingsPage'
export default AppearanceSettingsPage
+
+const OptionButton = ({
+ isSelected,
+ onClick,
+ icon,
+ label
+}: {
+ isSelected: boolean
+ onClick: () => void
+ icon: React.ReactNode
+ label: string
+}) => {
+ return (
+