UNPKG

shorted-theme

Version:

Shorted theme references for Styled Components.

108 lines (77 loc) 2.19 kB
# ![shorted-theme - Shorted theme references for Styled Components.](.github/assets/banner.svg) ![Comparison: before and after](.github/assets/comparison.png) <br><br><br> ## Features - Zero dependencies. - [TypeScript support](#typescript-support). - Write less characters. - Tests with 100% coverage. ## Installation ```bash npm i shorted-theme ``` ## Usage ```ts import styled from 'styled-components' import shorted from 'shorted-theme' const theme = { colors: { primary: 'red', secondary: 'blue' }, fontFamily: '"Roboto", sans-serif', fontSizes: { small: 12, regular: 14, large: 18 } } const t = shorted(theme) // 👈 short your theme then use everywhere. const Button = styled.button` color: ${t.colors.primary}; color: ${t.colors.primary}; font-family: ${t.fontFamily}; font-size: ${t.fontSizes.regular}; ` ``` ## TypeScript Support `shorted-theme` use all your typings. ![](.github/assets/typescript-support.png) ### Suggestion You can destructure the shorted theme object. That way you can reference direct children properties instead of a root object. ```ts const { colors, fontFamily, fontSizes } = shorted(theme) const Button = styled.button` color: ${colors.primary}; color: ${colors.primary}; font-family: ${fontFamily}; font-size: ${fontSizes.regular}; ` ``` ## Limitations `shorted-theme` is useful for writing less when referencing theme values. However, it can't be used in expressions. For example: ```ts // THIS WILL NOT WORK const Button = styled.button` padding: ${t.padding.default * 10}; ` ``` Instead you should use the function expression: ```ts const Button = styled.button` padding: ${(props) => props.theme.padding.default * 10}; ` ``` ## Development 1. Clone this repository. 2. Install dependencies: `npm i`. 3. Run it locally: `npm start` or `./src/bin.js` ### Tests ```sh npm run test ``` ### Releases Releases are triggered by `npm version` and handled by [GitHub Actions](https://github.com/rmariuzzo/shorted-theme/actions?query=workflow%3Apublish). <center><br><br><br> Made with ♥ by <a href="https://github.com/rmariuzzo" target="_blank">@rmariuzzo</a> </center>