UNPKG

@easy-shadcn/react

Version:

Use shadcn/ui easy&enhance like component library

177 lines (163 loc) 7.79 kB
import * as React$1 from 'react'; import React__default, { ComponentProps, ReactNode, PropsWithChildren } from 'react'; import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'; import { Root } from '@radix-ui/react-alert-dialog'; import * as DialogPrimitive from '@radix-ui/react-dialog'; import { DialogProps } from '@radix-ui/react-dialog'; import * as react_jsx_runtime from 'react/jsx-runtime'; declare const AlertDialogOverlay: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>; declare const AlertDialogContent: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & { overlayProps?: React$1.ComponentProps<typeof AlertDialogOverlay>; } & React$1.RefAttributes<HTMLDivElement>>; declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>; interface AlertModalProps extends ComponentProps<typeof Root> { title?: ReactNode; content?: ReactNode; contentProps?: ComponentProps<typeof AlertDialogContent>; cancelText?: ReactNode; onCancel?: () => void | Promise<void>; cancelProps?: ComponentProps<typeof AlertDialogCancel>; confirmText?: ReactNode; onConfirm?: () => void | Promise<void>; confirmProps?: ComponentProps<typeof AlertDialogCancel>; afterClose?: () => void; } declare const AlertModal$1: React__default.FC<AlertModalProps>; declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>; declare const DialogFooter: { ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element; displayName: string; }; declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>; declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>; interface ModalProps extends DialogProps { title?: ReactNode; titleProps?: ComponentProps<typeof DialogTitle>; description?: ReactNode; descriptionProps?: ComponentProps<typeof DialogDescription>; footer?: ReactNode; footerProps?: ComponentProps<typeof DialogFooter>; content?: ReactNode; contentProps?: ComponentProps<typeof DialogContent>; afterClose?: () => void; } declare const Modal$1: React__default.FC<PropsWithChildren<ModalProps>>; declare const symModalId: unique symbol; interface ModalHelperState { id: string; args?: Record<string, unknown>; visible?: boolean; delayVisible?: boolean; keepMounted?: boolean; } interface ModalHelperStore { [key: string]: ModalHelperState; } declare enum ActionType { showModal = "modal-helper/show", setModalFlags = "modal-helper/set-flags", hideModal = "modal-helper/hide", removeModal = "modal-helper/remove" } interface ModalHelperAction { type: ActionType; payload: { modalId: string; args?: Record<string, unknown>; flags?: Record<string, unknown>; }; } type ShadCNModalProps = { open?: boolean; onOpenChange?: (open: boolean) => void; afterClose?: () => void; }; /** * The handler to manage a modal returned by {@link useModal | useModal} hook. */ interface ModalHelperHandler<Props = Record<string, unknown>> extends ModalHelperState { /** * Whether a modal is visible, it's controlled by {@link ModalHelperHandler.show | show}/{@link ModalHelperHandler.hide | hide} method. */ visible: boolean; /** * If you don't want to remove the modal from the tree after hide when using helpers, set it to true. */ keepMounted: boolean; /** * Show the modal, it will change {@link ModalHelperHandler.visible | visible} state to true. * @param args - an object passed to modal component as props. */ show: (args?: Props) => Promise<unknown>; /** * Hide the modal, it will change {@link ModalHelperHandler.visible | visible} state to false. */ hide: () => Promise<unknown>; /** * Resolve the promise returned by {@link ModalHelperHandler.show | show} method. */ resolve: (args?: unknown) => void; /** * Reject the promise returned by {@link ModalHelperHandler.show | show} method. */ reject: (args?: unknown) => void; /** * Remove the modal component from React component tree. It improves performance compared to just making a modal invisible. */ remove: () => void; /** * Resolve the promise returned by {@link ModalHelperHandler.hide | hide} method. */ resolveHide: (args?: unknown) => void; } interface ModalHelperHocProps { id: string; defaultVisible?: boolean; keepMounted?: boolean; } type CreateModalComponent<T = object> = React.FC<T & ModalHelperHocProps> & { [symModalId]?: string; }; type ModalHelperArgs<T> = T extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<unknown> ? React.ComponentProps<T> : Record<string, unknown>; declare function show<T, C, P extends Partial<ModalHelperArgs<React__default.FC<C>>>>(modal: CreateModalComponent<C>, args?: P): Promise<T>; declare function show<T>(modal: string, args?: Record<string, unknown>): Promise<T>; declare function show<T, P>(modal: string, args: P): Promise<T>; declare function hide<T, C>(modal: string | CreateModalComponent<C>): Promise<T>; type ModalHolderActions = { show: (args?: unknown) => Promise<unknown>; hide: () => Promise<unknown>; }; declare function useModal(): ModalHelperHandler & { modalProps: ShadCNModalProps; }; declare function useModal(modal: string, args?: Record<string, unknown>): ModalHelperHandler & { modalProps: ShadCNModalProps; }; declare function useModal<C, P extends Partial<ModalHelperArgs<React__default.FC<C>>>>(modal: React__default.FC<C>, args?: P): Omit<ModalHelperHandler, 'show'> & { show: (args?: P) => Promise<unknown>; } & { modalProps: ShadCNModalProps; }; declare function useModalHolder<T>(modal: string | CreateModalComponent<T>): readonly [ModalHolderActions, React__default.FC<T>]; declare const ModalHelper: { Provider: React$1.FC<{ children?: React$1.ReactNode | undefined; }>; ModalHelperContext: React$1.Context<ModalHelperStore>; create: <P extends object>(Comp: React.ComponentType<P>) => CreateModalComponent<P>; register: <T extends CreateModalComponent<any>>(id: string, comp: T, props?: Partial<ModalHelperArgs<T>>) => void; show: typeof show; hide: typeof hide; remove: (modal: string | CreateModalComponent) => void; useModal: typeof useModal; useModalHolder: typeof useModalHolder; reducer: (state: ModalHelperStore | undefined, action: ModalHelperAction) => ModalHelperStore; modalProps: (modal: ModalHelperHandler) => ShadCNModalProps; }; declare const _default: { alert: (props: Omit<AlertModalProps, "open" | "onOpenChange" | "cancelProps" | "onCancel" | "cancelText">) => Promise<unknown>; confirm: (props: Omit<AlertModalProps, "open" | "onOpenChange">) => Promise<unknown>; }; declare const AlertModal: typeof AlertModal$1 & typeof _default; declare const Modal: typeof Modal$1 & typeof ModalHelper; export { AlertModal, type AlertModalProps, Modal, type ModalHelperHandler, type ModalProps };