// ════════════════════════════════════════════════════════════════
// TweaksPanel — настройки прототипа (палитра / шрифт / плотность)
// Использует протокол __activate_edit_mode / __deactivate_edit_mode
// ════════════════════════════════════════════════════════════════
const { useState: useStateTw, useEffect: useEffectTw } = React;
function TweaksPanel({ tweaks, setTweak, onClose }) {
const users = window.SDH_ADMIN ? window.SDH_ADMIN.users : [];
return (
Tweaks
эксперименты с дизайном
{users.length > 0 && (
Переключите роль чтобы увидеть как выглядит интерфейс для каждой из 5 ролей. Маршруты под доступ скрываются автоматически.
)}
setTweak('density', v)}
options={[
{ id: 'cozy', label: 'уютно' },
{ id: 'compact', label: 'плотно' },
]}
/>
{[
{ id: 'bronze', cssVar: 'var(--brand-bronze)' },
{ id: 'emerald', cssVar: 'var(--hue-emerald)' },
{ id: 'rose', cssVar: 'var(--hue-rose)' },
].map(c => (
setTweak('sparkW', Number(e.target.value))}
style={{ width: '100%', accentColor: 'var(--brand-bronze)' }} />
{tweaks.sparkW}px
setTweak('focus', v === 'on')}
options={[
{ id: 'off', label: 'выкл' },
{ id: 'on', label: 'выделять ★' },
]}
/>
);
}
function TwSection({ title, children }) {
return (
);
}
function TwRadio({ value, onChange, options }) {
return (
{options.map(o => (
))}
);
}
window.TweaksPanel = TweaksPanel;