This commit is contained in:
seb
2026-09-29 10:25:50 +02:00
parent 447033e53a
commit 88c96c94a3
12 changed files with 578 additions and 89 deletions

View File

@@ -0,0 +1,45 @@
import { Automat } from 'react-automat';
/**
* @typedef {Object} HelpState
* @property {boolean} enabled Whether interactive help badges are enabled systemwide.
*/
/** @type {HelpState} */
const initialState = {
enabled: false,
};
/**
* Global reactive state for systemwide help badges mode.
* Persisted in IndexedDB so the setting survives page reloads and sessions.
* Registered as a named automat ('help') on window.__AUTOMATS__.
*
* @type {Automat<HelpState>}
*/
const helpAutomat = new Automat(
initialState,
{
/**
* Toggles the systemwide help mode on or off.
*/
toggle() {
helpAutomat.setState((prev) => ({ enabled: !prev?.enabled }));
},
/**
* Explicitly set whether help mode is enabled.
* @param {boolean} enabled
*/
setEnabled(enabled) {
helpAutomat.setState({ enabled: Boolean(enabled) });
},
},
{
name: 'help',
persist: true,
}
);
export default helpAutomat;
export const { toggle: toggleHelp, setEnabled: setHelpEnabled } = helpAutomat.actions;
export const isHelpEnabled = (state = helpAutomat.state) => Boolean(state?.enabled);