charmant
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

charmant

charmant is a small CSS-in-JS library written for React.

charmant comes batteries-included with the following features:

  • ⚡️ Custom theming
  • 🔥 Pseudo-selectors
  • 🎉 < 5kb production bundle (minified, gzipped)

⚠️ Warning This library is in an alpha stage and is likely to change frequently with breaking changes

Installation

yarn

yarn add charmant

npm

npm install charmant

Usage

To get started with charmant, call the charmant function and provide an optional theme. This function returns a styled function which you can use to create your React components.

import React from "react";
import { charmant } from "charmant";

const { styled } = charmant();

const Box = styled("div")`
  width: 100%;
  height: 32px;
  background: black;
`;

export default function App() {
  return <Box />;
}

Theming

Providing a theme object to the charmant function will allow you to resolve theme values in your components.

import React from "react";
import { charmant } from "charmant";

const { styled } = charmant({
  colors: {
    blue: "#0000ff",
  },
});

const Button = styled("button")`
  background: ${(theme) => theme.colors.blue};
  color: white;
  border: 1px solid ${(theme) => theme.colors.blue};
`;

export default function App() {
  return <Button>Press me!</Button>;
}

Pseudo-selectors

Sometimes you want to target pseudo properties on your components such as hover or focus. You can do that too in charmant – just add them to your defintions:

const { styled } = charmant({
  colors: {
    blue: "#0000ff",
    red: "#ff0000",
  },
});

const Button = styled("button")`
  background: ${(theme) => theme.colors.blue};
  color: white;
  border: 1px solid ${(theme) => theme.colors.blue};

  &:hover {
    border-color: ${(theme) => theme.colors.red};
  }
`;

export default function App() {
  return <Button>Press me!</Button>;
}

Readme

Keywords

none

Package Sidebar

Install

npm i charmant

Weekly Downloads

1

Version

0.1.0

License

ISC

Unpacked Size

288 kB

Total Files

20

Last publish

Collaborators

  • shannonrothe