feat(web): primary colour and shade convars

This commit is contained in:
Luke
2023-02-11 14:40:58 +01:00
parent abd63ba2e4
commit c9ac415f12
4 changed files with 49 additions and 4 deletions

View File

@@ -0,0 +1,32 @@
import { Context, createContext, useContext, useEffect, useState } from 'react';
import { MantineColor } from '@mantine/core';
import { fetchNui } from '../utils/fetchNui';
interface Config {
primaryColor: MantineColor;
primaryShade: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
}
interface ConfigCtxValue {
config: Config;
setConfig: (config: Config) => void;
}
const ConfigCtx = createContext<{ config: Config; setConfig: (config: Config) => void } | null>(null);
const ConfigProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const [config, setConfig] = useState<Config>({
primaryColor: 'blue',
primaryShade: 6,
});
useEffect(() => {
fetchNui<Config>('getConfig').then((data) => setConfig(data));
}, []);
return <ConfigCtx.Provider value={{ config, setConfig }}>{children}</ConfigCtx.Provider>;
};
export default ConfigProvider;
export const useConfig = () => useContext<ConfigCtxValue>(ConfigCtx as Context<ConfigCtxValue>);