@tolokoban/ui
Version:
React components with theme
19 lines • 2.14 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import React, { useContext } from "react";
import ModalContainer from "./container.js";
import ModalManager from "./manager.js";
import Styles from "./provider.module.css";
const manager = new ModalManager();
const ModalContext = React.createContext(manager);
export function ModalProvider({ children }) {
const modals = manager.useModals();
const handleRemove = (modal) => {
manager.hide(modal);
};
return (_jsxs(ModalContext.Provider, { value: manager, children: [children, _jsx("div", { className: Styles.screen, children: modals.map((modal, index) => (_jsx(ModalContainer, { options: modal, onClose: handleRemove }, index))) })] }));
}
export function useModal() {
var _a;
return (_a = useContext(ModalContext)) !== null && _a !== void 0 ? _a : new ModalManager();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kYWwvcHJvdmlkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUd6QyxPQUFPLGNBQWMsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMzQyxPQUFPLFlBQVksTUFBTSxjQUFjLENBQUE7QUFHdkMsT0FBTyxNQUFNLE1BQU0sdUJBQXVCLENBQUE7QUFFMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtBQUNsQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFzQixPQUFPLENBQUMsQ0FBQTtBQU10RSxNQUFNLFVBQVUsYUFBYSxDQUFDLEVBQUUsUUFBUSxFQUFzQjtJQUMxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDbEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLENBQUMsQ0FBQTtJQUNELE9BQU8sQ0FDSCxNQUFDLFlBQVksQ0FBQyxRQUFRLElBQUMsS0FBSyxFQUFFLE9BQU8sYUFDaEMsUUFBUSxFQUNULGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLFlBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUMxQixLQUFDLGNBQWMsSUFFWCxPQUFPLEVBQUUsS0FBSyxFQUNkLE9BQU8sRUFBRSxZQUFZLElBRmhCLEtBQUssQ0FHWixDQUNMLENBQUMsR0FDQSxJQUNjLENBQzNCLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVE7O0lBQ3BCLE9BQU8sTUFBQSxVQUFVLENBQUMsWUFBWSxDQUFDLG1DQUFJLElBQUksWUFBWSxFQUFFLENBQUE7QUFDekQsQ0FBQyJ9