JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 56
  • Score
    100M100P100Q84499F
  • License MIT

Like styled-components but for classes. Quickly create components based on CSS classes.

Package Exports

  • classed-components

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (classed-components) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

classed-components

Like styled-components but for classes.

Why

When using CSS Frameworks such as MaterializeCSS it is nice to create components out of existing classes from that framework.

classed-components helps you do that in a convenient way.

Plus, it just comes at 4.26kB and has no dependencies!

How to get started

npm i --save classed-components
import classed from 'classed-components'

const Header = classed.div`
    header 
    green
`

const App = props => {
    return <Header />
}

Features

  • Create any HTML tag and associate it with classes.
  • Overwrite existing classed componentes with even more classes.
  • Conditional classes: Include or exclude classes based on your props.
  • Generate classes via interpolation functions also based on your props.

Overwrite existing classed components

import classed from 'classed-components'

const Header = classed.div`
    header 
    green
`
const HeaderBlack = classed(Header)`black col s12`

Conditional classes

You can use include or exclude certain classes based on props or other variables in the current scope. This is a feature you might know from the classnames module. Whenever an embedding/interpolition within the template string returns a boolean it is interpreted as a condition on the preceeding classname.

import classed from 'classed-components'

const large = true

const MyComponent = classed.div`
    header ${props => props.needsHeader} 
    green
    large ${large}
`

Generate classes via interpolation functions

import classed from 'classed-components'
const extra = 'col s12 m6'

const Header = classed.div`
    ${props => props.needsHeader ? 'header' : 'box'} 
    green
    ${extra}
`

className prop

Please note that adding the className prop to a classed component will overwrite its class names.

const Header = classed.div`
    test-class
`

// ...
// Do not do this:
<Header className='will-overwrite-test-class' />