@atlaskit/navigation-system
Version:
The latest navigation system for Atlassian apps.
25 lines (24 loc) • 922 B
JavaScript
import React, { useState } from 'react';
import { SetSideNavVisibilityState } from './set-side-nav-visibility-state';
import { SideNavVisibilityState } from './side-nav-visibility-state';
/**
* Manages the side nav visibility state and provides the context.
*/
export const SideNavVisibilityProvider = ({
children,
defaultCollapsed
}) => {
const initialState = typeof defaultCollapsed === 'boolean' ? {
desktop: defaultCollapsed ? 'collapsed' : 'expanded',
mobile: 'collapsed',
flyout: 'closed',
lastTrigger: null
} : null;
// Defaults to null so we can determine if the value has been set yet (for SSR)
const [sideNavState, setSideNavState] = useState(initialState);
return /*#__PURE__*/React.createElement(SideNavVisibilityState.Provider, {
value: sideNavState
}, /*#__PURE__*/React.createElement(SetSideNavVisibilityState.Provider, {
value: setSideNavState
}, children));
};