DEV Community

Sidra Maqbool
Sidra Maqbool

Posted on

Introducing Vanilla-extract.style: A Modern and Efficient Way to Write Styles in JavaScript

Vanilla-extract is a CSS-in-JS library that provides a modern and efficient way to write styles in JavaScript. With Vanilla-extract, you can define styles using a JavaScript object and generate scoped CSS classes that can be used in your components. The library supports responsive styles, CSS variables, and keyframes, and provides a flexible theming API for creating multiple theme modes.

One of the main benefits of using Vanilla-extract is that it provides a type-safe and modular way of writing styles. Since styles are defined using a JavaScript object, you can use TypeScript to ensure that your styles are valid and have the correct type. This makes it easier to maintain and refactor your styles, and helps prevent common styling errors such as typos and invalid values.

Another benefit of Vanilla-extract is that it provides a simple and flexible way of creating and using CSS variables. You can define variables using the varsfunction and use them in your styles using the varfunction. This makes it easy to create reusable styles and customize your themes without duplicating code.

Vanilla-extract also provides responsive styles using the responsiveStylefunction, which allows you to define different styles for different screen sizes using media queries. You can also create keyframe animations using the keyframesfunction, and global styles using the globalStylefunction.

Finally, Vanilla-extract provides a theming API for creating multiple theme modes that can be easily switched at runtime. You can create a theme object using the createThemefunction and use it to set different styles for different theme modes. This makes it easy to create consistent and accessible designs that can be customized to suit different user preferences.

Here's a detailed example that covers some of the main features of Vanilla-extract:

First, let's install Vanilla-extract using npm:

npm install @vanilla-extract/css
Enter fullscreen mode Exit fullscreen mode

Next, let's create a simple React component and define some styles using Vanilla-extract:

import React from 'react';
import { style } from '@vanilla-extract/css';

// Define some styles using Vanilla-extract
const container = style({
  padding: 16,
  backgroundColor: 'white',
  borderRadius: 8,
  boxShadow: '0px 4px 8px rgba(0, 0, 0, 0.1)',
});

const title = style({
  fontSize: 24,
  fontWeight: 'bold',
  color: 'blue',
});

const subtitle = style({
  fontSize: 16,
  color: 'gray',
});

const button = style({
  padding: '8px 16px',
  borderRadius: 4,
  backgroundColor: 'blue',
  color: 'white',
  cursor: 'pointer',
});

// Define a simple React component that uses the styles
function MyComponent() {
  return (
    <div className={container}>
      <h1 className={title}>Hello, World!</h1>
      <p className={subtitle}>This is a simple example of using Vanilla-extract</p>
      <button className={button}>Click Me</button>
    </div>
  );
}

export default MyComponent;

Enter fullscreen mode Exit fullscreen mode

Overall, Vanilla-extract is a powerful and flexible CSS-in-JS library that provides many benefits for modern web development. It makes it easy to write and maintain styles, create reusable and customizable components, and build responsive and accessible designs. If you're looking for a better way to write styles in JavaScript, Vanilla-extract is definitely worth checking out!

Top comments (0)