Back to integrations
Add your integration
Categories
  • ⭐️ Popular
  • 🧩 Essentials
  • 🛠 Code
  • ⚡️ Data & state
  • ✅ Test
  • 💅 Style
  • 🎨 Design
  • ⚙️ Appearance
  • 🗄 Organize
How to install addons Create an addon
Emulate CSS user preferences in Storybook
Emulate CSS user preferences in Storybook
npm install @jeysal/storybook-addon-css-user-preferences
Last updated 11 months ago
2.8k
Downloads per week
Readme View on GitHub

Storybook Addon: CSS User Preferences

This toolbar addon allows you to emulate CSS user preferences in Storybook.

Getting started

First, install the addon.

$ yarn add storybook-addon-css-user-preferences --dev

Add this line to your main.js file (create this file inside your Storybook config directory if needed).

module.exports = {
  addons: ['storybook-addon-css-user-preferences'],
};

Configuration

By default, all CSS user preferences are set to the system default.

You can configure your own set of user preferences with the parameters.cssUserPrefs parameter:

// .storybook/preview.js

export const parameters = {
  cssUserPrefs: {
    "prefers-color-scheme": "light",
  },
};

Options

prefers-color-scheme

The prefers-color-scheme preference is used to detect if the user has requested a light or dark color theme.

@media (prefers-color-scheme: dark) {
  .button {
    background: #333;
    color:      #fff;
  }
}

@media (prefers-color-scheme: light) {
  .button {
    background: #fff;
    color:      #555;
  }
}

W3C Specification MDN Documentation

prefers-contrast

The prefers-contrast preference is used to detect if the user has requested that the web content is presented with a higher or lower contrast.

.outline {
  outline: 2px dashed black;
}

@media (prefers-contrast: more) {
  .outline {
    outline: 2px solid black;
  }
}

W3C Specification MDN Documentation

prefers-reduced-data

The prefers-reduced-data preference is used to detect if the user has requested the web content that consumes less internet traffic.

.hero {
  background-image: url("images/hero.webp");
}

@media (prefers-reduced-data: reduce) {
  .image {
    background-image: url("images/hero@reduced.webp");
  }
}

W3C Specification MDN Documentation

prefers-reduced-motion

The prefers-reduced-motion preference is used to detect if the user has requested that the system minimize the amount of non-essential motion it uses.

.button {
  animation: pulse 1s linear infinite both;
}

@media (prefers-reduced-motion) {
  .button {
    animation: none;
  }
}

W3C Specification MDN Documentation

prefers-reduced-transparency

The prefers-reduced-transparency preference is used to detect if the user has requested the system minimize the amount of transparent or translucent layer effects it uses.

.glass {
  opacity: 0.5; 
}

@media (prefers-reduced-transparency: reduce) {
  .glass {
    opacity: 1;
  }
}

W3C Specification

Join the community
6,586 developers and counting
WhyWhy StorybookComponent-driven UI
DocsGuidesTutorialsChangelogTelemetryStatus
CommunityAddonsGet involvedBlog
ShowcaseExploreProjectsComponent glossary
Open source software
Storybook

Maintained by
Chromatic
Special thanks to Netlify and CircleCI