Web only features
Unistyles comes with some web-only features that are not available on the React Native side.
Web only styles
In Unistyles, you can use web-specific styles for your web app under the _web key.
const styles = StyleSheet.create({    container: {        flex: 1,        // Web only styles:        _web: {            display: 'grid',        }    }})The _web key supports any CSS property and value that matches the CSSProperties type from React.
const styles = StyleSheet.create({    container: {        flex: 1,        _web: {          display: 'grid',          // π₯ Error! This is React Native specific style          transform: [{ translateX: 10 }],        }    }})The transform property on the web should be a string:
const styles = StyleSheet.create({    container: {        flex: 1,        _web: {            display: 'grid',           transform: [{ translateX: 10 }],           transform: 'translateX(10px)',        }     }})Or can be lifted  to the style level:
const styles = StyleSheet.create({    container: {        flex: 1,        // β
 This is React Native specific style, and will be parsed correctly for web        transform: [{ translateX: 10 }],        _web: {            display: 'grid',           transform: [{ translateX: 10 }],        }    }})You can also use variants, breakpoints, and other Unistyles features under the _web key!
Pseudo elements
Unistyles also introduces a way to use any pseudo-elements and selectors in your web styles.
const styles = StyleSheet.create(theme => ({    button: {        backgroundColor: theme.colors.button,        _web: {            _hover: {                backgroundColor: theme.colors.hovered,            },            _before: {                content: '"π¦"',            }        }    },}))As you can see, : and :: have been replaced with _ for easier usage.
Injecting custom classNames
If you want to write some part of your app with plain CSS, you can add custom classNames to your styles:
const styles = StyleSheet.create({    container: {        flex: 1,        _web: {            _classNames: 'my-custom-class',        }    }})The _classNames key under the _web key will be injected into the DOM element as a className. You can pass a string or an array of strings into it:
const styles = StyleSheet.create({    container: {        flex: 1,        _web: {           _classNames: 'my-custom-class',           _classNames: ['my-custom-class', 'my-other-class'],        }    }})You can also use some conditions while resolving your classes:
const styles = StyleSheet.create({    button: (isPrimary: boolean) => ({        _web: {            _classNames: isPrimary ? 'primary-button' : 'secondary-button',        }    })})