// ════════════════════════════════════════════════════════════════ // 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 (
{title}
{children}
); } function TwRadio({ value, onChange, options }) { return (
{options.map(o => ( ))}
); } window.TweaksPanel = TweaksPanel;