A flexible visibility management system for React components with persistence support. This library provides a simple way to manage the visibility state of components with optional local storage persistence.
npm install react-visibility-persist
# or
yarn add react-visibility-persist
- 🎯 Simple API for managing component visibility
- 💾 Optional persistence to localStorage
- 🔄 Automatic state synchronization
- 🎨 Flexible styling options for visible/hidden states
- 📦 Lightweight and zero dependencies
- 📝 Written in TypeScript with full type support
import { VisibilityProvider, createVisibilityBlock } from 'react-visibility-persist';
// Create a visibility block with its toggle
const [SidebarBlock, SidebarToggle] = createVisibilityBlock('sidebar', true);
// Use in your app
const App = () => {
return (
<VisibilityProvider persistKey="app-visibility">
<div className="app">
<SidebarToggle>Toggle Sidebar</SidebarToggle>
<SidebarBlock>
{/* Your sidebar content */}
</SidebarBlock>
</div>
</VisibilityProvider>
);
};
Props:
children
: ReactNodeinitialState?
: Record<string, boolean>persistKey?
: string | null
Creates a pair of components for managing visibility:
- A Block component that shows/hides content
- A Toggle component that controls the visibility
Block Props:
children?
: ReactNodestyle?
: CSSPropertiesclassName?
: string
Toggle Props:
children?
: ReactNodestyle?
: CSSPropertiesclassName?
: stringactiveStyle?
: CSSPropertiesactiveClassName?
: stringinactiveStyle?
: CSSPropertiesinactiveClassName?
: string
A hook that provides access to the visibility context. Returns:
visibilityState
: Record<string, boolean>toggleVisibility
: (name: string) => void
If you need multiple independent visibility systems, you can use the createVisibility
factory:
import { createVisibility } from 'react-visibility-persist';
const {
VisibilityProvider: CustomProvider,
createVisibilityBlock: customCreateBlock
} = createVisibility();
MIT