@enjoys/react-chatbot-plugin 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -4446,6 +4446,8 @@ export declare interface ChatBotProps {
4446
4446
  components?: Record<string, ComponentType<StepComponentProps>>;
4447
4447
  /** Map of async action handlers (key = step.asyncAction.handler) */
4448
4448
  actionHandlers?: Record<string, (data: Record<string, unknown>, ctx: ActionContext) => Promise<FlowActionResult>>;
4449
+ /** Override built-in form field renderers per field type. Each renderer receives strongly-typed props + the default element. */
4450
+ renderFormField?: FormFieldRenderMap;
4449
4451
  }
4450
4452
 
4451
4453
  export declare const ChatBubbleIcon: default_2.FC<IconProps>;
@@ -4604,6 +4606,15 @@ declare interface CheckboxFieldProps {
4604
4606
  error?: string;
4605
4607
  }
4606
4608
 
4609
+ /** Props passed to checkbox custom field renderers */
4610
+ export declare interface CheckboxFieldRenderProps {
4611
+ type: 'checkbox';
4612
+ field: FormFieldConfig;
4613
+ value: string[];
4614
+ onChange: (value: string[]) => void;
4615
+ error?: string;
4616
+ }
4617
+
4607
4618
  export declare const CloseIcon: default_2.FC<IconProps>;
4608
4619
 
4609
4620
  export declare const DynamicForm: default_2.FC<DynamicFormProps>;
@@ -4612,6 +4623,7 @@ declare interface DynamicFormProps {
4612
4623
  config: FormConfig;
4613
4624
  onSubmit: (data: Record<string, unknown>) => void;
4614
4625
  primaryColor: string;
4626
+ renderFormField?: FormFieldRenderMap;
4615
4627
  }
4616
4628
 
4617
4629
  export declare const EmojiIcon: default_2.FC<IconProps>;
@@ -4624,6 +4636,16 @@ declare interface EmojiPickerProps {
4624
4636
  primaryColor: string;
4625
4637
  }
4626
4638
 
4639
+ /** Props passed to file custom field renderers */
4640
+ export declare interface FileFieldRenderProps {
4641
+ type: 'file';
4642
+ field: FormFieldConfig;
4643
+ value: FileList | null;
4644
+ onChange: (value: FileList | null) => void;
4645
+ error?: string;
4646
+ primaryColor: string;
4647
+ }
4648
+
4627
4649
  export declare const FileIcon: default_2.FC<IconProps>;
4628
4650
 
4629
4651
  export declare const FilePreviewList: default_2.FC<FilePreviewListProps>;
@@ -4791,6 +4813,27 @@ export declare interface FormFieldOption {
4791
4813
  value: string;
4792
4814
  }
4793
4815
 
4816
+ /** Map of field type → custom renderer. The renderer receives strongly-typed props + the default element. */
4817
+ export declare type FormFieldRenderMap = Partial<{
4818
+ text: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4819
+ email: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4820
+ password: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4821
+ number: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4822
+ tel: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4823
+ url: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4824
+ textarea: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4825
+ date: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4826
+ time: (props: TextFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4827
+ select: (props: SelectFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4828
+ multiselect: (props: SelectFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4829
+ radio: (props: RadioFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4830
+ checkbox: (props: CheckboxFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4831
+ file: (props: FileFieldRenderProps, defaultElement: React.ReactNode) => React.ReactNode;
4832
+ }>;
4833
+
4834
+ /** Union of all field render props — discriminated by `type` */
4835
+ export declare type FormFieldRenderProps = TextFieldRenderProps | SelectFieldRenderProps | RadioFieldRenderProps | CheckboxFieldRenderProps | FileFieldRenderProps;
4836
+
4794
4837
  export declare type FormFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'textarea' | 'select' | 'multiselect' | 'radio' | 'checkbox' | 'file' | 'date' | 'time' | 'hidden';
4795
4838
 
4796
4839
  export declare interface FormFieldValidation {
@@ -4838,6 +4881,7 @@ declare interface LoginScreenProps {
4838
4881
  config: FormConfig;
4839
4882
  onLogin: (data: Record<string, unknown>) => void;
4840
4883
  primaryColor: string;
4884
+ renderFormField?: FormFieldRenderMap;
4841
4885
  }
4842
4886
 
4843
4887
  export declare interface MessageAttachment {
@@ -4872,6 +4916,8 @@ declare interface MessageListProps {
4872
4916
  collectedData?: Record<string, unknown>;
4873
4917
  /** Current step ID */
4874
4918
  currentStepId?: string | null;
4919
+ /** Custom form field renderers per field type */
4920
+ renderFormField?: FormFieldRenderMap;
4875
4921
  }
4876
4922
 
4877
4923
  export declare type MessageSender = 'bot' | 'user' | 'system';
@@ -4939,6 +4985,15 @@ declare interface RadioFieldProps {
4939
4985
  error?: string;
4940
4986
  }
4941
4987
 
4988
+ /** Props passed to radio custom field renderers */
4989
+ export declare interface RadioFieldRenderProps {
4990
+ type: 'radio';
4991
+ field: FormFieldConfig;
4992
+ value: string;
4993
+ onChange: (value: string) => void;
4994
+ error?: string;
4995
+ }
4996
+
4942
4997
  export declare const RemoveIcon: default_2.FC<IconProps>;
4943
4998
 
4944
4999
  export declare function resolveTheme(theme?: ChatTheme): Required<ChatTheme>;
@@ -4954,6 +5009,15 @@ declare interface SelectFieldProps {
4954
5009
  error?: string;
4955
5010
  }
4956
5011
 
5012
+ /** Props passed to select/multiselect custom field renderers */
5013
+ export declare interface SelectFieldRenderProps {
5014
+ type: 'select' | 'multiselect';
5015
+ field: FormFieldConfig;
5016
+ value: string | string[];
5017
+ onChange: (value: string | string[]) => void;
5018
+ error?: string;
5019
+ }
5020
+
4957
5021
  export declare const SendIcon: default_2.FC<IconProps>;
4958
5022
 
4959
5023
  /** Props passed to custom components rendered in flow steps */
@@ -4975,6 +5039,15 @@ declare interface TextFieldProps {
4975
5039
  error?: string;
4976
5040
  }
4977
5041
 
5042
+ /** Props passed to text-like custom field renderers */
5043
+ export declare interface TextFieldRenderProps {
5044
+ type: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'textarea' | 'date' | 'time';
5045
+ field: FormFieldConfig;
5046
+ value: string;
5047
+ onChange: (value: string) => void;
5048
+ error?: string;
5049
+ }
5050
+
4978
5051
  export declare const TypingIndicator: default_2.FC<TypingIndicatorProps>;
4979
5052
 
4980
5053
  declare interface TypingIndicatorProps {