So for now client-server interaction would be via forms. So you’d have a form, the user inputs something into the form, then that goes to the server as a query parameter. Then your endpoint would construct the appropriate response to those particular inputs.
For fully client-side interactions, the components are typically bundled with some JavaScript code to make that component interactive. So for example, you can include a datagrid, which has built-in sorting and filtering capabilities by doing page.add_datagrid(df)
I think if you need a lot of client-side dynamic capabilities, then that would be custom JavaScript that you’d either have to write or include a JS library from somewhere.