
Product
Introducing Manifest Alerts
Socket now detects supply chain risks in project manifests, starting with missing lockfiles that can make dependency installs non-reproducible.
react-motion-modal
Advanced tools
[](https://www.npmjs.com/package/react-motion-modal) [](https://www.npmjs.com/package/react-motion-modal) [ into each modal propsnpm install react-motion-modal motion zustand
or with yarn:
yarn add react-motion-modal motion zustand
react and react-dom are expected to already exist in your app.
Import the package stylesheet once in your app entry:
import 'react-motion-modal/style.css';
Create a modal.d.ts file in your project (make sure to include it in tsconfig.json):
import type { ModalDefinition } from 'react-motion-modal';
declare module 'react-motion-modal' {
interface ModalDefinition {
AlertModal: {
title: string;
};
ConfirmModal: {
onConfirm: () => void;
};
}
}
Import to define your modals
import { ModalProvider } from 'react-motion-modal';
export const App = () => {
return (
<div>
{/* rest of your app */}
<ModalProvider
modals={{
AlertModal,
ConfirmModal,
}}
/>
</div>
);
};
import { MODAL_POSITIONS, modalStore } from 'react-motion-modal';
const { openModal } = modalStore();
openModal('ConfirmModal', {
title: 'Are you sure you want to delete?',
position: MODAL_POSITIONS.RIGHT,
closeOnClickOutside: true,
});
closeModal inside your modal componentimport type { ModalParams } from 'react-motion-modal';
const ConfirmModal = ({ title, closeModal }: ModalParams<'ConfirmModal'>) => (
<div>
<h1>{title}</h1>
<button onClick={closeModal}>Close</button>
</div>
);
openModal(name, params)Opens a modal by name. The params will be inferred based on modal type.
closeModal(name?)name is provided, closes that specific modal.BaseModalParamsEach modal automatically receives the following props:
| Prop | Type | Description |
|---|---|---|
closeModal | () => void | Close function for the modal |
onClose | () => void | Callback triggered when modal is closed |
closeOnClickOutside | boolean | Close modal when clicking outside |
closeOnPressEsc | boolean | Close modal when Escape key is pressed |
position | string | Modal placement. Unknown values fall back to center. |
backdrop | { className?: string; style?: CSSProperties; } | Customize the backdrop layer |
body | { className?: string; style?: CSSProperties; } | Customize the modal body wrapper |
animate | { animate?: TargetAndTransition; exit?: TargetAndTransition; } | Animation powered by Framer Motion. Custom animation disables defaults. |
blur | boolean | Apply backdrop blur |
MODAL_POSITIONSMODAL_POSITIONS.TOP;
MODAL_POSITIONS.TOP_LEFT;
MODAL_POSITIONS.TOP_RIGHT;
MODAL_POSITIONS.TOP_CENTER;
MODAL_POSITIONS.LEFT;
MODAL_POSITIONS.RIGHT;
MODAL_POSITIONS.CENTER;
MODAL_POSITIONS.CENTER_FULL;
MODAL_POSITIONS.BOTTOM;
MODAL_POSITIONS.BOTTOM_LEFT;
MODAL_POSITIONS.BOTTOM_RIGHT;
MODAL_POSITIONS.BOTTOM_CENTER;
Default body animation follows the position. For example, left slides in from the left, right slides in from the right, top slides down, and bottom slides up.
.github/workflows/ci.yml on pushes and pull requests..github/workflows/publish.yml and uses npm publish --provenance --access public.ModalRenderer to dynamically render modals from modals stateMade with ❤️ by react-motion-modal.
FAQs
[](https://www.npmjs.com/package/react-motion-modal) [](https://www.npmjs.com/package/react-motion-modal) [
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now detects supply chain risks in project manifests, starting with missing lockfiles that can make dependency installs non-reproducible.

Research
/Security News
The trojanized extensions use TinyGo-compiled WebAssembly and Solana transaction memos to resolve command-and-control infrastructure.

Security News
Anthropic says the directive cited national security concerns over a narrow jailbreak, but offered no specific technical details.