Pass custom/render-time data to LiveView client side hook

I am not very smart some days :see_no_evil:

I can simply add an onclick with embedded JS.
However, I wonder if there is a more phoenix-y way.

Component

attr :target, :string, required: true

def scroll_button(%{target: "#"<>id} = assigns) do
  ~H"""
  <.button
    onclick={"(function(){document.getElementById(\"#{id}\").scrollIntoView(true);})();"}
  >
    <%= render_slot(@inner_block) %>
  </.button>
  """
end

# .. more cases for class and type match

Call

<.scroll_button target="#top" >To Top</.scroll_button>