π A powerful, lightweight core library to transform CSS styles or style objects into Tailwind CSS utility classes. Perfect for migration projects and dynamic style generation.
- π Bidirectional Conversion: Transform CSS styles to Tailwind CSS classes
- π― Smart Parsing: Handles complex CSS properties and vendor prefixes
- π± Responsive Support: Converts responsive CSS to Tailwind breakpoints
- π§© TypeScript First: Full TypeScript support with type definitions
- πͺΆ Lightweight: Zero dependencies, optimized for performance
- π Browser Compatible: Works in both Node.js and browser environments
- π Debug Mode: Built-in debugging for troubleshooting conversions
- π Tailwind v4 Mode: Optional canonical output for current Tailwind docs utility syntax
# npm
npm install transform-to-tailwindcss-core
# yarn
yarn add transform-to-tailwindcss-core
# pnpm
pnpm add transform-to-tailwindcss-coreimport { toTailwindcss, transformStyleToTailwindcss } from 'transform-to-tailwindcss-core'
// Basic usage
const [tailwindClasses, unconverted] = transformStyleToTailwindcss(
'color: red; font-size: 16px; margin: 10px'
)
console.log(tailwindClasses) // "text-[red] text-[16px] m-[10px]"
console.log(unconverted) // [] (empty if all styles converted)
// With rem units
const [classes, unconverted] = transformStyleToTailwindcss(
'padding: 8px; background-color: #3b82f6',
true // enable rem conversion
)
// With debug mode
const [classes, unconverted] = transformStyleToTailwindcss(
'display: flex; justify-content: center',
false, // rem conversion
true // debug mode - shows conversion process
)
// Tailwind v4 canonical output
console.log(toTailwindcss('aspect-ratio: 1 / 1;', false, true)) // "aspect-square"
console.log(toTailwindcss('width: 100%;', false, true)) // "w-full"
console.log(toTailwindcss('rotate: 45deg;', false, true)) // "rotate-45"Converts CSS styles to Tailwind CSS utility classes.
styles(string): CSS styles to convert (e.g., "color: red; font-size: 16px")isRem(boolean, optional): Whether to convert pixel values to rem unitsdebug(boolean, optional): Enable debug logging to see conversion processisV4(boolean, optional): Prefer Tailwind v4 canonical utility output for supported property pages
Returns a tuple [string, string[]]:
- First element: Converted Tailwind CSS classes as a string
- Second element: Array of unconverted CSS styles
Converts a single CSS declaration to a Tailwind utility string.
css(string): A single CSS declaration (e.g."aspect-ratio: 1 / 1;")isRem(boolean, optional): Whether to convert pixel values to rem unitsisV4(boolean, optional): Prefer Tailwind v4 canonical utility output for supported property pages
toTailwindcss('aspect-ratio: 1 / 1;') // "aspect-[1/1]"
toTailwindcss('aspect-ratio: 1 / 1;', false, true) // "aspect-square"
toTailwindcss('line-clamp: 3;', false, true) // "line-clamp-3"
toTailwindcss('color-scheme: light dark;', false, true) // "scheme-light-dark"isV4 is opt-in so existing integrations keep the current output by default.
When isV4 is true, the converter prefers current Tailwind documentation syntax for supported utilities, for example:
toTailwindcss('aspect-ratio: var(--aspect-video);', false, true) // "aspect-video"
toTailwindcss('inline-size: 100%;', false, true) // "inline-full"
toTailwindcss('block-size: 100vh;', false, true) // "block-screen"
toTailwindcss('font-stretch: condensed;', false, true) // "font-stretch-condensed"
toTailwindcss('text-shadow: none;', false, true) // "text-shadow-none"
toTailwindcss('translate: 100% 100%;', false, true) // "translate-full"This library supports a wide range of CSS properties including:
- Layout:
display,position,top,right,bottom,left - Flexbox:
flex,flex-direction,justify-content,align-items - Grid:
grid,grid-template-columns,grid-template-rows - Spacing:
margin,padding,gap - Sizing:
width,height,max-width,min-height - Typography:
font-size,font-weight,text-align,line-height - Colors:
color,background-color,border-color - Borders:
border,border-width,border-radius - Effects:
box-shadow,opacity,transform - And many more...
Tailwind v4 mode also covers current property-page syntax across the Tailwind docs categories such as Layout, Flexbox & Grid, Sizing, Typography, Backgrounds, Borders, Effects, Filters, Tables, Transitions & Animation, Transforms, Interactivity, SVG, and Accessibility.
Enable debug mode to see detailed conversion logs:
const [classes, unconverted] = transformStyleToTailwindcss(
'color: #ff0000; font-size: 18px; margin-top: 20px',
false,
true // debug mode
)
// Console output:
// π [DEBUG] Input styles: color: #ff0000; font-size: 18px; margin-top: 20px
// π [DEBUG] Processing style: color: #ff0000 -> key: color: #ff0000
// π [DEBUG] Converted to Tailwind: color: #ff0000 -> text-red-500
// π [DEBUG] Processing style: font-size: 18px -> key: font-size: 18px
// π [DEBUG] Converted to Tailwind: font-size: 18px -> text-lg
// ...const [classes, unconverted] = transformStyleToTailwindcss(
'color: red; custom-property: value; font-size: 16px'
)
console.log(classes) // "text-red-500 text-base"
console.log(unconverted) // ["custom-property: value"]
// You can combine them for fallback
const finalStyles = unconverted.length > 0
? `${classes} [&]:${unconverted.join('; ')}`
: classes- Legacy Code Migration: Convert existing CSS to Tailwind CSS
- Dynamic Styling: Generate Tailwind classes from user input
- Design Tools: Build CSS-to-Tailwind converters
- Component Libraries: Transform inline styles to utility classes
- Development Tools: Create IDE extensions or build plugins
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
If this project helped you, please consider:
