UNPKG

@wener/console

Version:

Base console UI toolkit

64 lines (63 loc) 2.6 kB
import React, { useEffect, useState } from "react"; import { HiLockClosed, HiMiniLockOpen } from "react-icons/hi2"; import { clsx } from "clsx"; import { Button, NonIdealState } from "../../daisy/index.js"; import { useAuthStore } from "../../foundation/auth/AuthStore.js"; import { ConsoleEvents, getConsoleContext } from "../context.js"; import { getUserAction } from "./getUserAction.js"; export const UserLockOverlay = () => { const { unlock } = getUserAction(); const [locked, setLock] = useState(false); const expired = useAuthStore((s) => { return s.status === "Expired"; }); const [hidden, setHidden] = useState(!expired); const [pin, setPin] = useState(""); useEffect(() => { if (locked) { setPin(Math.random().toString().slice(-4)); setHidden(false); } }, [ locked ]); const emitter = getConsoleContext().getEmitter(); useEffect(() => { return emitter.on(ConsoleEvents.Lock, () => { setLock(true); }); }, [ emitter ]); if (hidden || expired) { return null; } return /*#__PURE__*/ React.createElement("div", { className: clsx("absolute inset-0 z-50 flex items-center justify-center", "transition duration-500", locked ? "opacity-100 backdrop-blur-sm" : "pointer-events-none opacity-0 backdrop-blur-none", hidden && !locked && "hidden"), onAnimationEnd: () => { if (!locked) { setHidden(true); } } }, /*#__PURE__*/ React.createElement("div", { className: "rounded border-base-200 bg-base-100 px-8 py-4 shadow-xl" }, /*#__PURE__*/ React.createElement(NonIdealState, { icon: /*#__PURE__*/ React.createElement(HiLockClosed, { className: "h-12 w-12" }), title: /*#__PURE__*/ React.createElement("div", { className: "flex flex-col gap-1" }, /*#__PURE__*/ React.createElement("span", null, "\u7CFB\u7EDF\u5DF2\u9501\u5B9A"), /*#__PURE__*/ React.createElement("span", null, pin)), description: "\u70B9\u51FB\u89E3\u9501\u8FDB\u5165\u7CFB\u7EDF", action: /*#__PURE__*/ React.createElement("div", { className: "flex gap-2 opacity-95" }, /*#__PURE__*/ React.createElement(Button, { autoFocus: true, className: "btn-success btn-sm", onClick: unlock }, /*#__PURE__*/ React.createElement(HiMiniLockOpen, { className: "h-4 w-4" }), "\u89E3\u9501")) }))); }; //# sourceMappingURL=UserLockOverlay.js.map