UNPKG

react-roast

Version:
101 lines (96 loc) 2.91 kB
import { ReactNode } from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; type ScreenshotType = "full-screenshot" | "selected-screenshot"; type ScreenshotBlobs = Array<{ blob: Blob; type: ScreenshotType; }>; interface User { id?: string; name?: string; email: string; customData?: Record<string, any>; } interface FormDataProps { email?: string; message: string; screenshotBlobs: ScreenshotBlobs; } interface NotificationMessage { message: string; type: "info" | "hint" | "offer" | "reward" | "social" | "urgent"; } type IslandPlacement = "left-center" | "left-bottom" | "right-center" | "right-bottom" | "bottom-left" | "bottom-right"; type IslandMode = "default" | "icon"; type FormSubmitHandler = (data: FormDataProps) => Promise<boolean>; interface WidgetCustomizeProps { form?: { className?: string; errorMessage?: string; successMessage?: string; submitButton?: { label?: string; className?: string; }; cancelButton?: { label?: string; className?: string; }; messageInput?: { placeholder?: string; className?: string; }; output?: { excludeFullPageScreenshot?: boolean; excludeSelectedElementScreenshot?: boolean; }; }; island?: { mode?: IslandMode; placement?: IslandPlacement; className?: string; label?: string; switchButton?: { className?: string; thumb?: { className?: string; }; }; }; notifications?: { enable?: boolean; repeatDelay?: number; displayDuration?: number; repeatAllowed?: boolean; allowDismissal?: boolean; allowParmanentDismissal?: boolean; paramanentDismissalExpiryDays?: number; messages?: NotificationMessage[]; }; } interface BaseWidgetProviderProps { customize?: WidgetCustomizeProps; hideIsland?: boolean; children: ReactNode; } interface LocalWidgetProviderProps extends BaseWidgetProviderProps { mode: "local"; siteId?: never; onFormSubmit: FormSubmitHandler; } interface RemoteWidgetProviderProps extends BaseWidgetProviderProps { siteId: string; mode?: "remote"; onFormSubmit?: never; } type WidgetProviderProps = LocalWidgetProviderProps | RemoteWidgetProviderProps; declare const WidgetProvider: ({ children, ...props }: WidgetProviderProps) => react_jsx_runtime.JSX.Element; declare const useReactRoast: () => { isWidgetActive: boolean; toggleWidget: () => void; avoidElementClassName: string; setIslandVisiblity: (visible: boolean) => void; setUser: (user: User) => void; }; export { WidgetProvider as default, useReactRoast }; export type { FormDataProps, WidgetProviderProps };