@equinor/eds-core-react
Version:
The React implementation of the Equinor Design System
40 lines (37 loc) • 962 B
JavaScript
import { useState, useEffect, useContext, createContext } from 'react';
import { jsx } from 'react/jsx-runtime';
const initalState = {
/** Density for all components inside `EdsProvider` */
density: 'comfortable'
};
const EdsContext = /*#__PURE__*/createContext(initalState);
const EdsProvider = ({
children,
density,
rootElement
}) => {
const [state, setState] = useState({
...initalState,
density: density || 'comfortable'
});
const setDensity = density => setState(prevState => ({
...prevState,
density
}));
useEffect(() => {
if (typeof density !== 'undefined' && density !== state.density) {
setDensity(density);
}
}, [density, state.density]);
const value = {
density: state.density,
rootElement,
setDensity
};
return /*#__PURE__*/jsx(EdsContext.Provider, {
value: value,
children: children
});
};
const useEds = () => useContext(EdsContext);
export { EdsProvider, useEds };