{"_id":"@chakrabortyrajarshi2005/chai-tailwind-css","_rev":"2-f902ab857e0bf2a5b83a97511daf11b5","name":"@chakrabortyrajarshi2005/chai-tailwind-css","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@chakrabortyrajarshi2005/chai-tailwind-css","version":"1.0.0","keywords":["css","utility","tailwind","classnames","styling"],"author":{"name":"Rajarshi Chakraborty"},"license":"MIT","_id":"@chakrabortyrajarshi2005/chai-tailwind-css@1.0.0","maintainers":[{"name":"chakrabortyrajarshi2005","email":"rajarshi29032005@gmail.com"}],"homepage":"https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS#readme","bugs":{"url":"https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS/issues"},"dist":{"shasum":"38ef51d4b16c9346f43ce24620c75b21a01cf590","tarball":"https://registry.npmjs.org/@chakrabortyrajarshi2005/chai-tailwind-css/-/chai-tailwind-css-1.0.0.tgz","fileCount":7,"integrity":"sha512-bwc+jBdy+s8/VTyLcWA1Hm+yoCI4cHxKUGubFHb7I5SVaht45dhIqx158Xd5+435YLKlhzhn4aC6D0X3uwvkyQ==","signatures":[{"sig":"MEYCIQDLGPli9K58qQJkJpYKHCpdbmLtlftOTtswzlDuMi/BtQIhAPnXl53QfESw4o2ZiKDjfIny1VdPehulm7lmL8MZ+pni","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49681},"type":"module","gitHead":"4b942020bd8710a32a12a636ae0b677e3c05212a","scripts":{"dev":"vite","build":"rollup -c","preview":"vite preview"},"_npmUser":{"name":"chakrabortyrajarshi2005","email":"rajarshi29032005@gmail.com"},"repository":{"url":"git+https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS.git","type":"git"},"_npmVersion":"10.9.3","description":"A lightweight utility-class CSS engine. Write chai- classes, get real CSS.","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.1","rollup":"^4.60.0"},"_npmOperationalInternal":{"tmp":"tmp/chai-tailwind-css_1.0.0_1774172501089_0.5238813326660481","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chakrabortyrajarshi2005/chai-tailwind-css","version":"1.0.1","description":"A lightweight utility-class CSS engine. Write chai- classes, get real CSS.","type":"module","keywords":["css","utility","tailwind","classnames","styling"],"author":{"name":"Rajarshi Chakraborty"},"scripts":{"dev":"vite","preview":"vite preview","build":"rollup -c"},"devDependencies":{"rollup":"^4.60.0","vite":"^8.0.1"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS.git"},"_id":"@chakrabortyrajarshi2005/chai-tailwind-css@1.0.1","gitHead":"042fa4a5c038b98c8eea7a9d0ee0707b6f625686","bugs":{"url":"https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS/issues"},"homepage":"https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS#readme","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-/iMuXxIV8jRZbui8AD9ByKE/XcQf60iTVgc13l9Xzon1Z+LYE5v4M8eyepWrj46C6YvOdBgx+K8ob3y0PF6k3w==","shasum":"7ace7810f7294b9e429c27247da88788967d1c03","tarball":"https://registry.npmjs.org/@chakrabortyrajarshi2005/chai-tailwind-css/-/chai-tailwind-css-1.0.1.tgz","fileCount":11,"unpackedSize":201847,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCZF7iocV7wqdDxGAzIaftQrwbQMtn2o6zzPXIaN4PDWgIgRff2Q6zLWpN4Lxx3WmELpZwtuPMkvOVvoJ7FKgv9hTw="}]},"_npmUser":{"name":"chakrabortyrajarshi2005","email":"rajarshi29032005@gmail.com"},"directories":{},"maintainers":[{"name":"chakrabortyrajarshi2005","email":"rajarshi29032005@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chai-tailwind-css_1.0.1_1774173736050_0.4456948701697041"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-22T09:41:40.964Z","modified":"2026-03-22T10:02:16.323Z","1.0.0":"2026-03-22T09:41:41.243Z","1.0.1":"2026-03-22T10:02:16.218Z"},"bugs":{"url":"https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS/issues"},"author":{"name":"Rajarshi Chakraborty"},"license":"MIT","homepage":"https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS#readme","keywords":["css","utility","tailwind","classnames","styling"],"repository":{"type":"git","url":"git+https://github.com/chakrabortyrajarshi2005/Mini-TailwindCSS.git"},"description":"A lightweight utility-class CSS engine. Write chai- classes, get real CSS.","maintainers":[{"name":"chakrabortyrajarshi2005","email":"rajarshi29032005@gmail.com"}],"readme":"# ☕ chai-css\r\n\r\n> A lightweight, zero-dependency, custom Tailwind-like CSS engine you build yourself.\r\n> Write `chai-` classes in your HTML — get real CSS applied at runtime.\r\n\r\n```html\r\n<div class=\"chai-bg-slate-950 chai-px-24 chai-py-16 chai-rounded-12 chai-text-indigo-400\">\r\n  Hello from chai ☕\r\n</div>\r\n```\r\n\r\n---\r\n\r\n## What is chai-css?\r\n\r\nchai-css is a **DIY utility-class CSS engine** inspired by Tailwind CSS. Instead of a build step or a CDN stylesheet, chai works by:\r\n\r\n1. **Scanning** the DOM for any element with a `chai-` class\r\n2. **Parsing** the class name into a `{ property, value }` pair\r\n3. **Applying** the CSS directly to the element as an inline style\r\n\r\nNo compiler. No config file. No stylesheet to ship. Just your JavaScript engine + your HTML.\r\n\r\n---\r\n\r\n## Project Structure\r\n\r\n```\r\nyour-project/\r\n├── index.html\r\n├── src/\r\n│   └── main.js              ← entry point (run chai here)\r\n└── config/\r\n    └── propertyMap.js       ← all shorthand keys + color palette\r\n```\r\n\r\nThe engine itself lives in four files:\r\n\r\n```\r\nsrc/\r\n├── main.js        ← entry point: connects everything\r\n├── scanner.js     ← finds all chai- elements in the DOM\r\n├── parser.js      ← breaks \"chai-bg-red-500\" into { property, value }\r\n└── apply.js       ← sets the actual CSS on the element\r\n```\r\n\r\n---\r\n\r\n## How It Works\r\n\r\n### 1. `scanner.js` — Find\r\n\r\nWalks every element in the DOM and collects any class starting with `chai-`.\r\n\r\n```js\r\n// Returns: [{ element: <div>, className: \"chai-bg-red-500\" }, ...]\r\nscan()\r\n```\r\n\r\n### 2. `parser.js` — Parse\r\n\r\nSplits the class name into a property key and a value.\r\n\r\n```\r\n\"chai-bg-red-500\"    →  { property: \"bg\",       value: \"red-500\" }\r\n\"chai-px-16\"         →  { property: \"px\",        value: \"16\"      }\r\n\"chai-rounded-8\"     →  { property: \"rounded\",   value: \"8\"       }\r\n\"chai-gridCols-3\"    →  { property: \"gridCols\",  value: \"3\"       }\r\n```\r\n\r\nThe parser tries each possible split point left-to-right and picks the first one where the property key exists in `propertyMap`. This correctly handles color names like `red-500` that contain a dash.\r\n\r\n### 3. `apply.js` — Apply\r\n\r\nLooks up the CSS property in `propertyMap`, resolves the value, and sets it.\r\n\r\n```\r\n\"bg\"   → \"backgroundColor\"           → element.style.backgroundColor = \"#ef4444\"\r\n\"px\"   → [\"paddingLeft\",\"paddingRight\"] → sets both at once\r\n\"text\" → \"color\"                      → element.style.color = \"#3b82f6\"\r\n```\r\n\r\n**Value resolution order:**\r\n1. Color name? (`red-500`) → look up hex in `categoryGroups.colors`\r\n2. Already has a unit? (`2rem`, `50%`) → use as-is\r\n3. Keyword? (`auto`, `flex`, `none`) → use as-is\r\n4. Plain number? (`16`, `8`) → append `px` automatically\r\n5. Anything else → use as-is (hex codes, CSS vars, etc.)\r\n\r\n### 4. `main.js` — Run\r\n\r\n```js\r\nimport { scan }       from \"./scanner.js\";\r\nimport { parse }      from \"./parser.js\";\r\nimport { applyStyle } from \"./apply.js\";\r\n\r\nfunction run() {\r\n  scan().forEach(item => applyStyle(item.element, parse(item.className)));\r\n}\r\n\r\ndocument.readyState === \"loading\"\r\n  ? document.addEventListener(\"DOMContentLoaded\", run)\r\n  : run();\r\n```\r\n\r\n---\r\n\r\n## Class Syntax\r\n\r\n```\r\nchai-{property}-{value}\r\n```\r\n\r\n| Part | Example | What it is |\r\n|---|---|---|\r\n| `chai-` | always | required prefix |\r\n| `{property}` | `bg`, `px`, `rounded` | key from `propertyMap` |\r\n| `{value}` | `red-500`, `16`, `auto` | color name, number, or keyword |\r\n\r\n---\r\n\r\n## Property Reference\r\n\r\n### Spacing\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-p-{n}` | `padding` |\r\n| `chai-px-{n}` | `paddingLeft` + `paddingRight` |\r\n| `chai-py-{n}` | `paddingTop` + `paddingBottom` |\r\n| `chai-pt-{n}` | `paddingTop` |\r\n| `chai-pb-{n}` | `paddingBottom` |\r\n| `chai-pl-{n}` | `paddingLeft` |\r\n| `chai-pr-{n}` | `paddingRight` |\r\n| `chai-m-{n}` | `margin` |\r\n| `chai-mx-{n}` | `marginLeft` + `marginRight` |\r\n| `chai-my-{n}` | `marginTop` + `marginBottom` |\r\n| `chai-mt-{n}` | `marginTop` |\r\n| `chai-mb-{n}` | `marginBottom` |\r\n| `chai-ml-{n}` | `marginLeft` |\r\n| `chai-mr-{n}` | `marginRight` |\r\n| `chai-gap-{n}` | `gap` |\r\n| `chai-gapX-{n}` | `columnGap` |\r\n| `chai-gapY-{n}` | `rowGap` |\r\n\r\n### Sizing\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-w-{n}` | `width` |\r\n| `chai-h-{n}` | `height` |\r\n| `chai-size-{n}` | `width` + `height` |\r\n| `chai-minW-{n}` | `minWidth` |\r\n| `chai-maxW-{n}` | `maxWidth` |\r\n| `chai-minH-{n}` | `minHeight` |\r\n| `chai-maxH-{n}` | `maxHeight` |\r\n\r\n### Colors\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-bg-{color}` | `backgroundColor` |\r\n| `chai-text-{color}` | `color` |\r\n| `chai-fill-{color}` | `fill` |\r\n| `chai-stroke-{color}` | `stroke` |\r\n| `chai-borderColor-{color}` | `borderColor` |\r\n| `chai-outlineColor-{color}` | `outlineColor` |\r\n| `chai-accentColor-{color}` | `accentColor` |\r\n| `chai-caretColor-{color}` | `caretColor` |\r\n\r\n### Typography\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-fontSize-{n}` | `fontSize` |\r\n| `chai-fontWeight-{n}` | `fontWeight` |\r\n| `chai-fontStyle-{v}` | `fontStyle` |\r\n| `chai-lineHeight-{n}` | `lineHeight` |\r\n| `chai-letterSpacing-{n}` | `letterSpacing` |\r\n| `chai-textAlign-{v}` | `textAlign` |\r\n| `chai-textTransform-{v}` | `textTransform` |\r\n| `chai-textDecor-{v}` | `textDecoration` |\r\n| `chai-textOverflow-{v}` | `textOverflow` |\r\n| `chai-whiteSpace-{v}` | `whiteSpace` |\r\n| `chai-lineClamp-{n}` | `-webkit-line-clamp` |\r\n| `chai-wordBreak-{v}` | `wordBreak` |\r\n\r\n### Borders & Radius\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-border-{v}` | `border` |\r\n| `chai-borderW-{n}` | `borderWidth` |\r\n| `chai-borderStyle-{v}` | `borderStyle` |\r\n| `chai-borderColor-{color}` | `borderColor` |\r\n| `chai-rounded-{n}` | `borderRadius` |\r\n| `chai-roundedT-{n}` | top-left + top-right radius |\r\n| `chai-roundedB-{n}` | bottom-left + bottom-right radius |\r\n| `chai-roundedTL-{n}` | `borderTopLeftRadius` |\r\n| `chai-roundedTR-{n}` | `borderTopRightRadius` |\r\n| `chai-roundedBL-{n}` | `borderBottomLeftRadius` |\r\n| `chai-roundedBR-{n}` | `borderBottomRightRadius` |\r\n\r\n### Layout & Display\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-d-{v}` | `display` |\r\n| `chai-pos-{v}` | `position` |\r\n| `chai-overflow-{v}` | `overflow` |\r\n| `chai-overflowX-{v}` | `overflowX` |\r\n| `chai-overflowY-{v}` | `overflowY` |\r\n| `chai-z-{n}` | `zIndex` |\r\n| `chai-opacity-{n}` | `opacity` |\r\n| `chai-visibility-{v}` | `visibility` |\r\n| `chai-cursor-{v}` | `cursor` |\r\n| `chai-objectFit-{v}` | `objectFit` |\r\n\r\n### Flexbox\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-flex-{v}` | `flex` |\r\n| `chai-flexDir-{v}` | `flexDirection` |\r\n| `chai-flexWrap-{v}` | `flexWrap` |\r\n| `chai-flexGrow-{n}` | `flexGrow` |\r\n| `chai-flexShrink-{n}` | `flexShrink` |\r\n| `chai-flexBasis-{n}` | `flexBasis` |\r\n| `chai-alignItems-{v}` | `alignItems` |\r\n| `chai-alignSelf-{v}` | `alignSelf` |\r\n| `chai-alignContent-{v}` | `alignContent` |\r\n| `chai-justifyContent-{v}` | `justifyContent` |\r\n| `chai-justifyItems-{v}` | `justifyItems` |\r\n| `chai-justifySelf-{v}` | `justifySelf` |\r\n| `chai-placeItems-{v}` | `placeItems` |\r\n| `chai-order-{n}` | `order` |\r\n\r\n### Grid\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-gridCols-{v}` | `gridTemplateColumns` |\r\n| `chai-gridRows-{v}` | `gridTemplateRows` |\r\n| `chai-gridArea-{v}` | `gridArea` |\r\n| `chai-gridAutoFlow-{v}` | `gridAutoFlow` |\r\n| `chai-colStart-{n}` | `gridColumnStart` |\r\n| `chai-colEnd-{n}` | `gridColumnEnd` |\r\n| `chai-rowStart-{n}` | `gridRowStart` |\r\n| `chai-rowEnd-{n}` | `gridRowEnd` |\r\n\r\n### Position\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-top-{n}` | `top` |\r\n| `chai-bottom-{n}` | `bottom` |\r\n| `chai-left-{n}` | `left` |\r\n| `chai-right-{n}` | `right` |\r\n| `chai-inset-{n}` | `inset` |\r\n| `chai-insetX-{n}` | `left` + `right` |\r\n| `chai-insetY-{n}` | `top` + `bottom` |\r\n| `chai-z-{n}` | `zIndex` |\r\n\r\n### Transforms & Transitions\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-transform-{v}` | `transform` |\r\n| `chai-rotate-{v}` | `rotate` |\r\n| `chai-scale-{v}` | `scale` |\r\n| `chai-translate-{v}` | `translate` |\r\n| `chai-transition-{v}` | `transition` |\r\n| `chai-duration-{n}` | `transitionDuration` |\r\n| `chai-delay-{n}` | `transitionDelay` |\r\n| `chai-ease-{v}` | `transitionTimingFunction` |\r\n\r\n### Shadow & Filter\r\n\r\n| Class | CSS Property |\r\n|---|---|\r\n| `chai-shadow-{v}` | `boxShadow` |\r\n| `chai-filter-{v}` | `filter` |\r\n| `chai-backdropFilter-{v}` | `backdropFilter` |\r\n| `chai-blur-{v}` | `filter` |\r\n| `chai-opacity-{n}` | `opacity` |\r\n\r\n---\r\n\r\n## Color Palette\r\n\r\nchai includes the full Tailwind color palette with shades from `50` to `950`.\r\n\r\n**Available color families:**\r\n`slate` · `gray` · `zinc` · `neutral` · `stone` · `red` · `orange` · `amber` · `yellow` · `lime` · `green` · `emerald` · `teal` · `cyan` · `sky` · `blue` · `indigo` · `violet` · `purple` · `fuchsia` · `pink` · `rose`\r\n\r\n**Usage:**\r\n```html\r\nchai-bg-{color}-{shade}\r\nchai-text-{color}-{shade}\r\nchai-borderColor-{color}-{shade}\r\n```\r\n\r\n**Examples:**\r\n```html\r\n<div class=\"chai-bg-blue-500\">   <!-- backgroundColor: #3b82f6 -->\r\n<p  class=\"chai-text-rose-400\">  <!-- color: #fb7185 -->\r\n<hr class=\"chai-bg-slate-200\">   <!-- backgroundColor: #e2e8f0 -->\r\n```\r\n\r\n**Special values:** `black`, `white`, `transparent`, `current`\r\n\r\n---\r\n\r\n## Value Rules\r\n\r\n| Value type | Example | What chai does |\r\n|---|---|---|\r\n| Plain number | `16`, `8`, `24` | Appends `px` → `16px` |\r\n| Number with unit | `1.5rem`, `50%`, `100vh` | Used as-is |\r\n| Color name | `red-500`, `indigo-400` | Resolved to hex → `#ef4444` |\r\n| Keyword | `auto`, `flex`, `none`, `center` | Used as-is |\r\n| Raw hex | `#ff0000` | Used as-is |\r\n\r\n---\r\n\r\n## Examples\r\n\r\n### Card component\r\n```html\r\n<div class=\"\r\n  chai-bg-slate-800\r\n  chai-px-24 chai-py-20\r\n  chai-rounded-16\r\n  chai-shadow-lg\r\n\">\r\n  <h2 class=\"chai-text-white chai-fontSize-20 chai-fontWeight-700 chai-mb-8\">\r\n    Title\r\n  </h2>\r\n  <p class=\"chai-text-slate-400 chai-fontSize-14 chai-lineHeight-1.6\">\r\n    Some description text here.\r\n  </p>\r\n</div>\r\n```\r\n\r\n### Flex row\r\n```html\r\n<div class=\"chai-d-flex chai-alignItems-center chai-justifyContent-between chai-gap-16\">\r\n  <span class=\"chai-text-slate-300 chai-fontSize-14\">Label</span>\r\n  <button class=\"chai-bg-indigo-600 chai-text-white chai-px-16 chai-py-8 chai-rounded-8\">\r\n    Action\r\n  </button>\r\n</div>\r\n```\r\n\r\n### Responsive-ish sizing\r\n```html\r\n<img\r\n  class=\"chai-w-100 chai-h-200 chai-objectFit-cover chai-rounded-12\"\r\n  src=\"photo.jpg\"\r\n  alt=\"Photo\"\r\n/>\r\n```\r\n\r\n### Dark badge\r\n```html\r\n<span class=\"\r\n  chai-bg-indigo-950\r\n  chai-text-indigo-300\r\n  chai-fontSize-11\r\n  chai-px-10 chai-py-4\r\n  chai-rounded-100\r\n  chai-letterSpacing-0.08em\r\n  chai-textTransform-uppercase\r\n\">\r\n  New\r\n</span>\r\n```\r\n\r\n---\r\n\r\n## Setup with Vite\r\n\r\n```html\r\n<!-- index.html -->\r\n<body>\r\n  <div class=\"chai-bg-slate-950 chai-px-32 chai-py-24\">\r\n    <h1 class=\"chai-text-white chai-fontSize-32 chai-fontWeight-800\">\r\n      Hello chai ☕\r\n    </h1>\r\n  </div>\r\n  <script type=\"module\" src=\"./src/main.js\"></script>\r\n</body>\r\n```\r\n\r\n```js\r\n// src/main.js\r\nimport { scan }       from \"./scanner.js\";\r\nimport { parse }      from \"./parser.js\";\r\nimport { applyStyle } from \"./apply.js\";\r\n\r\nfunction run() {\r\n  scan().forEach(item => applyStyle(item.element, parse(item.className)));\r\n}\r\n\r\ndocument.readyState === \"loading\"\r\n  ? document.addEventListener(\"DOMContentLoaded\", run)\r\n  : run();\r\n```\r\n\r\nThen run:\r\n```bash\r\nnpm create vite@latest my-app -- --template vanilla\r\ncd my-app\r\nnpm install\r\nnpm run dev\r\n```\r\n\r\n---\r\n\r\n## Extending chai\r\n\r\n### Add a new property shorthand\r\n\r\nOpen `config/propertyMap.js` and add your key:\r\n\r\n```js\r\nexport const propertyMap = {\r\n  // ...existing properties...\r\n\r\n  // your new ones:\r\n  trackColor: \"scrollbarColor\",\r\n  txtSize:    \"fontSize\",\r\n  bd:         [\"borderLeft\", \"borderRight\", \"borderTop\", \"borderBottom\"],\r\n};\r\n```\r\n\r\nNow `chai-trackColor-slate-500` and `chai-txtSize-18` work immediately.\r\n\r\n### Add a custom color\r\n\r\nOpen `config/propertyMap.js` and add to `categoryGroups.colors`:\r\n\r\n```js\r\nexport const categoryGroups = {\r\n  // ...\r\n  colors: {\r\n    // ...existing colors...\r\n    \"brand\":      \"#your-hex\",\r\n    \"brand-light\":\"#your-light-hex\",\r\n    \"brand-dark\": \"#your-dark-hex\",\r\n  }\r\n};\r\n```\r\n\r\nNow `chai-bg-brand` and `chai-text-brand-light` work.\r\n\r\n---\r\n\r\n## Limitations\r\n\r\nSince chai applies **inline styles**, it cannot handle:\r\n\r\n- **Pseudo-classes** like `:hover`, `:focus`, `:nth-child` — use a `<style>` block for these\r\n- **Media queries** — add responsive logic manually in JS if needed\r\n- **CSS variables** — you can pass them as values (`chai-color-var(--my-color)`) but they must already be defined\r\n- **Complex values with spaces** — e.g. `chai-shadow-0 2px 8px black` won't parse — define these in a `<style>` block\r\n\r\n---\r\n\r\n## File Overview\r\n\r\n| File | Purpose |\r\n|---|---|\r\n| `config/propertyMap.js` | All shorthand keys → CSS properties + color palette |\r\n| `src/scanner.js` | Finds all `chai-` elements in the DOM |\r\n| `src/parser.js` | Parses `\"chai-bg-red-500\"` into `{ property, value }` |\r\n| `src/apply.js` | Resolves values and sets `element.style` |\r\n| `src/main.js` | Runs the engine on page load |\r\n| `index.html` | Your HTML — use `chai-` classes here |\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT — build whatever you want with it. ☕","readmeFilename":"README.md"}