66from typing import Any
77
88import reflex as rx
9- from reflex .event import EventType
9+ from reflex .event import EventType , IndividualEventType
1010from reflex .experimental .client_state import ClientStateVar
1111from reflex .vars .base import get_unique_variable_name
1212
1313import reflex_ui as ui
14+ from reflex_ui .blocks .telemetry .posthog import track_intro_form_posthog_submission
1415
1516intro_form_error_message = ClientStateVar .create ("intro_form_error_message" , "" )
1617intro_form_open_cs = ClientStateVar .create ("intro_form_open" , False )
@@ -86,6 +87,15 @@ def validate_email(self, email: str):
8687 else :
8788 yield intro_form_error_message .push ("" )
8889
90+ @rx .event
91+ def track_intro_form_posthog (self , form_data : dict [str , Any ]):
92+ """Send intro form fields to PostHog (identify + capture) in the browser.
93+
94+ Returns:
95+ Event that runs PostHog identify and capture in the browser.
96+ """
97+ return track_intro_form_posthog_submission (form_data )
98+
8999
90100def input_field (
91101 label : str ,
@@ -241,7 +251,7 @@ def select_field(
241251
242252def intro_form (
243253 id_prefix : str = "" ,
244- on_submit : EventType [dict [str , Any ]] | EventType [()] | None = None ,
254+ on_submit : EventType [dict [str , Any ]] | None = None ,
245255 ** props ,
246256) -> rx .Component :
247257 """Create and return the intro form component.
@@ -261,6 +271,11 @@ def intro_form(
261271 """
262272 prefix = id_prefix or get_unique_variable_name ()
263273 email_id = f"{ prefix } _user_email"
274+
275+ extra : list [IndividualEventType [dict [str , Any ]]] = (
276+ on_submit if isinstance (on_submit , list ) else [on_submit ] if on_submit else []
277+ )
278+
264279 form = rx .el .form (
265280 rx .el .div (
266281 input_field ("First name" , "John" , "first_name" , "text" , True ),
@@ -340,7 +355,7 @@ def intro_form(
340355 "@container flex flex-col lg:gap-6 gap-2 p-6" ,
341356 props .pop ("class_name" , "" ),
342357 ),
343- on_submit = on_submit ,
358+ on_submit = [ IntroFormStateUI . track_intro_form_posthog , * extra ] ,
344359 ** props ,
345360 )
346361 return rx .fragment (
@@ -351,7 +366,7 @@ def intro_form(
351366def intro_form_dialog (
352367 trigger : rx .Component | None = None ,
353368 id_prefix : str = "" ,
354- on_submit : EventType [dict [str , Any ]] | EventType [()] | None = None ,
369+ on_submit : EventType [dict [str , Any ]] | None = None ,
355370 ** props ,
356371) -> rx .Component :
357372 """Return a intro form dialog container element.
0 commit comments