import { Dialog } from '@headlessui/react' import { useEffect, useRef, useState } from 'react' import { Button } from '../../components/button' if (typeof document !== 'undefined') { class MyCustomElement extends HTMLElement { shadow: ShadowRoot constructor() { super() this.shadow = this.attachShadow({ mode: 'closed' }) } connectedCallback() { let button = document.createElement('button') button.textContent = 'Inside shadow root (closed)' this.shadow.appendChild(button) } } customElements.define('my-custom-element', MyCustomElement) } function ShadowChildren({ id }: { id: string }) { let container = useRef(null) useEffect(() => { if (!container.current || container.current.shadowRoot) { return } let shadowRoot = container.current.attachShadow({ mode: 'open' }) let button = document.createElement('button') button.id = id button.style.display = 'block' button.textContent = 'Inside shadow root (open)' let mce = document.createElement('my-custom-element') shadowRoot.appendChild(button) shadowRoot.appendChild(mce) }, []) return
} export default function App() { const [open, setOpen] = useState(false) return (
setOpen(false)}>
) }