#1656·jss

Reference another stylesheet

Author: shoham-utilaCreated Feb 5, 2024Updated Feb 19, 2024

Is your feature request related to a problem? Please describe.

As a user of React-JSS I would like to override children component styles without specifity hacks. For example I have a Button component that its background color is red , and I have a Button Group component that sets the default background color of all child buttons to yellow, I would like to reference the button to sheet to override it. The current outcome css would be something like

javascript
// from createUseStyles at "button.tsx"
{
  small: {},
  primary: {},
  button: {
   "&$primary$small": {
       backgroundColor: "red"
     }
  }
}

turns into

css
.button-1-0-1.primary-1-2-0.small-1-0-0 {
  background-color: "red"
}

and

javascript
// from createUseStyles at "button-group.tsx"
{
  childButton: {}, // given through className to all children buttons
  buttonGroup: {
   "& > $childButton": {
       backgroundColor: "yellow"
     }
  }
}

turns into

css
.buttonGroup-2-2-1 > .childButton-1-0-2 {
 background-color: "yellow"
}

the specifity of the button sheet is stronger, currently to beat it I would have to do some hacks like that

javascript
{
  childButton: {},
  buttonGroup: {
   "& > $childButton$childButton$childButton": {
       backgroundColor: "yellow"
     }
  }
}

Describe the solution you'd like I would like to be able to reference another sheet perhaps by code (importing the other use styles and referencing it in mine), another option is to add another special reference syntax maybe something like

javascript
{
  childButton: {},
  buttonGroup: {
   "& > $childButton%buttonSheet$button": {
       backgroundColor: "yellow"
     }
  }
}

Are you willing to implement it? Willing to try, would love maybe some guidance to start