modal.tsx 577 B

123456789101112131415161718192021222324
  1. import { JSX, Show } from "solid-js"
  2. import "./modal.css"
  3. interface ModalProps {
  4. open: boolean
  5. onClose: () => void
  6. title?: string
  7. children: JSX.Element
  8. }
  9. export function Modal(props: ModalProps) {
  10. return (
  11. <Show when={props.open}>
  12. <div data-component="modal" data-slot="overlay" onClick={props.onClose}>
  13. <div data-slot="content" onClick={(e) => e.stopPropagation()}>
  14. <Show when={props.title}>
  15. <h2 data-slot="title">{props.title}</h2>
  16. </Show>
  17. {props.children}
  18. </div>
  19. </div>
  20. </Show>
  21. )
  22. }