This seems like a good place to plug Solarite, a library I built and have used for several years.
https://eric-frost.github.io/solarite/
It supports passing arguments via attributes to constructors. And you can pass complex arguments to nested components without serializing them. No signals and no build step either, just import and use on your regular data. And it's faster than just about all the others.