87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import clsx from 'clsx'
 | |
| 
 | |
| export function ConfirmationButton(props: {
 | |
|   id: string
 | |
|   openModelBtn: {
 | |
|     label: string
 | |
|     icon?: any
 | |
|     className?: string
 | |
|   }
 | |
|   cancelBtn?: {
 | |
|     label?: string
 | |
|     className?: string
 | |
|   }
 | |
|   submitBtn?: {
 | |
|     label?: string
 | |
|     className?: string
 | |
|   }
 | |
|   onSubmit: () => void
 | |
|   children: any
 | |
| }) {
 | |
|   const { id, openModelBtn, cancelBtn, submitBtn, onSubmit, children } = props
 | |
| 
 | |
|   return (
 | |
|     <>
 | |
|       <label
 | |
|         htmlFor={id}
 | |
|         className={clsx('btn modal-button', openModelBtn.className)}
 | |
|       >
 | |
|         {openModelBtn.icon} {openModelBtn.label}
 | |
|       </label>
 | |
|       <input type="checkbox" id={id} className="modal-toggle" />
 | |
| 
 | |
|       <div className="modal">
 | |
|         <div className="modal-box whitespace-normal">
 | |
|           {children}
 | |
| 
 | |
|           <div className="modal-action">
 | |
|             <label htmlFor={id} className={clsx('btn', cancelBtn?.className)}>
 | |
|               {cancelBtn?.label ?? 'Cancel'}
 | |
|             </label>
 | |
|             <label
 | |
|               htmlFor={id}
 | |
|               className={clsx('btn', submitBtn?.className)}
 | |
|               onClick={onSubmit}
 | |
|             >
 | |
|               {submitBtn?.label ?? 'Submit'}
 | |
|             </label>
 | |
|           </div>
 | |
|         </div>
 | |
|       </div>
 | |
|     </>
 | |
|   )
 | |
| }
 | |
| 
 | |
| export function ResolveConfirmationButton(props: {
 | |
|   onResolve: () => void
 | |
|   isSubmitting: boolean
 | |
|   openModelButtonClass?: string
 | |
|   submitButtonClass?: string
 | |
| }) {
 | |
|   const { onResolve, isSubmitting, openModelButtonClass, submitButtonClass } =
 | |
|     props
 | |
|   return (
 | |
|     <ConfirmationButton
 | |
|       id="resolution-modal"
 | |
|       openModelBtn={{
 | |
|         className: clsx(
 | |
|           'border-none self-start',
 | |
|           openModelButtonClass,
 | |
|           isSubmitting && 'btn-disabled loading'
 | |
|         ),
 | |
|         label: 'Resolve',
 | |
|       }}
 | |
|       cancelBtn={{
 | |
|         label: 'Back',
 | |
|       }}
 | |
|       submitBtn={{
 | |
|         label: 'Resolve',
 | |
|         className: clsx('border-none', submitButtonClass),
 | |
|       }}
 | |
|       onSubmit={onResolve}
 | |
|     >
 | |
|       <p>Are you sure you want to resolve this market?</p>
 | |
|     </ConfirmationButton>
 | |
|   )
 | |
| }
 |