Spaces:
Runtime error
Runtime error
| 'use client'; | |
| import { createGlobalState } from 'react-global-hooks'; | |
| import { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react'; | |
| import React from 'react'; | |
| import { ConfigDoc } from '@/types'; | |
| export const docState = createGlobalState<ConfigDoc | null>(null); | |
| export const openDoc = (doc: ConfigDoc) => { | |
| docState.set({ ...doc }); | |
| }; | |
| export default function DocModal() { | |
| const [doc, setDoc] = docState.use(); | |
| const isOpen = !!doc; | |
| const onClose = () => { | |
| setDoc(null); | |
| }; | |
| return ( | |
| <Dialog open={isOpen} onClose={onClose} className="relative z-10"> | |
| <DialogBackdrop | |
| transition | |
| className="fixed inset-0 bg-gray-900/75 transition-opacity data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in" | |
| /> | |
| <div className="fixed inset-0 z-10 w-screen overflow-y-auto"> | |
| <div className="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0"> | |
| <DialogPanel | |
| transition | |
| className="relative transform overflow-hidden rounded-lg bg-gray-800 text-left shadow-xl transition-all data-closed:translate-y-4 data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in sm:my-8 sm:w-full sm:max-w-[50rem] data-closed:sm:translate-y-0 data-closed:sm:scale-95" | |
| > | |
| <div className="bg-gray-800 px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> | |
| <div className="sm:flex sm:items-start"> | |
| <div className="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1"> | |
| <DialogTitle as="h3" className={`text-base font-semibold `}> | |
| {doc?.title || 'Confirm Action'} | |
| </DialogTitle> | |
| <div className="mt-2 text-sm text-gray-200">{doc?.description}</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div className="bg-gray-700 px-4 py-3 sm:flex sm:flex-row-reverse sm:px-6"> | |
| <button | |
| type="button" | |
| data-autofocus | |
| onClick={onClose} | |
| className="mt-3 inline-flex w-full justify-center rounded-md bg-gray-800 px-3 py-2 text-sm font-semibold text-gray-200 hover:bg-gray-800 sm:mt-0 sm:w-auto ring-0" | |
| > | |
| Close | |
| </button> | |
| </div> | |
| </DialogPanel> | |
| </div> | |
| </div> | |
| </Dialog> | |
| ); | |
| } | |