portal
diceui-radix/portalFreeComponent
diceui/radix publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/sadmann7/diceui/HEAD/docs/public/r/styles/radix-nova/portal.jsonSource
1"use client";23import { Slot as SlotPrimitive } from "radix-ui";4import * as React from "react";5import * as ReactDOM from "react-dom";67type SlotProps = React.ComponentProps<typeof SlotPrimitive.Slot>;89interface PortalProps extends SlotProps {10 container?: Element | DocumentFragment | null;11}1213function subscribe() {14 return () => {};15}1617function getSnapshot() {18 return true;19}2021function getServerSnapshot() {22 return false;23}2425function Portal(props: PortalProps) {26 const { container: containerProp, ...portalProps } = props;2728 const mounted = React.useSyncExternalStore(29 subscribe,30 getSnapshot,31 getServerSnapshot,32 );3334 const container =35 containerProp ?? (mounted ? globalThis.document?.body : null);3637 if (!container) return null;3839 return ReactDOM.createPortal(40 <SlotPrimitive.Slot {...portalProps} />,41 container,42 );43}4445export type { PortalProps };46export { Portal };
Files it writes
More from diceui/radix
All 58 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| action-baraction-bar | diceui/radix | Components | Free | 1 dep · 2 files | |
| angle-sliderangle-slider | diceui/radix | Components | Free | 1 dep · 3 files | |
| avatar-groupavatar-group | diceui/radix | Components | Free | 1 dep | |
| badge-overflowbadge-overflow | diceui/radix | Components | Free | 1 dep · 2 files | |
| bannerbanner | diceui/radix | Components | Free | 1 dep | |
| checkbox-groupcheckbox-group | diceui/radix | Components | Free | 1 dep | |
| circular-progresscircular-progress | diceui/radix | Components | Free | 1 dep | |
| client-onlyclient-only | diceui/radix | Components | Free | no deps |
