react-roast
Version:
A React widget to get feedback
72 lines (67 loc) • 2.1 kB
TypeScript
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 FormDataProps {
message: string;
screenshotBlobs: ScreenshotBlobs;
}
type WidgetPlacement = "left-center" | "left-bottom" | "right-center" | "right-bottom" | "bottom-left" | "bottom-right";
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;
};
};
island?: {
placement?: WidgetPlacement;
className?: string;
label?: string;
switchButton?: {
className?: string;
thumb?: {
className?: string;
};
};
};
}
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;
};
export { type FormDataProps, type WidgetProviderProps, WidgetProvider as default, useReactRoast };