styled-jsx-themes

0.0.5 • Public • Published

Themes for styled-jsx

Minimal themes (made with styled-jsx) for providing basic visual happiness in server-rendered React apps.

Demo

https://styled-jsx-themes.now.sh/

Setup

This library is purposely not transpiled1 so your build tool will need to be configured to transpile JS inside your app's ./node_modules/styled-jsx-themes directory. A convenience helper is provided for Next.js.

// ./next.config.js
const transpile = require('styled-jsx-themes/transpile')
module.exports = { webpack: transpile }

Install

yarn add styled-jsx-themes

Usage

Inject a theme anywhere in your app with the helper component.

import InjectTheme from 'styled-jsx-themes'
 
import { dark } from 'styled-jsx-themes/themes'
import { merriweatherMuli } from 'styled-jsx-themes/fonts'
 
function ({ theme: dark, font: merriweatherMuli }) {
  <>
    <InjectTheme theme={theme} font={font} />
    <p>themed!</p>
  </>
}

API

<InjectTheme />

theme (theme, required)

Object describing a theme

See ./themes.js

font (theme, required)

Object describing a pair of fonts

See ./fonts.js

reset (bool, default: true)

Include/exclude CSS reset (normalize.css)

Caveats

This library is currently bound to Next.js but could be easily separated if we generalize the webfont loading to work with other SSR frameworks.

Why no transpiling in repo?

After trying a number of different approaches I decided that there's no way to transpile styled-jsx components outside of Next.js apps without breaking server side rendering. That said I would be excited to learn that I'm wrong and there's an easy way transpile ahead of time and avoid the extra setup. Please reach out to me at mikebannister@gmail.com if you can help, thanks!

Credits

Readme

Keywords

none

Package Sidebar

Install

npm i styled-jsx-themes

Weekly Downloads

1

Version

0.0.5

License

MIT

Unpacked Size

3.13 MB

Total Files

19

Last publish

Collaborators

  • possibilities