Yes exactly. My approach was to make everything a component. In each component, you'd define your props (called "variants" in my language), elements, and styles.
Something like this:
component Square
variants
color bg: red
elements
shape square
style square
width: 100px
height: 100px
fill: $bg
Something like this: