UNPKG

@croct/plug-react

Version:

React components and hooks to plug your React applications into Croct.

23 lines (20 loc) 1.26 kB
import { ReactNode, ReactElement } from 'react'; import { VersionedSlotId, VersionedSlotMap, SlotContent } from '@croct/plug/slot'; import { JsonObject } from '@croct/plug/sdk/json'; import { UseContentOptions } from '../../hooks/useContent.cjs'; import '@croct/plug/plug'; type Renderer<P> = (props: P) => ReactNode; type SlotProps<P, I = P, F = P, S extends VersionedSlotId = VersionedSlotId> = UseContentOptions<I, F> & { id: S; children: Renderer<P | I | F>; }; type SlotComponent = { <P, I, F>(props: Extract<P | I | F, JsonObject> extends never ? SlotProps<JsonObject, never, never, keyof VersionedSlotMap extends never ? string : never> : SlotProps<P, I, F, keyof VersionedSlotMap extends never ? string : never>): ReactElement; <S extends VersionedSlotId>(props: SlotProps<SlotContent<S>, never, never, S>): ReactElement; <I, S extends VersionedSlotId>(props: SlotProps<SlotContent<S>, I, never, S>): ReactElement; <F, S extends VersionedSlotId>(props: SlotProps<SlotContent<S>, never, F, S>): ReactElement; <I, F, S extends VersionedSlotId>(props: SlotProps<SlotContent<S>, I, F, S>): ReactElement; (props: SlotProps<void, void, void>): ReactElement; }; declare const Slot: SlotComponent; export { Slot, type SlotProps };