Files
core/src/features/admin/pages/SettingsPage.client.js
T
hykocx 183d151f0f style(admin): update card width classes from min-w to max-w on profile and settings pages
- replace `sm:min-w-3/5` with `lg:max-w-4/5` on all profile page cards
- replace `min-w-3/5` with `w-full lg:max-w-4/5` on settings page cards
2026-04-24 17:58:55 -04:00

93 lines
3.4 KiB
JavaScript

'use client';
import { useState, useEffect } from 'react';
import { registerPage } from '../registry.js';
import AdminHeader from '../components/AdminHeader.js';
import { Card, Input, Select, TabNav } from '@zen/core/shared/components';
import { applyTheme, getStoredTheme } from '@zen/core/themes';
const TABS = [
{ id: 'general', label: 'Général' },
{ id: 'appearance', label: 'Apparence' },
];
const THEME_OPTIONS = [
{ value: 'light', label: 'Mode clair' },
{ value: 'dark', label: 'Mode sombre' },
{ value: 'auto', label: 'Thème système' },
];
const SettingsPage = ({ appConfig = {} }) => {
const [activeTab, setActiveTab] = useState('general');
const [theme, setTheme] = useState('auto');
useEffect(() => {
setTheme(getStoredTheme());
}, []);
const handleThemeChange = (value) => {
setTheme(value);
applyTheme(value);
};
return (
<div className="flex flex-col gap-4 sm:gap-6 lg:gap-8">
<AdminHeader title="Paramètres" description="Configuration de votre espace ZEN" />
<div className="flex flex-col gap-6 items-start">
<TabNav tabs={TABS} activeTab={activeTab} onTabChange={setActiveTab} />
{activeTab === 'general' && (
<Card title="Informations générales" className='w-full lg:max-w-4/5'>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<Input
label="Nom du site"
value={appConfig.name || ''}
readOnly
disabled
/>
<Input
label="URL du site"
value={appConfig.siteUrl || ''}
readOnly
disabled
description="URL publique de votre site"
/>
<Input
label="Fuseau horaire"
value={appConfig.timezone || ''}
readOnly
disabled
/>
<Input
label="Format de date"
value={appConfig.dateFormat || ''}
readOnly
disabled
/>
</div>
</Card>
)}
{activeTab === 'appearance' && (
<Card title="Thème" className='w-full lg:max-w-4/5'>
<div className="max-w-xs">
<Select
label="Thème de l'interface"
value={theme}
onChange={handleThemeChange}
options={THEME_OPTIONS}
description="S'applique immédiatement et persiste entre les sessions"
/>
</div>
</Card>
)}
</div>
</div>
);
};
export default SettingsPage;
registerPage({ slug: 'settings', title: 'Paramètres', Component: SettingsPage });