Skip to content

Generates a random but deterministic Tailwind CSS color and shade from a string

License

Notifications You must be signed in to change notification settings

jamieweavis/string-to-tailwind-color

Repository files navigation

String to Tailwind Color

Generates a random but deterministic Tailwind CSS color and shade from a string

ci downloads version license

Install

npm install string-to-tailwind-color

Usage

Generate a random but deterministic Tailwind CSS color and shade from a string:

import { stringToTailwindColor } from 'string-to-tailwind-color';

const foo = stringToTailwindColor('foo');
console.log(foo); // 'teal-500'

const bar = stringToTailwindColor('bar');
console.log(bar); // 'emerald-100'

By default all colors and shades are used - to use a subset of colors and/or shades, you can pass an options object as the second argument:

import { stringToTailwindColor } from 'string-to-tailwind-color';

const foo = stringToTailwindColor('foo', {
  colors: ['red', 'green', 'blue'],
  shades: [300, 500, 700],
});

console.log(foo); // 'red-300'

Note

For a full list of colors and shades see https://tailwindcss.com/docs/colors

If you don't like the color generated for a particular string, you can use the hashOffset option to rotate the color (incrememnting by 1 will give you a shade higher, decrementing by 1 will give you a shade lower, colors will also rotate):

import { stringToTailwindColor } from 'string-to-tailwind-color';

const a = stringToTailwindColor('foo');
console.log(a); // 'teal-500'

const b = stringToTailwindColor('foo', { hashOffset: 1 });
console.log(b); // 'teal-600'

const c = stringToTailwindColor('foo', { hashOffset: 11 });
console.log(c); // 'cyan-500'

Use in combination with background color (bg-), text color (text-), border color (border-), etc:

import { stringToTailwindColor } from 'string-to-tailwind-color';

const SomeComponent = ({ text }) => {
  const color = stringToTailwindColor(text);
  return (
    <p className={`bg-${color} text-${color} border-${color}`}>
      {text}
    </p>
  );
};

Note

For a full list of classes compatible with colors see https://tailwindcss.com/docs/colors#using-color-utilities

Use cases

Generate a color for a tag component based on it's contents:

import { stringToTailwindColor } from 'string-to-tailwind-color';

const Tag = ({ name }) => {
  const color = stringToTailwindColor(name, {
    colors: ['red', 'green', 'blue', 'yellow', 'purple', 'pink'],
    shades: [300, 400, 500, 600, 700],
  });
  return (
    <span className={`bg-${color} text-white px-2 py-1 rounded`}>
      {name}
    </span>
  );
};

Built with

License

This project is licensed under the MIT License - see the LICENSE file for details.