A lightweight utility-first CSS engine built with JavaScript.
ChaiTail lets you author utility classes directly in HTML and converts them into inline styles at runtime — no compiled CSS required.
Live Demo: https://chaitail.netlify.app
-
Massive Utility Expansion Added layout constraints, directional spacing (
px,py,mt,mx-auto), typography scales (text-xl,leading-loose,tracking-wide), and advanced appearance tokens (shadow-lg,opacity-80,transition-all). -
Advanced Flex & Grid Control Full flexbox mapping (
flex-wrap,flex-col,items-center) and grid support. -
Expanded Sizing Utilities Added
chai-h-,chai-w-,chai-gap-,chai-max-w-,chai-min-h-. -
Smart Color System Colors map through
teaColorsand support named colors + raw hex values.
-
Zero-Build Styling Write classes like
chai-p-20,chai-text-masala-chai— no CSS files needed. -
Dynamic Class Parsing
chai-p-100→padding: 100pxautomatically. -
Lightweight & Fast Efficient DOM scanning and instant style application.
-
Tea-Inspired Design System Custom warm color palette (masala-chai, green-tea, etc.)
-
Available as npm package https://www.npmjs.com/package/chaitail
-
No frameworks required Built using plain JavaScript.
npm install chaitailimport { initChai } from "chaitail";
initChai();<div class="chai-p-40 chai-bg-white chai-rounded-20 chai-shadow-lg chai-max-w-600 chai-mx-auto">
<h1 class="chai-text-4xl chai-text-masala-chai chai-font-bold chai-tracking-tight">
Hello ChaiTail!
</h1>
<p class="chai-text-md chai-text-dark-tea chai-leading-relaxed chai-mt-20">
This component was styled completely without CSS files or inline style tags.
</p>
</div>ChaiTail works best with modern bundlers like Vite.
npm create vite@latest
cd your-project
npm installnpm install chaitailimport { initChai } from "chaitail";
initChai();npm run dev- Scans the DOM for class names
- Detects classes starting with
chai- - Matches static utilities from
ChaiCSS.js - Parses dynamic utilities (
px-,bg-,max-w-, etc.) - Converts them into inline styles
- Applies styles and removes
chai-*classes
chai-flex,chai-flex-col,chai-items-center,chai-justify-centerchai-mx-auto→margin: 0 autochai-w-full,chai-h-full,chai-max-w-1200,chai-min-w-300chai-z-10,chai-relative,chai-overflow-hidden
chai-pt-20,chai-pb-20,chai-px-40,chai-py-40chai-mt-20,chai-gap-20chai-p-[val],chai-m-[val]
chai-text-xs→chai-text-6xlchai-font-bold,chai-font-lightchai-text-center,chai-text-rightchai-tracking-tight,chai-tracking-widechai-leading-tight,chai-leading-relaxedchai-uppercase,chai-no-underline
chai-bg-red,chai-bg-#ff0000,chai-bg-masala-chaichai-text-white,chai-text-#fffchai-opacity-60,chai-opacity-80chai-shadow-md,chai-shadow-lg,chai-shadow-xlchai-border-light,chai-border-dashed,chai-border-nonechai-rounded-[val],chai-rounded-full
chai-transition-allchai-translate-y-[val],chai-translate-x-[val]chai-cursor-pointer
chaitail/
├── src/
│ ├── index.js
│ ├── applyClass.js
│ ├── ChaiCSS.js
│ └── teaColors.js
└── package.json
- Requires modern browsers (ES Modules support)
- Best experience with Vite or similar bundlers
- Plain HTML usage requires relative imports
Vishal Patil
If you like this project, give it a ⭐ on GitHub!