On my side i use ThemeExtension to define the style of my design system widgets. And implement a fallback mechanism (like flutter widgets) to retrieve colors for example in build method.
I just saw that you already use ThemeExtension for colors and text styles, but in my case i prefer using existing objects of the ThemeData structure, adding extensions to name things property. The idea is to make my design on top of material design, to make my widget working even if my custom theme is not set in MaterialApp.